//podlaczenie silnika int IN1 = 2; int IN2 = 3; int IN3 = 4; int IN4 = 5; int led = 13; bool halt = 0; //awaryjny stop | true == stop <-- NIE 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 opoz){ //ile ilośc pełnych obrotów for(int b = 0; b < obroty; b++){ if(halt==1) halt=0; break; //pełen obrót for(int a = 0; a < 512; a++){ if(halt==1) halt=0; break; //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); }