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
