Ich habe jetzt mal ein Programm geschrieben was das machen sollte was du möchtest
So funktionierts:
1) Der Arduino überprüft zuerst ob '+', '-' oder ',' gesendet wurde. --> Drehrichtung wird in die char-Variable "eingabe" geschrieben
2) Nun wartet der Arduino auf die Eingabe der Geschwindigkeit --> Geschwindigkeit wird in integer-Variable "speed" geschrieben
3) Der in "speed" gespeicherte Wert wird nun einfach in das PWM-Register des Timers geschrieben --> Motor wird auf die übergebene Geschwindigkeit eingestellt
Code:
char eingabe;
int speed;
void setup(){
Serial.begin(9600);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop(){
if (Serial.available()){
eingabe = Serial.read();
}
if (eingabe == '+'){ // zuerst überprüfen, ob vorwärts oder rückwarts gefahren werden soll
if(Serial.available()){
speed = Serial.read(); // nochmals auf eine Eingabe der Geschwindigkeit warten
digitalWrite(10, LOW); //
digitalWrite(9, HIGH); //
analogWrite(11, speed); // Nun den eingegebenen Wert in das Timer PWM-Register schreiben = Geschwindigkeit regeln
Serial.println("LINKS");
}
}
if (eingabe == '-'){ // dasselbe für Rückwärtsfahrt
if(Serial.available()){
speed = Serial.read();
digitalWrite(10, HIGH); //
digitalWrite(9, LOW); //
analogWrite(11, speed); //
Serial.println("RECHTS");
}
}
if (eingabe == ','){
analogWrite(11, 0); //
speed = 0;
Serial.println("STOP");
eingabe = 's';
}
}
Hoffe so klappt es
MfG
Torrentula
Lesezeichen