Hallo zusammen,
Bin am kämpfen mit einem wahrscheinlich für Programmierexperten kleinem Problem.
Ich würde gerne meinen kleinen Robi über die Sensoren positionieren lassen.
Dazu habe ich 3 Ultraschalsensoren Links ; Mitte ; Rechts
Jetzt zu der Aufgabe : Sobald der Linke ein Hindernis erkennt nehmen wir mal an bei ca. 16 cm soll er sich nach rechts drehen und zwar so lange bis er ca. 30 cm vom Hindernis weg ist.
Wie kann ich das Programmtechnisch lösen ?
Hier meine Anweisung welch leider nicht funktioniert ...
uS1 ist mein Ultraschalsensor für die Erkennung von Hindernissen auf der linken Pos .Code:if ((uS1 < 16 )) {//abstand kleiner als 16cm und abstand links grösser als 30** ********for (; uS1 > 30 ; uS1++) ********{ ********//Motor A forward @ full speed **** digitalWrite(12, LOW); **** digitalWrite(9, LOW); **** analogWrite(3, 255); ** **** //Motor B forward @ full speed **** digitalWrite(13, HIGH); **** digitalWrite(8, LOW); **** analogWrite(11, 255); ******** ********} } else { ****** //Motor A forward @ full speed **** digitalWrite(12, HIGH); **** digitalWrite(9, LOW); **** analogWrite(3, 255); ** **** //Motor B forward @ full speed **** digitalWrite(13, HIGH); **** digitalWrite(8, LOW); **** analogWrite(11, 255); } ** }**//end loop
deklariert wurde er mit :
Leider wie schon gesagt habe ich keinen Plan wie ich es realisieren kann.Code:*unsigned int uS1 = sonar1.ping(); //Sensor rechts **Serial.print("Ping: "); **Serial.print(uS1 / US_ROUNDTRIP_CM); **Serial.println("cm"); **uS1=uS1 / US_ROUNDTRIP_CM; **if (uS1 ==0 ){ uS1=50; }
Ich will wirklich nur mit den Werten arbeiten ... ( klar ich könnte den Robi ca 500 ms lang nach links drehen lassen o.ä. doch das ist keine Option )
Würde mich über jegliche Code Vorschläge freuen
Beste Grüße
Chris







Zitieren


Lesezeichen