Facebook
From hui, 6 Years ago, written in Plain Text.
This paste is a reply to Untitled from Wet Bongo - go back
Embed
Viewing differences between Untitled and Re: Untitled
//podlaczenie silnika
int IN1 = 2;
int IN2 = 3;
int IN3 = 4;
int IN4 = 5;
int led = 13;
bool halt = 0; //awaryjny stop | true == stop
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){

if(halt == 0){
opoz){


//ile ilośc pełnych obrotów
  for(int b = 0; b < obroty; b++){

b++){
   if(halt==1) halt=0; break;

//pełen obrót  
    for(int a = 0; a < 512; a++){
          //awaryjny stop\n          if(halt == 0){\n    if(halt==1) halt=0; break;
          //obracaj w lewo
           if(kierunek == 0){
            for(int l = 0; l < 8; l++){
              krok(l);
              delay(opoz);
              }
            }
          }
        //awaryjny stop \n        if(halt == 0){\n        
        //obracaj w prawo
          if(kierunek == 1){ 
            for(int p = 7; p > -1; p--){
             if(halt==1) halt=0; break;
              krok(p);
              delay(opoz);
              }
            }\n                     }
      
    }
  }
}
//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);
}