ich möchte, dass der Arduino mit den Servos Pianotiles 2 spielt und das ist mein Programmcode für einen Servomotor:
#include <Servo.h>
Servo myservo1;
int photocellPin1 = 0;
int photocellReading1;
void setup(void) {
Serial.begin(9600);
myservo1.attach(9);
}
void loop(void) {
photocellReading1 = analogRead(photocellPin1);
Serial.println("Analog reading = ");
Serial.print(photocellReading1); //Wert des Lichtwiderstands wird angegeben
if (photocellReading1 > 350) {
Serial.println(" - Dark");
myservo1.write(90); //Falls Wert größer als 350, bewegen auf 90°
} else if (photocellReading1 < 350) {
Serial.println(" - Dim");
myservo1.write(0); //Falls Wert kleiner als 350, bewegen auf 0°
}
}
Mit dem mitgelieferten Servo vom Arduino Starter Kit funktioniert das bewegen des Servos einwandfrei jedoch hab ich mir vier andere Servos gekauft und zwar die HK-5320 Ultra-Micro Digital Servos und sie drehen sich nicht, obwohl ich alles gleich anstecke wie davor..
Wo könnte hier das Problem liegen ? (es ist nur ein Servo angesteckt)
Der HK 5320 Servo dreht sich nicht mit diesem Programm und steht halt immer an der gleichen Stelle..
Aber wenn der Strom nicht ausreicht würde dürfte sich doch der mitgelieferte Servo ebenfalls nicht drehen oder?
MatthiasR:
....
Aber wenn der Strom nicht ausreicht würde dürfte sich doch der mitgelieferte Servo ebenfalls nicht drehen oder?
Wie kommst du da drauf ?
Jeder Servo (leider lieferst du keine Daten oder Links zu deinen Teilen) hat seine eigene, andere Stromaufnahme.
Ich kann die nicht alle kennen.
Anderer Fehler könnte ein falsch angeschlossener Servo sein.
Da du anfangs von 4 Servos schriebst, hatte ich das auch so angenommen.
So steht es im Sketch......der leider sehr schlecht zu lesen ist.
Setze bitte alle deine Sketche in Code-Tags, dazu Schaltfläche </> verwenden.
Oben links im Editorfenster. Das kannst du auch nachträglich mach, damit alle den gut lesen können.
also wenn ich den Lichtsensor nicht beleuchte, dann wird ein Wert von ca. 100 ausgegeben und wenn er beleuchtet wird dann wird ein Wert von 800 angezeigt.
Hallo,
wenn es mit dem Servo aus dem Kit funktioniert, mit den neuen Servos aber nicht, wird es wohl an den Servos liegen.
Und das ist auch verständlich. Du steuerst nur 2 Positionen an: 90 und 0 Grad. Bei 0 erzeugt die Servolib einen Impuls, der deutlich kürzer als der nominale Mindestwert von 1ms ist. Einfache analoge Servos machen das mit. Digitale Servos überprüfen die Pulslänge, und wenn sie ausserhalb ihres Drehbereiches ist, ignorieren sie das. Dein Servo stellt sich also auf 90° und bleibt da stehen, da es den 0° Impuls ignoriert.
Du musst die Impulsgrenzen, die die Lib für 0° bzw. 180° ausgibt, an deine Digitalservos anpassen.
sollte es auf jeden Fall funktionieren, denn das sind die nominellen Werte für die kleinste und größte Impulsbreite. Inwieweit dein digitales Servo auch noch kleinere bzw größere Pulsweiten mitmacht, musst Du ausprobieren.