int IN1 = 2;
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;
int led = 13;
bool halt = 0; //awaryjny stop | true ==
volatile char halt;
ISR_instrukcja_przerwania_zewnetrznego //nie wiem jak to na bieduino wyglada
{
halt =1;
}
unsigned long czas;
//wykonaj kroki
void krok(int i){
//poszczególne kroki
switch(i){
case 0:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
case 1:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, HIGH);
break;
case 2:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 3:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
break;
case 4:
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 5:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 6:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
case 7:
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
break;
default:
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
break;
}
}
//funkcja wykonująca pełne obroty, obroty = ilosc, kierunek: 0 = lewo | 1 = prawo, opoz = predkosc(czas pomiedzy krokami)
void obrot(int obroty, int kierunek, int
if(halt == 0){
//ile ilośc pełnych obrotów
for(int b = 0; b < obroty;
if(halt==1) halt=0; break;
//pełen obrót
for(int a = 0; a < 512; a++){
//obracaj w lewo
if(kierunek == 0){
for(int l = 0; l < 8; l++){
krok(l);
delay(opoz);
}
}
}
//obracaj w prawo
if(kierunek == 1){
for(int p = 7; p > -1; p--){
if(halt==1) halt=0; break;
krok(p);
delay(opoz);
}
}
}
}
//wyłaczanie wszystkich cewek po zakończeniu pracy funkcji
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(led, OUTPUT);
}
void loop() {
obrot(2,0,1);
}