sterujemy pojazdem – oprogramowanie

Kontynuujemy oprogramowywanie pojazdu – ciągle chodzi nam o jak najpłynniejszą jazdę.

Propozycje softu:

  • tworzymy liczniki czasu jazdy (w milisekundach) do przodu, w lewo, w prawo
  • każdorazowe naciskanie przycisków na pilocie zwiększa odpowiednie liczniki
  • w pętli głównej unikamy zatrzymywania Arduino – czyli funkcji delay, zamiast to
  • używamy funkcji millis() do sprawdzenia aktualnego czasu i wyłączeniu silników, jeśli liczniki pracy do przodu (w lewo, w prawo) się skończyły
  • a teraz najciekawsze modyfikacje:
  • jeśli oba liczniki: do przodu i skrętu (nieważne: w lewo czy w prawo) są niezerowe, to w zależności od ich stosunku sterujemy PWM-em koła i robimy albo lekki skręt, albo bardzo mocny (bez jechania do przodu).

Kolejne zajęcia po Świętach – wtorek 25 kwietnia – sterujemy pilotem platformą – nie zapomnijcie przynieść ze sobą pilota na podczerwień.  Zapraszam!

 

sterujemy pojazdem (TSOP 2236) + tuning platformy

Rozpoczęliśmy od sprawdzenia, na ile czasu jazdy starczą nam zainstalowane akumulatorki. Pierwszy program był się bardzo prosty – cała naprzód (i  mierzymy prąd).

Potem zamonotowaliśmy czujkę TSOP 2236 i wpisaliśmy obsługę poleceń: jedź do przodu, tyłu, skręcaj (niektórzy nawet dwa rodziaje skrętów – ciasny, oraz szeroki).

Okazuje się, że pojazdy jeżdzą, ale trudno się nimi steruje – wykręcenie „ósemki” na przygotowanym torze nie jest wcale łatwe. Sprawa wymaga odpowiedniego oprogramowania rozkazów jazdy – na tym trzeba się skupić.

Kolejne zajęcia – także we wtorek 16:00 – sterujemy pilotem platformą – nie zapomnijcie przynieść ze sobą pilota od TV/radia/odkurzacza.  Zapraszam!

 

pilot od TV — czujka TSOP 22xx + platforma pojazdu

Poznaliśmy odbiornik podczerwieni TSOP 2236. 

#define VCC 13
#define IR 12
#include <IRLib.h>
IRrecv pilot(IR);//pin
IRdecode dekoder;

void setup(){
  pinMode(VCC, OUTPUT);
  digitalWrite(VCC, 1);//wlaczamy napiecie dla odbiornika IR
  pilot.enableIRIn();//uruchamiamy odbiornik IR
  Serial.begin(9600);
}

void loop() 
{
   if (pilot.GetResults(&dekoder)) {
     dekoder.decode();    //dekoduj dane
     pilot.resume();     //restartuj odbiornik
     Serial.print("0x");      
     Serial.println(dekoder.value, HEX);//szesnastkowo - tak tylko...
   }//if
}/loop

W powyższym przykładzie zakładam, że pilot odbiornik IR podłączony był bezpośrednio do płytki Arduino o tak:

co jest bardzo stabilne i (warto podkreślić) nie wymaga płytki stykowej. Wszystko zgodnie ze specyfikacją – odbiornik IR dostaje zasilanie 5V z pinu #13 Arduina, a wymagany prąd to tylko 5mA (czy pamiętasz, jakim maksymalnie prądem można obciążyć piny cyfrowe Arduino?). Dlatego na początku kodu pojawia się deklaracja VCC i włączenie tego pinu. Reszta zgodna z biblioteką IRLib – nie musimy bawić się w dekodowanie sygnału, wszystko zostało zrobione przez Chris Younga – dziękujemy!

Dodatkowo: zbudowaliśmy platformę pojazdu, którą za tydzień – będziemy sterować pilotem od TV. Jak widać stawiam na prostotę i możliwość późniejszej rozbudowy – dlatego nasze pojazdy są dość sporych rozmiarów. Zachęcam do tego typu prac ręcznych.

Kolejne zajęcia – także we wtorek 16:00 – sterujemy pilotem platformą – nie zapomnijcie przynieść ze sobą pilota od TV/radia/odkurzacza.  Zapraszam!