Dziś przedstawię najprostszy możliwy przykład programu line follower działającego na robocie RedBot Basic Kit. RedBot Basic Kit jest wyposażony w trzy czujniki odbiciowe światła podczerwonego, dzięki temu idealnie nadaje się do budowy prostego robota line follower (budowa czegoś bardziej zaawansowanego wymagałaby użycia dodatkowych czujników lub listwy z czujnikami).
Pozostałe części cyklu:
Mój program powstał na bazie przykładu dostarczanego przez producenta, ale do uzyskania zadowalających efektów musiałem go mocno zmodyfikować. Idea działania jest bardzo prosta:
- po dołączeniu zasilania robot czeka na naciśnięcie przycisku
- po naciśnięciu przycisku robot startuje
- podczas jazdy sprawdzamy okresowo stan lewego i prawego czujnika (środkowy nie jest używany), w zależności od odczytanych stanów robot steruje odpowiednio silnikami:
Lewy czujnik Prawy czujnik Akcja Jasno Jasno Jazda do przodu Jasno Ciemno Skręcanie w lewo Ciemno Jasno Skręcanie w prawo Ciemno Ciemno Jazda do tyłu
Poniżej znajduje się kod programu.
#include <RedBot.h>
RedBotMotors motors;
// czujniki IR
RedBotSensor lSen = RedBotSensor(A6);
RedBotSensor rSen = RedBotSensor(A7);
// piny przycisku i głośnika
#define BEEPER 9
#define BUTTON_PIN 12
// poziomy jasności tła i linii
const int bgLevel = 600;
const int lineLevel = 700;
// flaga trybu standby
volatile boolean standby = true;
void setup()
{
pinMode(BUTTON_PIN, INPUT_PULLUP);
tone(BEEPER, 2000, 750);
delay(1000);
}
void loop()
{
// czekaj na nacisniecie przycisku
if (digitalRead(BUTTON_PIN) == LOW)
standby = false;
if (!standby)
{
// jasno pod oboma czujnikami -> jedz do przodu
if (lSen.read() < bgLevel && rSen.read() < bgLevel) motors.drive(-100);
// ciemno pod oboma czujnikami -> cofnij się
else if (lSen.read() > lineLevel && rSen.read() >lineLevel) motors.drive(100);
// ciemno pod prawym czujnikiem -> skrec w prawo
else if (rSen.read() > lineLevel) {
motors.leftDrive(-100);
motors.rightBrake();
}
// ciemno pod lewym czujnikiem -> skrec w lewo
else if (lSen.read() > lineLevel) {
motors.rightDrive(-100);
motors.leftBrake();
}
}
else motors.brake();
}
Na filmie możecie zobaczyć robota w akcji.
Robota RedBot Basic Kit dostarczył sklep internetowy dla elektroników Kamami.pl.


