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