User Tools

Site Tools


openhw:arduino:έλεγχος_σερβοκινητήρα_με_απλό_διακόπτη

This is an old revision of the document!


Ελεγχος σερβοκινητήρα με απλό διακόπτη

Ελεγχος ενός σερβοκινητήρα με εναν απλό διακόπτη. Οταν πατηθεί ο διακόπτης ενεργοποιείται ο σερβοκινητηρας και κανει περιστροφη 180.

#include <Servo.h>

Servo myServo;


int angle=0;
int switchState = 0;
int servostate = 0 ;    // toggled by keypressed events
int getinput = 0 ;
int keyevent = 0 ;  // this var toggles to 1 to signify that a low-high-low switch event occured
                            // in the microcontroller's enviroment . After it affects the servorstate
                            // (it's consumed) and thus returns to 0.
int lowhigh = 0 ; 
int highlow = 0 ;
int i = 0 ; 
int loopcycle=0;

void setup() {

pinMode(12,INPUT);
myServo.attach(9);
Serial.begin(9600);

}

void loop() {

switchState = digitalRead(12);
Serial.print(", loopcycle: ");
Serial.println(loopcycle);

// Ο διακόπτης είναι παντά LOW . Θέλουμε να αλλάξουμε τη λειτουργία του προγραμματος
// όταν πατηθεί και γίνει το σήμα εισόδου HIGH.
// Η μεταβλητή getinput αλλάζει από 0 σε 1 όταν πατηθεί μια φορά το κουμπι.
// αρα πρεπει να αλλάξει όταν το σήμα 12 περάσει τη  μετάβαση LOW-HIGH-LOW.
// Κάθε πάτημα αλλάζει την κατάσταση του σερβοκινητήρα από ενεργό σε ανενεργό ή ανάποδα.

while (keyevent == 0) {   // loop until a keypress low-high-low is registered
  if (switchState == HIGH ){ 
      lowhigh = 1 ;  // tmp key state that signifies that we catched the low-high
  }
  switchState = digitalRead(12);
  if ( switchState == LOW && lowhigh == 1 ){  
    keyevent = 1  ; // we have a low-high-low thus a keyevent registered.
  }
}

if (keyevent == 1 ) {
  keyevent = 0 ;   // we consume the keyevent to produce work.
  lowhigh = 0;
 
  for ( angle = 10 ; angle <= 180 ; angle=angle+10){
   myServo.write(angle);
   Serial.print("angle: ");
   Serial.println(angle);
   delay(600);
  }
}
loopcycle++ ;
}
openhw/arduino/έλεγχος_σερβοκινητήρα_με_απλό_διακόπτη.1780825081.txt.gz · Last modified: by alexandrospr

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki