Zaliczenie Kacper Braczyk PSS

Program silnika krokowego
 avatar
unknown
c_cpp
a year ago
3.5 kB
9
Indexable
int kroki;
//int kroki_zadane=7;
int odebrane_kroki;
long int opoznienie =50;
#define IN1 23
#define IN2 22
#define IN3 18
#define IN4 5


bool prawo =false;
bool lewo =false;

void setup() {

  pinMode(33, INPUT_PULLUP);
  pinMode(32, INPUT_PULLUP);

  pinMode(23, OUTPUT);
  pinMode(22, OUTPUT);
  pinMode(18, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);

  
  Serial.begin(9600);

}

void loop() {
 
//prawo= digitalRead(33); Dla zadawania kierunku z przycisku
//lewo= digitalRead(32);

Serial.println(" Poda liczbe krokow (dodatnie w prawo, ujemne w lewo): ");

odebrane_kroki= Serial.parseInt();
if(odebrane_kroki > 0){
  prawo=true;
  lewo=false;
}
if(odebrane_kroki < 0){
  prawo=false;
  lewo=true;
}
else{
  Serial.println(" Nie podawaj zera ");
}
odebrane_kroki=abs(odebrane_kroki);

if(prawo == true && lewo == false){
  kroki=1;
  digitalWrite(LED_BUILTIN, HIGH);
  do{
for (int licznik=1; licznik <=4; licznik++){
  switch (licznik) {
      case 1:  
        digitalWrite(IN1, HIGH);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, LOW);
        delayMicroseconds(opoznienie);
        Serial.println("poszedł case 1");
        
      break;
      case 2:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, HIGH);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, LOW);
        Serial.println("poszedł case 2");
        delay(opoznienie);
        
      break;
      case 3:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, HIGH);
        digitalWrite(IN4, LOW);
        Serial.println("poszedł case 3");
        delay(opoznienie);
        
      break;
      case 4:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, HIGH);
        Serial.println("poszedł case 4");
        delay(opoznienie);
        
      break;
    }}
    kroki++;
    Serial.println(kroki);
    
  }
    while(kroki<=odebrane_kroki);
  
}

if(prawo == false && lewo == true){
   kroki=1;
  digitalWrite(LED_BUILTIN, HIGH);
  do{
for (int licznik=1; licznik <=4; licznik++){
  switch (licznik) {
      case 1:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, HIGH);
        delayMicroseconds(opoznienie);
        Serial.println("poszedł case 1");
        
      break;
      case 2:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, HIGH);
        digitalWrite(IN4, LOW);
        Serial.println("poszedł case 2");
        delay(opoznienie);
        
      break;
      case 3:  
        digitalWrite(IN1, LOW);
        digitalWrite(IN3, HIGH);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, LOW);
        Serial.println("poszedł case 3");
        delay(opoznienie);
        
      break;
      case 4:  
        digitalWrite(IN1, HIGH);
        digitalWrite(IN3, LOW);
        digitalWrite(IN2, LOW);
        digitalWrite(IN4, LOW);
        Serial.println("poszedł case 4");
        delay(opoznienie);
        
      break;
    }}
    kroki++;
    Serial.println(kroki);
    
  }
    while(kroki<=odebrane_kroki);
  
}
 else{
  digitalWrite(LED_BUILTIN, LOW);
}
prawo=false;
lewo=false;
}
Editor is loading...
Leave a Comment