Hallo, ich und ein Freund haben in der Schule als Projekt einen Snackautomaten mit 4 360 Grad Servo Motoren, 4 Knöpfen und einen Bewegungsmelder. Wenn der Bewegungsmelder erkennt, dass eine Münze eingeworfen wurde und ein Knopf gedrückt wurde soll sich ein Servo um 180 grad drehen.
Wir haben dazu schon einige Programme geschrieben aber es ist immer so, dass die Motoren sich zufällig drehen und nicht auf Knopfdruck und die angegebene Zeit lang.
# include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
int taster1 = A0;
int taster2 = A1;
int taster3 = A2;
int taster4 = A3;
int tasterstatus1 = 0;
int tasterstatus2 = 0;
int tasterstatus3 = 0;
int tasterstatus4 = 0;
int bewegung = 2;
int bewegungsstatus = 0;
void setup() {
pinMode(taster1, INPUT);
pinMode(taster2, INPUT);
pinMode(taster3, INPUT);
pinMode(taster4, INPUT);
pinMode(bewegung, INPUT);
servo1.attach(3);
servo1.write(90);
servo2.attach(5);
servo2.write(90);
servo3.attach(6);
servo3.write(90);
servo4.attach(9);
servo4.write(90);
}
void loop() {
bewegungsstatus = digitalRead(bewegung);
if (digitalRead(taster1) == HIGH && bewegungsstatus == HIGH) {
servo1.write(180);
delay(1000);
servo1.write(90);
}
if (digitalRead(taster2) == HIGH && bewegungsstatus == HIGH) {
servo2.write(180);
delay(1000);
servo2.write(90);
}
if (digitalRead(taster3) == HIGH && bewegungsstatus == HIGH) {
servo3.write(180);
delay(1000);
servo3.write(90);
}
if (digitalRead(taster4) == HIGH && bewegungsstatus == HIGH) {
servo4.write(180);
delay(1000);
servo4.write(90);
}
}
Das ist ein Programm das so wie ich es verstanden habe Funktionieren sollte, das tut es aber nicht. Vielleicht kann uns ja jemand dabei helfen?
Also die Taster sind ganz normal am Arduino angeschlossen. Sie haben keinen Wiederstand aber der ist warscheinlich in den Tastern verbaut, weil sie bei anderen Gruppen auch funktioniert haben
360°Servos sind nicht Servos, die sich zum Unterschied von 180° Servos um 360° drehen, sondern solche die sich dauerhaft in eine oder andere Richtung drehen, solange sie die entsprechende Ansteuerung bekommen.
Wenn Du eine genauen Winkel brauchst dann nimm Schrittmotore mit einem Home Sensor.
Hallo, danke schonmal für die Hilfe!
Wir haben jetzt eure Vorschläge ausprobiert aber leider drehen sich die servos immer noch zufällig. Jetzt drehen sie sich nicht einmal in der selben Geschwindigkeit. Habt ihr eine Idee woran das liegt oder sind die Motoren einfach kaputt?
Der Code aus #7 wurde von mir nachträglich verändert auf INPUT_PULLUP
Das war richtig, da Euer Plan auch darauf abzielt.
Jetzt Frage:
Habt Ihr den geänderten Code geladen oder den ursprünglichen, an dem die Taster nur INPUT definiert waren und auf HIGH geprüft wurden?
-> Unbedingt INPUT_PULLUP und !digitalRead(snack[b].taster)
!!!
Wenn das so ist, nächste Frage:
Die Verbindung zwischen GND auf der einen Seite des Steckbrett und der anderen Seite ist nicht zufällig in die 5V Schiene gerutscht?
Unbedingt noch einmal prüfen.
Und ich schau mal, ob ich im Code was vergessen habe.