Всем здравствуйте. Подскажите пожалуйста, или скиньте ссылку,как реализовать случайный выбор поворота для робота. Робот 2WD с ультразвуковым дальномером HC-SR04. Это мой первый опыт и в программировании робота, да и вообще в программировании. Сам искал, но не нашёл. Код (C++): #include <Ultrasonic.h> int val; int leftDirPin = 4; int leftSpeedPin = 5; int rightDirPin = 7; int rightSpeedPin = 6; int runSpeed = 50; int trigPin = 9; int echoPin = 8; Ultrasonic ultrasonic (9, 8); void setup() { Serial.begin(9600); pinMode(leftDirPin, OUTPUT); pinMode(leftSpeedPin, OUTPUT); pinMode(rightDirPin, OUTPUT); pinMode(rightSpeedPin, OUTPUT); } void go() { analogWrite(leftSpeedPin, runSpeed); analogWrite(rightSpeedPin, runSpeed); } void stop() { analogWrite(leftSpeedPin, 0); analogWrite(rightSpeedPin, 0); } void goForward() { digitalWrite(leftDirPin, HIGH); digitalWrite(rightDirPin, HIGH); go(); } void turnLeft() { digitalWrite(leftDirPin, LOW); digitalWrite(rightDirPin, HIGH); go(); } void turnRight() { digitalWrite(leftDirPin, HIGH); digitalWrite(rightDirPin, LOW); go(); } void loop() { float dist_cm = ultrasonic.Ranging(1); // Serial.println(dist_cm); if (dist_cm > 10) { goForward(); } else { stop(); turnRight(); } }
Я добавил код после else Код (C++): if (dist_cm > 10) { goForward(); } else { if (random(1)) turnLeft(); else turnRight(); } Он при подъезде к препятствию поворачивает всё время вправо.
Я понимаю, что нужно использовать функцию random или randomSeed для генерации, а затем нужно выбрать из этих 2 значений. А перед этим необходимо присвоить значения, например, что 0 это поворот вправо, а 1 влево. У меня проблема начинающего... как присвоить значение таким образом, что бы затем использовать ветвление if ... else. Код (C++): void loop() { turn = randomSeed(1); // тут наверно нужна локальная переменная if (turn == 0) { turnRight(); } else { turnLeft(); } float dist_cm = ultrasonic.Ranging(1); // Serial.println(dist_cm); if (dist_cm > 10) { goForward(); } else // иначе остановка и поворот { stop(); turn; } turn инициализировать как переменную, но он пишет: "void value not ignored as it ought to be" как быть?