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):
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ş: |