Hallo zusammen!
Bei der Inbetriebnahme des Arduino werden meine Servos irgendwie positionsmäßig initialisiert. Dies funktioniert auch wunderbar. Nachdem ich jedoch den ersten Servo stelle, fangen danach alle Servos ständig an zu zucken. Stellen lassen sie sich dennoch einwandfrei. Die Servos sind mit einer separaten Stromquelle (5V Netzteil) gespeist und die Masse geht parallel zum Arduino. Muss hier u.U. mit einem Elko gearbeitet werden oder habe ich einen anderen Fehler?
Würde mich sehr über jede Hilfestellung freuen!
Besten Dank und viele Grüße aus Berlin
René
Nachstehend auch noch der Code:
#include <VarSpeedServo.h>
//#include <Servo.h>
#include <Wire.h>
#include <Centipede.h>
Centipede CS;
int taster9 = 0;
int taster8 = 0;
int taster10 = 0;
int taster6 = 0;
int taster5 = 0;
int taster4 = 0;
int taster13 = 0;
int taster14 = 0;
VarSpeedServo weiche1;
VarSpeedServo weiche6;
VarSpeedServo weiche7;
void setup() {
weiche1.attach(12); //12
weiche6.attach(11); //11
weiche7.attach(10); //10
Wire.begin();
CS.initialize();
CS.pinMode(11, OUTPUT);
CS.pinMode(7, OUTPUT);
CS.pinMode(0, OUTPUT);
CS.pinMode(1, OUTPUT);
CS.pinMode(2, OUTPUT);
CS.pinMode(3, OUTPUT);
CS.pinMode(15, OUTPUT);
CS.pinMode(7, OUTPUT);
CS.pinMode(9, INPUT); CS.pinPullup(9, HIGH);
CS.pinMode(8, INPUT); CS.pinPullup(8, HIGH);
CS.pinMode(10, INPUT); CS.pinPullup(10, HIGH);
CS.pinMode(6, INPUT); CS.pinPullup(6, HIGH);
CS.pinMode(5, INPUT); CS.pinPullup(5, HIGH);
CS.pinMode(4, INPUT); CS.pinPullup(4, HIGH);
CS.pinMode(13, INPUT); CS.pinPullup(13, HIGH);
CS.pinMode(14, INPUT); CS.pinPullup(14, HIGH);
}
void loop() {
taster9 = CS.digitalRead(9);
taster8 = CS.digitalRead(8);
taster10 = CS.digitalRead(10);
taster6 = CS.digitalRead(6);
taster5 = CS.digitalRead(5);
taster4 = CS.digitalRead(4);
taster13 = CS.digitalRead(13);
taster14 = CS.digitalRead(14);
// Ab hier werden die Fahrstraßen mit Hilfe von IF-Bedingungen gestellt
// Fahrstraße HB - HBF1
if (taster9 == LOW && taster6 == LOW) {
delay(500);
weiche1.slowmove(55,40); // abzweig
delay(500);
weiche6.slowmove(60,40); // gerade
delay(500);
CS.digitalWrite(11, HIGH);
CS.digitalWrite(2, HIGH);
CS.digitalWrite(0, HIGH);
CS.digitalWrite(3, LOW);
CS.digitalWrite(15, LOW);
}
// Fahstraße HB - HBF2
if (taster9 == LOW && taster5 == LOW) {
delay(500);
weiche1.slowmove(100,40); // gerade
delay(500);
weiche7.slowmove (100, 40); // gerade 100 40
delay(500);
CS.digitalWrite(11, HIGH);
CS.digitalWrite(3, HIGH);
CS.digitalWrite(15, HIGH);
CS.digitalWrite(2, LOW);
CS.digitalWrite(0, LOW);
}
// Fahstraße HBF1 - HBF2 Umsezten
if (taster6 == LOW && taster14 == LOW) {
delay(500);
weiche6.slowmove(100,40); // gerade
delay(500);
weiche7.slowmove(60,40); // gerade 60
delay(500);
CS.digitalWrite(2, HIGH);
CS.digitalWrite(15, HIGH);
//CS.digitalWrite(2, LOW);
//CS.digitalWrite(0, LOW);
}
// Fahstraße HBF2 - HbfEinfahrt
if (taster14 == LOW && taster9 == LOW) {
delay(500);
weiche1.slowmove(100,40); // gerade
delay(500);
weiche7.slowmove(100,40); // gerade
delay(500);
CS.digitalWrite(11, HIGH);
CS.digitalWrite(15, HIGH);
CS.digitalWrite(3, HIGH);
//CS.digitalWrite(2, LOW);
//
}
}