Witam. Posiadam od niedawna Arduino RedBot wraz z czujnikiem odległości LV-MaxSonar-EZ, akcelerometrem, buzzerem (póki co nie wykorzystuje) i line followerem (którego raczej nie wykorzystam). Chcę stworzyć robota, który po puknięciu w obudowę uruchamia się (i to już działa) i jedzie prosto (też działa), a po wykryciu przeszkody w odległości Xcm od siebie to wycofa i skręci w prawo. Jest wiele poradników do Arduino Uno z wykorzystaniem wyjścia analogowego, lecz do RedBota już nie, oraz z wykorzystaniem tanich i najbardziej popularnych czujek odległości HC-SR04. Próbowałem pracować w oparciu na inne przykładowe kody, ale kod obiektu czujnika nie potrafię stworzyć :( Wykorzystuję w czujniku wyjście PW impulsowe, może łatwiej to zrobić z wyjściem analogowym? Proszę o pomoc, zamieszczam mój "kod" poniżej. Czujnik wpięty do pinu A0. Korzystam z gotowych bibliotek. Pozdrawiam.```
#include <RedBot.h>
#include <RedBotSoftwareSerial.h>
#define ledPin 13
RedBotAccel accel; // obiekt obsługujący akcelerometr
RedBotMotors motors;
long CZAS;
int CM;
void setup()
{
Serial.begin(9600);
// konfiguracja pinu diody LED
pinMode(ledPin, OUTPUT);
// gaszę diodę
digitalWrite(ledPin, LOW);
// uruchomienie i konfiguracja detekcji puknięc
accel.enableBump();
accel.setBumpThresh(50);
pinMode(0, OUTPUT); //LV-MaxSonar
}
void pomiar_odleglosci ()
{
digitalWrite(0, HIGH); //ustawienie stanu wysokiego na 10 us - impuls inicjalizujacy
delayMicroseconds(10);
digitalWrite(0, LOW);
CM = 100;
}
void loop()
{
pomiar_odleglosci(); //pomiar odległości
Serial.print("Odleglosc: "); //wyświetlanie wyników
Serial.print(CM);
Serial.println(" cm");
if(CM>17) //jesli odległość od przeszkody będzie większa od 17cm to:
{
motors.drive(100); //jedź prosto
}
else
{
motors.drive(-100); //cofaj przez 0,4s
delay(400);
motors.stop();
motors.rightMotor(100); //następnie skręcaj przez 0,7s
delay(700);
motors.stop();
motors.drive(100); //i znowu jedź prosto
}
}