D12. Achizitionarea datelor de la senzori.
Pentru achizitionarea datelor de la senzorii Lego Mindstorms vom folosi leJOS (disponibil la http://lejos.sourceforge.com ) care este un API ce face posibila conectarea prin intermediul limbajului Java la interfata NXT a Mindstorms.
Pentru a putea scrie programe in Java care sa poata fi compilate si uploadate pe placa NXT trebuiesc urmati mai multi pasi (varianta in care dezvolta software in mediul Eclipse):
-
instalare leJOS
-
instalare plugin Eclipse
Pentru ca programele scrise in Java si compilate cu ajutorul leJOS pot fi incarcate pe placa NXT direct din mediul Eclipse insa pentru ca acestea sa ruleze trebuie updatat firmware-ul acesteia la versiunea NXJ.
Tutorialul pentru instalarea plugin-ului Eclipse se gaseste la adresa:
http://lejos.sourceforge.net/nxt/nxj/tutorial/Preliminaries/UsingEclipse.htm
leJOS ofera suport pentru comunicarea cu senzorii instalati existand abstractizari dezvoltate pentru fiecare dintre acestia.
Butoane
Clasa Button are 4 instante: Button.ENTER, Button.ESCAPE, Button.LEFT, Button.RIGHT;
Pentru a verifica daca un buton aste apasat exista functia isPressed() care intoarce o valoare boolean.
Functia waitForPress() returneaza codul butonului ce a fost apasat pe placa (
1-ENTER, 2-LEFT, 4-RIGHT, 8-ESCAPE)
De asemenea se pot adauga si listener pentru fiecare buton cu ajutorul functiei: addButtonListener(ButtonListerner ListenerB)
Pentru a verifica starea butoanelor apasate se foloseste int readButtons();
TouchSensor
Displayul de pe palca NXT are touchscreen iar leJOS ofera suport si pentru aceasta optiune.
Pentru a verifica daca acesta e ste atins: boolean isPressed();
Light Sensor
Sensorul de lumina poate citi cantitatea de lumina din incapere. Acest lucru se poate face cu functia readValue();
Initializarea unui senzor se face:
LightSensor light = new LightSensor(SensorPort.S1);
Sound Sensor
Acest sensor suporta 2 moduri de functionare DB si DBA. Diferenta dintre acestea 2 este frecventa sunetului la care senzorul raspunde;
Constructorii clasei SoundSensor: SoundSensor(SensorPort port); - DB si SoundSensor(SensorPort port, dba) unde dba este o varibila booleana ce trebuie sa fie true pentru a folosi modul DBA;
Pentru a citi valorile sunetului se foloseste functia readValue();
UltraSonic Sensor
Cu ajutorul acestui sensor se pot citi distantele pana la diverse obiecte;
Sensorul poate functia in 2 moduri: continuu, ping. Modul continuu ofera informatii in timp real de la sensor in timp ce in modul ping se poate calcula distanta la un anumit moment trimitand un semnal si calculand 8 valori.
Aceste valori se pot afla cu ajutorul functiei int readDistances(int [] distante) care va retine in array-ul distante cele 8 valori.
Pentru modul continuu se foloseste functia intgetDistance() care returneaza valoarea in centimetri de distanta. Distanta maxima este ~170 cm. Daca nu se detecteaza niciun obstacol se va intoarce valoarea 255.
Dostları ilə paylaş: |