openhw:arduino:έλεγχος_σερβοκινητήρα_με_απλό_διακόπτη
This is an old revision of the document!
Table of Contents
Ελεγχος σερβοκινητήρα με απλό διακόπτη
Διάγραμμα καλωδίωσης
Το διάγραμμα δημιούργηθηκε με το πρόγραμμα Fritzing. Μπορειτε να ανοίξετε την εικόνα σε ξεχωριστή καρτέλα στον πλοηγό σας ή να την καταβάσετε σαν σχέδιο αναφοράς αν θελήσετε να φτιάξετε το κύκλωμα
Περιγραφή επιθυμητής λειτουργικότητας
Ελεγχος ενός σερβοκινητήρα με εναν απλό διακόπτη. Οταν πατηθεί ο διακόπτης ενεργοποιείται ο σερβοκινητηρας και κανει περιστροφη 180.
Πρόγραμμα (sketch)
#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/έλεγχος_σερβοκινητήρα_με_απλό_διακόπτη.1780829004.txt.gz · Last modified: by alexandrospr

