Hi!
Ich hab mal wieder ein Problemchen und würde damit gerne an euch treten:
Ich möchte über einen ATMEGA8535 einen Servo ansteuern, wenn vorher in einem Zahlenfeld der richtige Code eingegeben wurde.
Was die Programmierung angeht bin ich auch auf dem richtigen Weg, allerdings machen die Servos nicht das, was ich von ihnen erwarte.
Ich habe folgende drei Servos, von denen ich letzten Endes aber nur einen brauchen werde. Zu Testzwecken schließe ich in der Regel aber alle drei nacheinander an. Bei den Servos handelt es sich um folgende:
TowerPro – MicroServo9g / SG90
Modelcraft – Y-3009
Modelcraft - MC-410
Der entscheidene Code sieht folgendermaßen aus:
Else // Eingabe des richtigen Codes
{
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(buzzer, HIGH);
myservo.write(160); // drehen des Servos über <SoftwareServo.h> // <Servo.h> bei dem Controller anscheinend nicht möglich
SoftwareServo::refresh();
delay(5000);
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(buzzer, LOW);
myservo.write(0);
SoftwareServo::refresh();
}
Gewünscht ist, dass nach Eingabe des richtigen Codes sich der Servo dreht und nach Ablauf der Zeit wieder zurück dreht.
Mit dem von mir gegebenen Code lässt sich bisher allerdings nur der TowerPro ansprechen. Die anderen beiden Servos bewahren stillschweigen, bis auf ein Zucken, wenn ich sie mir Strom versorge.
Die Versorgung der Servos läuft über eine 9V Batterie, während der Controller über meinen ArduinoOne mit 5V betrieben wird.
Allerdings funktioniert der verbleibende Servo auch nur teilweise:
Zum einen dreht er immer weiter, anstatt zurück, zum anderen bleibt er des öfteren hängen und macht gar nichts mehr.
Via <servo.h> Lib und ArduinoOne funktioniert alles wie gewünscht, nur nicht mehr, wenn ich es auf das ATMEGA8535 lade.
Ich hoffe euch fällt dazu etwas ein, was mir weiterhelfen kann ?