Digitalni ulaz
Cilj
Želimo ustanoviti je li pritisnuto jednostavno tipkalo, koje nam može omogućiti detekciju uhvaćene lopte, kasnije i za druge namjene.
Spajanje
Spojite 3.3 V pin (crveni) s bilo kojim kontaktom tipkala. Drugi kontakt spojite s pinom 27 mikrokontrolera.
Ukoliko spajate svoje prekidače, pazite da je u strujnom krugu otpornik od oko 220 Ω. Nikad ne spajajte prekidač bez otpornika je, ovisno o podignutom programu, moguće ostvariti kratki spoj i uništiti mikrokontrolersku pločicu.
Priprema
RobotLine::RobotLine(char name[]) : Robot(name) {
...
// Digital switches connected to ESP32 pins
// pinMode(25, INPUT_PULLDOWN);
// pinMode(26, INPUT_PULLDOWN);
pinMode(27, INPUT_PULLDOWN);
// pinMode(32, INPUT_PULLDOWN);
// pinMode(33, INPUT_PULLDOWN);
...
}
Na početku "mrm-robo-line.cpp" se nalazi funkcija "RobotLine". Već smo ju koristili za promjenu smjera rotacije kotača. U njoj se nalaze sve pripremne radnje, koje se pokreću kad se uključi mikrokontroler. U stručnim krugovima se zove "konstruktor".
Iskoristit ćemo ju da najavimo korištenje tipkala. Tipkalo će imati istu funkciju kao i tipkalo na displeju, koje smo koristili npr. za pokretanje robota.
Pronađimo dio u kojem su funkcije
pinMode. Svaka od njih prijavljuje jedan "pin" na mikrokontroleru za korištanje s vanjskim prekidačem.
Ispred linije koja ima naveden broj 27, obrišimo komentar. Tipkalo je prijavljeno i sad ćemo ga moći koristiti kasnije u kodu.
Program
void RobotLine::loop() {
if (digitalRead(27))
print("Da\n\r");
else
print("Ne\n\r");
}
Vratimo se na našu funkciju "loop()".
digitalRead(27) je još jedna nova Arduino funkcija.
Ako je pin 27 na visokom naponu, vratit će istinu. Ako nije, laž. Pažnja, "visoki napon" je u jeziku mikrokontrolera 3.3 V! Već 5 V može oštetiti mikrokontroler.
Zadatak: pauza.
Pokrenite robota ravno naprijed. Kad pritisnete tipkalo, privremeno zaustavite motore.
Rješenje
void RobotLine::loop() {
if (digitalRead(27))
stop();
else
go(50, 50);
}
Primjedbe
Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a".
Relevantne stranice:
Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.