Schon klar, dass du zZ. auch schon hinterher rennst, aber mit dem Funk kommt ja auch noch ein zweiter Mikrocontroller (der auch Fehler verursachen kann). Also erst mal mit beiden Mikrocontrollern und Kabel testen und dann auf Funk umbauen.
Du hast da einen Anfängerfehler in deinem Code
Das Programm wird nach einander abgearbeitet. Also von oben bis unten und erst dann fängt es wieder oben an.Code:void loop() { val = analogRead(potpin_links); // liest den Wert des Poti´s zwischen 0 und 1023 val = map(val, 0, 1023, 0, 180); // skalieren das der Servo weis, wo 0 und 180 ist servo_gas_bremse_1.write(val); // Servo auf den Skalierten Wert setzen delay(15); // 15 mS warten dann wieder abfragen val = analogRead(potpin_rechts); // liest den Wert des Poti´s zwischen 0 und 1023 val = map(val, 0, 1023, 0, 179); // skalieren das der Servo weis, wo 0 und 180 ist servo_links_rechts_2.write(val); // Servo auf den Skalierten Wert setzen delay(15); // 15 mS warten dann wieder abfragen }
Sprich durch die beiden delays sendest du das Servosignal erst all 30ms(+ 2ms für ein Servo.write + ein bisschen was für den rest des Programms) und nicht wie du es dir vermutlich denkst alle 15ms.
Also entweder nur einmal den delay oder eben bei beiden die halbe Zeit.
Was du auch bedenken solltest, bei dem verwenden der delay Funktion kann der Controller während der gesamten Zeit nichts machen. Hier solltest du dich bei Zeiten mal in das Thema Timer einlesen.
Dann kannst du die Servos über einen Interrupt quasi parallel zu einem Programm ansteuern.







Zitieren

Lesezeichen