Ich komm mir gerade ziemlich doof vor, weil ich nicht mal das einfachste Ansteuern eines Servos via ArduinoOne Board hinzubekommen scheine...
Ich könnte schwören, dass es funktionierte, als ich es mal ausprobierte, als ich das Board neu hatte.
Jetzt wollte ich ein Projekt mittels Servo aufwerten und tada....
folgendes Problem:
der Servo tut nichts, obwohl er richtig angeschlossen ist.
Ich hatte dann mal gesucht und folgenden Sketch gefunden, der ohne die Library arbeitet und dann wurde der Servo auch korrekt angesprochen:
// Festlegen des Servo Pins
int servo = 7;
// Weitere Variablen für PWM und Drehwinkel (Position)
int pwm;
int pos;
/* Funktion um das Servo zu bewegen. Hier wird die Position
berechnet und der Wert der neuen Position an das Servo
übergeben. */
void servoMove(int servo, int pos){
//Winkel in Mikrosekunden umrechnen
pwm = (pos * 11) + 500;
// Servo Pin auf HIGH zum aktivieren des Servos
digitalWrite(servo, HIGH);
// Kurze Zeit warten
delayMicroseconds(pwm);
// Servo Pin auf LOW zum deaktivieren des servos
digitalWrite(servo, LOW);
// 20 ms warten
delay(20);
}
// Initialisieren des Servo Pins
void setup() {
pinMode(servo, OUTPUT);
}
// Hauptprogramm
void loop() {
for(pos=0; pos<180; pos++) {
servoMove(servo, pos);
}
}
Allerdings bin ich über den zweiten Weg nicht auf einen grünen Zweig gelangt, das zu erreichen, was ich eigentlich möchte:
Auf Knopfdruck soll sich der Servo um X grad bewegen, kurz (5s) verharren und dann wieder in die Ausgangsstellung zurück gehen.
Ich bin für jede Info dankbar, sowohl für Ansätze, die meine Idee direkt umsetzen als auch für Ideen warum der erstgenannte Skech keinerlei Wirkung zeigt.
Wenn es dann damit funktioniert, passen die Standard-Impulszeiten der Library nicht zu Deinem Servo und Du müßtest den Servo mit besser passenden Impulszeiten für den 0° und 180° Drehwinkel initialisieren.
Bei einer 5V Stromversorgung über das Arduino-Board sollte zumindest ein kleines "Micro-Servo" laufen, wenn das Board an einer normalen PC USB-Schnittstelle hängt.
Falls Du das Board aber nur über einen Laptop/Notebook verbunden hast, kann es sein, dass Laptop oder Notebook zu wenig Strom hergeben, um damit über ein Arduino-Board auch noch einen Servo zu betreiben. Manche USB-Schnittstellen mobiler Rechner vertragen nur 200 oder sogar nur 100mA statt normal mindestens 500 mA, und das reicht ggf. nicht mal für einen einzigen Micro-Servo aus.
Die Servo-Bibliothek benutzt Timer des Controllers. Könnte sein daß die ATmega328 Timer-Ansteuerung nicht kompatibel mit der des ATMEGA8535 ist.
Grüße Uwe