# data[].attributes.body
Jadrom stavebnice je riadiaca jednotka – kocka EV3, okolo ktorej sa vybuduje robot.

EV3 je elektrický komponent, takže potrebuje zdroj elektrickej energie, tým je buď 6 článkov AA alebo 7.4 V baterkový nabíjateľný modul s kapacitou 2050 mAh.

Obsahuje ešte LCD displej, port pre USB, SD kartu, reproduktor...

Komunikácia s počítačom prebieha pomocou bluetooth alebo káblom cez USB.

Riadiaca jednotka EV3

Motory

Senzory

obrázok prevzatý z https://www.weareteachers.com/6-fun-ideas-lego-mindstorms-education-ev3/

# data[].attributes.body
obrazok prevzatý z

https://www.nextech.sk/a/Lego-Mindstorms-ev3--Staviame-roboticky-podvozok

# data[].attributes.body
Kocka má  štyri vstupné porty označené 1, 2, 3, 4 – tam sa pripájajú snímače (iným slovom senzory) a štyri výstupné prípojky označené A, B, C, D – tam sa pripájajú motory.
Motory, displej, zvuky, podsvietenie tlačidiel

A-ArmMotor- stredný motor

B- LeftMotor- veľký motor

C- RightMotor- veľký motor

Motory, displej, zvuky, podsvietenie tlačidiel
Tlačidlá, všetky typy senzorov, otáčky motorov, časovač, diaľkový IR ovládač

Používateľ s počítačom komunikuje pomocou 6 tlačidiel na vrchu riadiacej jednotky, najmä na výber položiek a pohyb v menu.

# data[].attributes.body
Za vývojom programovacie prostredie RobotC  stojí spoločnosť Robomatter. Vytvorený program v ňom nie je reprezentovaný graficky, ale zápisom programovacieho jazyka C v kombinácii s ďalšími príkazmi.

Jednotlivé časti programovacieho prostredia sú farebne vyznačené.

Štandardné horné menu

Knižnica funkcií

Programovacie plocha

Okná pre orientáciu v programe

# data[].attributes.body
Dotykový senzor je ako vypínač, môže byť zapnutý, alebo vypnutý, používa sa na kontrolu koncovej polohy, ak je zapnutý nastaví sa logická jednotka, ak je vypnutý nastaví sa logická nula. DS rozpoznáva tri stavy: dotyk, stlačenie a uvoľnenie

Príkaz:

task main()

{

while(true)

{

if (sensorvalue(S1)==0)

{

motor[motorB]=50;

motor[motorC]=50;

}

else

{

motor[motorB]=-50;

motor[motorC]=-50;

}

# data[].attributes.body
Senzor farieb je snímač, ktorý sníma spektrum odrazeného svetla a vyhodnocuje, ktorá časť spektra sa mu vráti, a tým pádom vie vyhodnotiť na akú farbu natrafil, rozlišuje osem rôznych farieb.

Využitie napr. pohyb robota po čiare, merať odrazivosť povrchov telies, určovať farbu telies....

Môže pracovať v režime svetelného senzora, rozlišujúceho intenzitu svetla - detekuje dopad svetla z prostredia či odraz svetla zo vstavaného zdroja.

# data[].attributes.body
V režime priblíženia vysiela infračervený snímač infračervený signál a dokáže detekovať odraz tohto signálu od objektu pred snímačom. Sila odrazeného signálu sa môže použiť na odhadnutie blízkosti (vzdialenosti) objektu. Režim blízkosti môžete použiť napríklad na zistenie, kedy sa váš robot priblíži k stene.

# data[].attributes.body
funguje na báze odrazeného zvuku, tzn. vysiela zvukovú vlnu. Ak vlna narazí na prekážku, tak sa vráti naspäť  a v danom štandardnom vzduchovom prostredí meria rýchlosť vrátenia a na základe toho vie určiť vzdialenosť.

# data[].attributes.headline
Program: Robot ide vpred, detekuje farby vydávaním zvuk farby, po ktorej ide

# data[].attributes.subject
Program: Robot ide vpred, detekuje farby vydávaním zvuk farby, po ktorej ide

# data[].attributes.body
task main()
{
while(true)
{
motor[motorB]=30;
motor[motorC]=30;
if(SensorValue(S3)==1)
{
playSoundFile("Black.rsf");
}
if(SensorValue(S3)==2)
{
playSoundFile("Blue.rsf");
}
if(SensorValue(S3)==3)
{
playSoundFile("Green.rsf");
}
if(SensorValue(S3)==4)
{
playSoundFile("Yellow.rsf");
}
if(SensorValue(S3)==5)
{
playSoundFile("Red.rsf");
}
if(SensorValue(S3)==6)
{
playSoundFile("White.rsf");
}
}
}

# data[].attributes.headline
Program: Robot pri cúvaní vydáva zvuk a pred prekážkou zastaví

# data[].attributes.subject
Program: Robot pri cúvaní vydáva zvuk a pred prekážkou zastaví

# data[].attributes.body
task main()
{
while (true)
{

if (SensorValue(S4)>=30)
{
motor[motorB]=-10;
motor[motorD]=-10;
playSound(soundShortBlip);
}
else
{
motor[motorB]=0;
motor[motorD]=0;
}
}
}

# data[].attributes.headline
Program: pohyb vpred, vzad, otočenie- príkazy

# data[].attributes.subject
Program: pohyb vpred, vzad, otočenie- príkazy

# data[].attributes.body
task main() // začiatok programu

{

motor [motorB]=50;      //motor vpred, rýchlosť pohybu 50%

motor [motorC]=50;

wait 1Msec(8000);

motor [motorB]=-10;    // robot sa otáča, rýchlosť pohybu 10%

motor [motorC]=10;

wait 1Msec(10 000);

motor [motorB]=-50;   // motor vzad, rýchlosť pohybu 50%

motor [motorC]=-50;

wait 1Msec(8000);

}

# data[].attributes.body
task main()

{

while(true)

{

motor[motorB]=-30;

motor[motorC]=-30;

playSound(soundBeepBeep);

}

}

# data[].attributes.body
task main()
{
int treshold=50;// 50 je polovica medzi bielou a ciernou farbou- odrazeneho svetla
while(true)
{
if(getColorReflected(S3)>treshold)// je detekovana biela farba
{
//turn right
motor[motorB]=0;
motor[motorC]=30;
}
else //je detekovana cierna farba
{
//turn left
motor[motorB]=30;
motor[motorC]=0;

}
}
}

# data[].attributes.headline
Program: Detekovanie farby-výpis na display

# data[].attributes.subject
Program: Detekovanie farby-výpis na display

# data[].attributes.body
task main()

{

short currentColour;

while (true)

{

currentColour = SensorValue[Colour];

switch(currentColour)

{

case 0: displayCenteredBigTextLine(4, "none"); break;

case 1: displayCenteredBigTextLine(4, "black"); break;

case 2: displayCenteredBigTextLine(4, "blue"); break;

case 3: displayCenteredBigTextLine(4, "green"); break;

case 4: displayCenteredBigTextLine(4, "yellow"); break;

case 5: displayCenteredBigTextLine(4, "red"); break;

case 6: displayCenteredBigTextLine(4, "white"); break;

case 7: displayCenteredBigTextLine(4, "brown"); break;

default: displayCenteredBigTextLine(4, "unknown");

}

// Wait 20 ms to get 50 readings per second

sleep(20);

}

}