Hallo. Wir bauen zurzeit ein Ferngesteuertes Motorboot und steuern die 2 DC Motoren über einen Arduino Motor Shield an.
via Pulsweitenmodulation wollen wir dem Motor entweder sagen ob er vorwärts oder rückwärts dreht... Leider läuft das bei uns nur so halb...
Wenn wir Gas geben, gibt der eine Motor Vollgas, und der andere bleibt aus,
wenn wir rückwärts fahren, springt der andere Motor an und der erste bleibt aus.
Es sollte ein Softwarefehler sein.
We want to run 2 seperate DC Motors at the same time, but only one is running while pressing forward and the other one runs while pressing backwards on the controller.
int ch2; // Here's where we'll keep our channel values
int ch3;
int ch4;
void setup() {
//Setup Channel A
pinMode(12, OUTPUT); //Initiates Motor Channel A pin
pinMode(9, OUTPUT); //Initiates Brake Channel B pin
//Setup Channel B
pinMode(13, OUTPUT); //Initiates Motor Channel A pin
pinMode(8, OUTPUT); //Initiates Brake Channel B pin
//Eingabe durch den RC-Controller
pinMode(2, INPUT); // Channel 2 -> Motoren
pinMode(3, INPUT); // Channel 3 -> Hals Oben und Unten
pinMode(4, INPUT); // Channel 4 -> Extra (Unnötig)
//Stepper
Serial.begin(9600); // Pour a bowl of Serial
}
void loop() {
ch2 = pulseIn(2, HIGH, 25000); // Read the pulse width of
ch3 = pulseIn(3, HIGH, 25000); // each channel
ch4 = pulseIn(4, HIGH, 25000);
//Motoren ansteuern
Serial.print("Channel 2:"); // Totenpunkt 1490 max 1986 min 990
Serial.println(ch2);
if(ch2 > 1500){ //Poolnudel goes BRRRRRRRRR
digitalWrite(12,HIGH);
digitalWrite(9,LOW);
analogWrite(3,255);
digitalWrite(13,HIGH);
digitalWrite(8,LOW);
analogWrite(11,255);
}else if(ch2 < 1475){ //Rückwärts
digitalWrite(12,LOW);
digitalWrite(9,LOW);
digitalWrite(13,LOW);
digitalWrite(8,LOW);
analogWrite(3,255);
analogWrite(11, 255);
} else if(ch2 >= 1475 && ch2 <= 1500){ //Ruhelage
digitalWrite(9,HIGH);
digitalWrite(8,HIGH);
}
// Hals hoch und runterstellen -> SchrittMotor
Serial.print("Channel 3:");
Serial.println(ch3);
/*if (ch3 >= 1475 && ch3 <= 1500){
myStepper.step(0);
} else if (ch3 > 1500){
myStepper.step(stepsPerRevolution);
} else if (ch3 < 1475){
myStepper.step(-stepsPerRevolution);
}
*/
Serial.print("Channel 4:");
Serial.println(ch4);
delay(100); // I put this here just to make the terminal
// window happier
}
Hoffentlich könnt ihr mir helfen
Ach ja. Die Motoren sind direkt über die Motor Shield Pins A und B angeschlossen