Facebook
From hui, 6 Years ago, written in Plain Text.
This paste is a reply to Untitled from Wet Bongo - view diff
Embed
Download Paste or View Raw
Hits: 296
  1. //podlaczenie silnika
  2. int IN1 = 2;
  3. int IN2 = 3;
  4. int IN3 = 4;
  5. int IN4 = 5;
  6. int led = 13;
  7. bool halt = 0; //awaryjny stop | true == stop <-- NIE
  8.  
  9. volatile char halt;
  10.  
  11. ISR_instrukcja_przerwania_zewnetrznego //nie wiem jak to na bieduino wyglada
  12. {
  13. halt =1;
  14. }
  15.  
  16. unsigned long czas;
  17.  
  18. //wykonaj  kroki
  19. void krok(int i){
  20. //poszczególne kroki
  21. switch(i){
  22.    case 0:
  23.      digitalWrite(IN1, LOW);
  24.      digitalWrite(IN2, LOW);
  25.      digitalWrite(IN3, LOW);
  26.      digitalWrite(IN4, HIGH);
  27.    break;
  28.    case 1:
  29.      digitalWrite(IN1, LOW);
  30.      digitalWrite(IN2, LOW);
  31.      digitalWrite(IN3, HIGH);
  32.      digitalWrite(IN4, HIGH);
  33.    break;
  34.    case 2:
  35.      digitalWrite(IN1, LOW);
  36.      digitalWrite(IN2, LOW);
  37.      digitalWrite(IN3, HIGH);
  38.      digitalWrite(IN4, LOW);
  39.    break;
  40.    case 3:
  41.      digitalWrite(IN1, LOW);
  42.      digitalWrite(IN2, HIGH);
  43.      digitalWrite(IN3, HIGH);
  44.      digitalWrite(IN4, LOW);
  45.    break;
  46.    case 4:
  47.      digitalWrite(IN1, LOW);
  48.      digitalWrite(IN2, HIGH);
  49.      digitalWrite(IN3, LOW);
  50.      digitalWrite(IN4, LOW);
  51.    break;
  52.    case 5:
  53.      digitalWrite(IN1, HIGH);
  54.      digitalWrite(IN2, HIGH);
  55.      digitalWrite(IN3, LOW);
  56.      digitalWrite(IN4, LOW);
  57.    break;
  58.      case 6:
  59.      digitalWrite(IN1, HIGH);
  60.      digitalWrite(IN2, LOW);
  61.      digitalWrite(IN3, LOW);
  62.      digitalWrite(IN4, LOW);
  63.    break;
  64.    case 7:
  65.      digitalWrite(IN1, HIGH);
  66.      digitalWrite(IN2, LOW);
  67.      digitalWrite(IN3, LOW);
  68.      digitalWrite(IN4, HIGH);
  69.    break;
  70.    default:
  71.      digitalWrite(IN1, LOW);
  72.      digitalWrite(IN2, LOW);
  73.      digitalWrite(IN3, LOW);
  74.      digitalWrite(IN4, LOW);
  75.    break;
  76. }
  77. }
  78. //funkcja wykonująca pełne obroty, obroty = ilosc, kierunek: 0 = lewo | 1 = prawo, opoz = predkosc(czas pomiedzy krokami)
  79. void obrot(int obroty, int kierunek, int opoz){
  80.  
  81.  
  82. //ile ilośc pełnych obrotów
  83.   for(int b = 0; b < obroty; b++){
  84.    if(halt==1) halt=0; break;
  85.  
  86. //pełen obrót  
  87.     for(int a = 0; a < 512; a++){
  88.     if(halt==1) halt=0; break;
  89.           //obracaj w lewo
  90.            if(kierunek == 0){
  91.             for(int l = 0; l < 8; l++){
  92.               krok(l);
  93.               delay(opoz);
  94.               }
  95.             }
  96.           }
  97.        
  98.         //obracaj w prawo
  99.           if(kierunek == 1){
  100.             for(int p = 7; p > -1; p--){
  101.              if(halt==1) halt=0; break;
  102.               krok(p);
  103.               delay(opoz);
  104.               }
  105.            }
  106.      
  107.     }
  108.   }
  109. }
  110. //wyłaczanie wszystkich cewek po zakończeniu pracy funkcji
  111. digitalWrite(IN1, LOW);
  112. digitalWrite(IN2, LOW);
  113. digitalWrite(IN3, LOW);
  114. digitalWrite(IN4, LOW);
  115. }
  116. void setup() {
  117. pinMode(IN1, OUTPUT);
  118. pinMode(IN2, OUTPUT);
  119. pinMode(IN3, OUTPUT);
  120. pinMode(IN4, OUTPUT);
  121. pinMode(led, OUTPUT);
  122. }
  123.  
  124. void loop() {
  125. obrot(2,0,1);
  126. }
  127.