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