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
Hoffe so klappt esCode: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'; } }
MfG
Torrentula







Zitieren

Lesezeichen