Lista zadań nr 6
Transkrypt
Lista zadań nr 6
Sterowanie procesami dyskretnymi – laboratorium dr inż. Grzegorz Bazydło [email protected], staff.uz.zgora.pl/gbazydlo Lista zadań nr 6 Zagadnienia Tworzenie prostych programów na platformę Arduino, robota Zumo, nakładki pozwalającej na przesyłanie danych z częstotliwością 315 MHz (RF Shield firmy DFRobot) oraz zdalnego pilota z 4 przyciskami. Środowisko Do tworzenia programów realizowanych na platformie Arduino można wykorzystać dedykowane środowisko Arduino Software1. Po uruchomieniu ogólny widok aplikacji przedstawia się następująco: Robot Zumo Ciekawym rozszerzeniem do platformy Arduino jest robot Zumo (v.1.2) firmy Pololu. Jest to mobilny robot umożliwiający wygodne zamontowanie na niej płytki Arduino i wyposażony jest w dwa silniki sterujące niezależnie dwoma gąsienicami, sześć czujników działających na podczerwień, brzęczyk (głośniczek), 3-kierunkowy akcelerometr, magnetometr, żyroskop oraz metalową osłonę (typu „buldożer”). Został on zaprojektowany głównie pod kątem zawodów Mini Sumo (walki robotów). Wygląd urządzenia zaprezentowano na poniższych zdjęciach: Uwaga: w razie pytań dot. uruchomienia urządzenia lub zamontowania na nim platformy Arduino skorzystaj z pomocy i sugestii prowadzącego. 1 Aktualna wersja środowiska Arduino Software to 1.6.13 i wszystkie zrzuty ekranu umieszczone w tym dokumencie pochodzą właśnie z tej wersji programu. Środowisko można za darmo pobrać ze strony: https://www.arduino.cc/en/Main/Software 1 DFRobot RF Shield 315 MHz Jest to rozszerzenie umożliwiające przesyłanie danych na częstotliwości 315 MHz. Maksymalna odległość transmisji jest równa 40 m. Moduł zawiera też złącze dla układów komunikacji bezprzewodowej XBee, które umożliwia bezpośrednie wpięcie modułu w płytkę. Producent udostępnia przewodnik użytkownika2 wraz z przykładowym programem (patrz przykład 3). Przykład 1 Wykorzystując środowisko Arduino Software wczytaj, przeanalizuj i uruchom przykładowy program o nazwie Blink (menu Plik Przykłady 01.Basics Blink). Zadaniem programu jest zapalanie i gaszenie co 1 sekundę diody umieszczonej na płytce Arduino i podpiętej pod pin nr 13. Program ten wygląda następująco: // funkcja setup() uruchamiana jest tylko jeden raz, na początku programu void setup() { pinMode(13, OUTPUT); // zdefiniuj pin 13 jako wyjście } // funkcja loop() uruchamiana jest po zakończeniu funkcji setup() i jej // działanie jest powtarzane w nieskończoność void loop() { digitalWrite(13, HIGH); // przełącz pin 13 na stan wysoki (zapalenie diody) delay(1000); // czekaj przez 1000 ms (1 sek.) digitalWrite(13, LOW); // przełącz pin 13 na stan niski(zgaszenie diody) delay(1000); // czekaj przez 1000 ms (1 sek.) } Przykład 2 Wykorzystując środowisko Arduino napisz program (przykład dostępny na stronie z materiałami do zajęć), który umożliwia poruszanie się robota Zumo: #include <ZumoMotors.h> #include <Pushbutton.h> ZumoMotors silniki; Pushbutton przycisk(ZUMO_BUTTON); void setup() { // zapalenie na 3 sek. diody, aby mieć pewność, że program został załadowany pinMode(13, OUTPUT); digitalWrite(13, HIGH); delay(3000); digitalWrite(13, LOW); } void loop() { // setSpeeds() ustawia prędkość: lewa wartość odpowiada prędkości lewej // gąsienicy (od -400 do 400), prawa analogicznie prawej gąsienicy silniki.setSpeeds(0,0); // zatrzymaj robota przycisk.waitForButton(); // czekaj na wciśnięcie przycisku 2 silniki.setSpeeds(-200,200); delay(3000); // kręć robotem w lewo // czekaj 3 sek. silniki.setSpeeds(200,-200); delay(3000); // kręć robotem w prawo // czekaj 3 sek. silniki.setSpeeds(100,100); // jedź do przodu z prędkością 100 https://www.dfrobot.com/wiki/index.php/RF_Shield(315MHz)(SKU:TEL0075) 2 delay(2000); // czekaj 2 sek. silniki.setSpeeds(-100,-100); delay(2000); // jedź do tyłu z prędkością 100 // czekaj 2 sek. } Zadanie 1 Wykorzystując przykład 2 napisz program, który spowoduje, że robot po naciśnięciu przycisku będzie najpierw jechał do przodu przez 2 sekundy, a następnie wykona zwrot o 180 stopni i powróci w miejsce startu. Zadanie 2 Przeanalizuj i uruchom przykładowe programy dot. wykorzystania robota Zumo: LineFollower, ZumoMotorExample, ZumoBuzzerExample, ZumoBuzzerExample2 oraz ZumoBuzzerExample3. Następnie na bazie programu LineFollower przygotuj program, który będzie prowadził robota po czarnej linii, a jednocześnie grana będzie melodyjka (funkcjonalność jednego z programów ZumoBuzzerExample). Przykład 3 Wykorzystując środowisko Arduino napisz program (przykład dostępny na stronie z materiałami do zajęć), który umożliwia komunikację pilota z modułem DFRobot RF Shield umieszczonego na platformie Arduino: /*The following 4 pin definitions,correspond to 4 buttons on the remote control(The telecontroller is Remote Wireless Keynob 315MHz(SKU:FIT0355))*/ int int int int int D1 = 8; D2 = 9; D3 = 10; D4 = 11; ledPin = 13; //The digital output pin //The digital output pin //The digital output pin //The digital output pin //Receiving indicator 1 2 3 4 of of of of decoder decoder decoder decoder chip(SC2272) chip(SC2272) chip(SC2272) chip(SC2272) volatile int state = LOW; void setup() { Serial.begin(9600); /*The four pins order below correspond to the 4 buttons on the remote control.*/ pinMode(D4, INPUT); //Initialized to input pin, in order to read the level of the output pins from the decoding chip pinMode(D2, INPUT); pinMode(D1, INPUT); pinMode(D3, INPUT); pinMode(ledPin, OUTPUT); attachInterrupt(1,blink,RISING); //Digital pin 3,interrupt 1,corresponds to receiving interrupt pin of the decoding chip digitalWrite(ledPin, LOW); } void loop() { if(state!=LOW) { state=LOW; delay(1); //delay some time,wait for stable level on the output pin digitalWrite(ledPin, HIGH); Serial.print(digitalRead(D4)); //Read individually output pins of the decoder chip,and put them on the serial monitor Serial.print(digitalRead(D2)); 3 Serial.print(digitalRead(D1)); Serial.println(digitalRead(D3)); delay(300); digitalWrite(ledPin, LOW); } } void blink() { state =! state; } Zadanie 3 Na podstawie zadania 1 oraz przykładu 3 napisz program, który spowoduje, że robot po naciśnięciu przycisku (na robocie Zumo) będzie jechał do przodu i po każdorazowym naciśnięciu przycisku (na pilocie), wykona zwrot o 180 stopni (do obsługi naciśnięcia przycisku na pilocie wykorzystaj w programie tylko pin nr 11). Po wykonaniu wszystkich zadań poproś prowadzącego o ocenę. W razie trudności lub wątpliwości – pytaj! 4