Ardiuno : Servo Verbunden, um eine Schaltfläche
Ich bin neu in Arduino und versuchen, nur Sie eine einfache Anwendung erstellen, damit der servo geht nach vorn, 50 Grad, wenn eine Taste gedrückt wird(nicht kontinuierlich) und bei Los lassen, es wird gehen wieder 50 Grad. Für einige Grund, warum meine servo rennt einfach weiter. Was sollte ich tun, um zu Debuggen.
#include <Servo.h>
Servo myservo; //creating myservo object
int buttonPin = 2;
int servoPin = 3;
int buttonState = 0; //set buttonState
void setup()
{
myservo.attach(servoPin);
pinMode(buttonPin, INPUT);
}
void loop()
{ buttonState = digitalRead(buttonPin); //read and save to the variable "buttonState" the actual state of button
if (buttonState == HIGH)
myservo.write(50); else
myservo.write(0);
}
- Was meinst du mit laufen? es hört nicht auf 50 Grad?
- Nein, es ist einfach immer wieder 360 und wird nicht aufhören
- Welche Art von servo ist das?
- vex servo......
- sorry vex motor
- Ja, das ist nicht ein servo, es tut genau das, was der code sagt, zu tun gegeben, ein normaler DC-motor. Versuchen Sie es mit der servo. Sie können auch bekommen eine bessere Antwort mehr auf robotics.stackexchange.com
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie die Bounce-Bibliothek Bibliothek, fangen die edge, die Sie suchen. Ihr Skript so geschrieben wurde, ist die kontinuierliche Aktualisierung der PWM mit 50 oder 0. Es ist nie bekommen eine chance, um tatsächlich tun es. Daher ist Sie nur wollen, Sie zu aktualisieren, auf eine Veränderung; entweder drücken oder loslassen.
Habe ich nicht getestet, die weiter unten. Es tut kompilieren und ist ein einfaches hack aus dem Beispiel und die oben genannten.
Ich werde nehmen Sie eine wilde Vermutung, dass Sie eine kontinuierliche rotation Servos. Diese servos haben die Rückmeldung der position vom poti entfernt/getrennt, so dass bei einer Drehung der servo wird ständig Spinnen denken, dass es noch nicht an der gewünschten position. Diese servos haben drei Positionen zu kontrollieren: aus (wahrscheinlich 90 Grad) im Uhrzeigersinn drehen (etwas größer als 90) und gegen den Uhrzeigersinn (weniger als 90). Manche tun es Ihnen erlauben, die Geschwindigkeit zu kontrollieren so gut (ich denke, dass die VEX man Sie zitieren, dass kann eine look-up-spec-sheet).
Ich hätte mein keine Bewegung Wert falsch (es kann nicht sein, 90) und mein counter/im Uhrzeigersinn Umgekehrt, aber ich bin fast sicher, dass dies Ihr Problem ist. Im Grunde Ihres Motors ist nicht, was Sie denken es ist 🙂
Dadurch wird es halt, wenn es nicht gebrochen und es ist ein kontinuierliches digital-servo.