Difference between revisions of "Lego Mindstorms Ev3 Project - Ondrej Slovak"
Line 30: | Line 30: | ||
<code> | <code> | ||
− | |||
− | |||
while (true) | while (true) | ||
{ | { | ||
Line 43: | Line 41: | ||
} | } | ||
} | } | ||
− | |||
</code> | </code> |
Revision as of 15:01, 1 July 2014
Zadanie
V tomto projekte si vytvoríme robota zo stavebnice Lego Mindstorms Ev3, ktorý bude ovládaný pomocou klávesnice PC, bude sa vyhýbať prekážkam a zároveň nebude vychádzať z vyznačeného priestoru.
Príprava
Budeme používať softvér pre Lego Mindstorms Ev3 od spoločnosti leJOS. Na jeho používanie budeme potrebovať nakonfigurovanú micro-SD kartu a vývojové prostredie, ktoré si môžeme nastaviť pomocou nasledujúcich odkazov.
- https://sourceforge.net/p/lejos/wiki/Windows%20Installation/
- https://sourceforge.net/p/lejos/wiki/Installing%20the%20Eclipse%20plugin/
Nakonfigurovanú SD kartu vložíme do SD portu Ev3 kocky a spustíme. Softvér od leJOS-u sa automaticky nahrá z karty a bude sa používať ako náhrada za oficiálny softvér, pokiaľ budeme mať vloženú kartu.
Ďalej budeme potrebovať nadviazané spojenie pomocou Bluetooth. Toto spojenie sa dá jednoducho nadviazať z PC pomocou Bleutooth zariadenia. V Bluetooth Devices si vieme nájsť Ev3 a nadviazať s ním spojenie.
Program
Program bude pozostávať z dvoch základných častí, časť, ktorá bude bežať na robotovi a časť, ktorá bude bežať na PC.
Popíšme si najskôr časť, ktorá bude na robotovi.
Program na robotovi sa skladá z viacerých častí. V prvom rade musíme zabezpečiť komunikáciu medzi robotom a PC. Keďže už máme nadviazané spojenie pomocou Bluetooth stačí nám na robotovi vytvoriť server, ktorý bude počúvať na požiadavky od používateľa, v našom prípade PC. Túto komunikáciu sme umiestnili do samostatného threadu aby robot stále počúval na požiadavky z PC.
serv = new ServerSocket(1111);
Socket s = serv.accept(); // Wait for Laptop to connect
DataInputStream in = new DataInputStream(s.getInputStream());
while (true) { while (_serialPort.BytesToRead > 0) Console.Write(_serialPort.ReadChar()); if (this.zapis != false) { Console.WriteLine("pisem"); _serialPort.WriteLine(this.posli); this.zapis = false; } }