BricxCC
Řádka 115: | Řádka 115: | ||
<source lang"C"> | <source lang"C"> | ||
+ | #include "NXCDefs.h" //vložení hlavičkového souboru | ||
+ | task main() //hlavní funkce | ||
+ | { | ||
+ | SetSensorSound (IN_2); //zapnutí tlačítkového senzoru na portu 1 | ||
+ | int Sound; //proměná pro uložení hodnoty světla | ||
+ | int SoundPos; //poloha ekvalizéru | ||
− | + | while(true) //nekonečná smyčka | |
+ | { | ||
+ | Sound = Sensor (IN_2); //stav baterie | ||
+ | SoundPos = (((Sound * 76) / 100)); //vypočítání polohy ekvalizéru | ||
+ | |||
+ | RectOut (12,27, SoundPos, 1, true); //vykreslení ekvalizéru | ||
+ | RectOut (10, 25, 80, 5); //vykreslení grafu | ||
+ | |||
+ | NumOut(10, LCD_LINE2, Sound); //vypsání hodnoty | ||
+ | Wait(1); //spoždění 1ms | ||
+ | } | ||
+ | } //konec programu | ||
+ | </source> | ||
Řádka 133: | Řádka 151: | ||
<source lang"C"> | <source lang"C"> | ||
+ | #include "NXCDefs.h" //vložení hlavičkového souboru | ||
− | + | task main() //hlavní funkce | |
+ | { | ||
+ | SetSensorTouch (IN_1); //zapnutí tlačítka | ||
+ | SetSensorLight (IN_3); //zapnutí světelného senzoru | ||
+ | SetSensorMode (IN_3, IN_MODE_RAW); //přepnutí módu na rolišení 0 až 1023 | ||
+ | |||
+ | int Light; //proměná pro uložení hodnoty světla | ||
+ | bool Touch; //proměná pro uložení stavu tlačítka | ||
+ | |||
+ | while(true) //nekonečná smyčka | ||
+ | { | ||
+ | Light = Sensor (IN_3); //načtení intenzity světla | ||
+ | Touch = Sensor (IN_1); //zjistí stav tlačítka | ||
+ | |||
+ | NumOut (10, LCD_LINE2, Light, true); //výpis hodnoty | ||
+ | |||
+ | if(Touch == true) | ||
+ | { | ||
+ | SetSensorType (IN_3, IN_TYPE_LIGHT_INACTIVE); //vypnutí LED u světelného senzoru | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | SetSensorType (IN_3, IN_TYPE_LIGHT_ACTIVE); //zapnutí LED u světelného senzoru | ||
+ | } | ||
+ | } | ||
+ | } //konec programu | ||
+ | |||
+ | |||
+ | </source> | ||
Řádka 149: | Řádka 196: | ||
[[Soubor:Svetlo.PNG|thumb]] | [[Soubor:Svetlo.PNG|thumb]] | ||
+ | |||
+ | #include "NXCDefs.h" //vložení hlavičkového souboru | ||
+ | |||
+ | task main() //hlavní funkce | ||
+ | { | ||
+ | SetSensorTouch (IN_1); //zapnutí tlačítka | ||
+ | SetSensorLight (IN_3); //zapnutí světelného senzoru | ||
+ | |||
+ | SetSensorMode (IN_3, IN_MODE_RAW); //přepnutí módu na rolišení 0 až 1023 | ||
+ | |||
+ | int Light; //proměná pro uložení hodnoty světla | ||
+ | bool Touch; //proměná pro uložení stavu tlačítka | ||
+ | |||
+ | while(true) //nekonečná smyčka | ||
+ | { | ||
+ | Light = Sensor (IN_3); //načtení intenzity světla | ||
+ | Touch = Sensor (IN_1); //zjistí stav tlačítka | ||
+ | |||
+ | NumOut (10, LCD_LINE2, Light, true); //výpis hodnoty | ||
+ | |||
+ | if(Touch == true) | ||
+ | { | ||
+ | SetSensorType (IN_3, IN_TYPE_LIGHT_INACTIVE); //vypnutí LED u světelného senzoru | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | SetSensorType (IN_3, IN_TYPE_LIGHT_ACTIVE); //zapnutí LED u světelného senzoru | ||
+ | } | ||
+ | } | ||
+ | } //konec programu | ||
+ | |||
<source lang"C"> | <source lang"C"> | ||
</source> | </source> | ||
− | |||
Verze z 31. 5. 2011, 12:25
BrixCC – textový programovací nástroj pro vývoj robotických aplikací s LEGO roboty RXC a NXT.
Postup: 1. Stáhněte a nainstalujte program ze stránek http://bricxcc.sourceforge.net/
2. Nainstalujte nebo nakopírujte program do složky: C:\Program Files (x86)\
3. Program spusťte. V okně nastavte vyhledání a připojení NXT. Zvolte port, který chcete využít. Nabízí se USB nebo BlueTooth. Firmware nechte na Standard.
4. Následně v novém okně můžete psát program.
5. Každý program bude na začátku vypadat následovně.
Ukázky programů:
Úkol č. 1 Zadání: Napište program tak, aby došlo k výpisu textu (i čísel) na LCD displeji robota NXT. Text musí být bez diakritiky.
Funkce: Po úvodní inicializaci a skoku do nekonečné smyčky, se vypíše text „Nahodna cisla“ a vygeneruje se náhodné číslo. Těchto 8 náhodných čísel se postupně zobrazí vedle sebe. Mezi jednotlivým generováním je zpoždění 300 ms.
Ukázka programu:
#include "NXCDefs.h" //vložení hlavičkového souboru task main() //hlavní funkce { int RandomValue; //náhodné číslo int X = 10; //poloha while(true) //nekonečná smyčka { TextOut (10, LCD_LINE3, "Nahodna cisla"); //výpis textu na display RandomValue = Random(10); //vygenerování náhodného čísla od 0 do 9 NumOut (X, LCD_LINE5, RandomValue); //výpis hodnoty na display X += 10; //inkrementace X o 10 if(X > 80) X = 10; //kontrola překročení hodnoty Wait(300); //spoždění o 300 milisekund } } //konec programu
Úkol č. 2
Zadání: Vyzkoušejte program, který řeší zobrazení grafických obrazců, pomocí kterých se zobrazuje stav baterie robota
Funkce: Načítaná hodnota, která je v mV, se vypíše a zároveň přes vzorec převede na procentuelní úroveň a ta se poté vykreslí. Navíc při poklesu napětí pod 6V se ohlásí stav nízké úrovně baterie.
Ukázka programu:
#include "NXCDefs.h" //vložení hlavičkového souboru task main() //hlavní funkce { int BatLvl; //hodnota baterie int BatPos; //pozice stavu baterie int PercentBat; //procentuelní stav baterie while(true) //nekonečná smyčka { BatLvl = BatteryLevel (); //stav baterie v mV BatPos = ((BatLvl * 78) / 8500); //vypočítání polohy na grafu stavu baterie PercentBat = (BatLvl / 85); RectOut (10, 25, 80, 22, true); //vykreslení grafu RectOut (11, 26, BatPos, 20); //vykreslení stavu baterie do grafu if(BatLvl < 6000) TextOut(10, LCD_LINE1, "Low Batery"); //oznámení nízkého stavu baterie NumOut(10, LCD_LINE2, BatLvl); //vypsání hodnoty v mV TextOut (36, LCD_LINE2, "mV"); NumOut(58, LCD_LINE2, PercentBat); //vypsání hodnoty v % TextOut (75, LCD_LINE2, "%"); Wait(10); //spoždění 10ms (kvůli problikávajícímu jevu při mazání) } } //konec programu
Úkol č. 3
Zadání: Naprogramujte robota tak, aby při stisknutí senzoru doteku zobrazoval na LCD displeji Stisknuto/Rozepnuto.
Funkce: Na LCD displeji je zobrazována hodnota 0=Rozepnuto. Při sepnutí tlačítka se zobrazí hodnota 1=Stisknuto.
Ukázka programu:
#include "NXCDefs.h" //vložení hlavičkového souboru task main() //hlavní funkce { SetSensorSound (IN_2); //zapnutí tlačítkového senzoru na portu 1 int Sound; //proměná pro uložení hodnoty světla int SoundPos; //poloha ekvalizéru while(true) //nekonečná smyčka { Sound = Sensor (IN_2); //stav baterie SoundPos = (((Sound * 76) / 100)); //vypočítání polohy ekvalizéru RectOut (12,27, SoundPos, 1, true); //vykreslení ekvalizéru RectOut (10, 25, 80, 5); //vykreslení grafu NumOut(10, LCD_LINE2, Sound); //vypsání hodnoty Wait(1); //spoždění 1ms } } //konec programu
Úkol č. 4
Zadání: Naprogramujte robota tak, aby zobrazoval na LCD displeji hlasitost okolního ruchu.
Funkce: Robot pomocí senzoru hluku snímá hlasitost okolí a tu poté zobrazuje na LCD displeji.
Ukázka programu:
#include "NXCDefs.h" //vložení hlavičkového souboru task main() //hlavní funkce { SetSensorTouch (IN_1); //zapnutí tlačítka SetSensorLight (IN_3); //zapnutí světelného senzoru SetSensorMode (IN_3, IN_MODE_RAW); //přepnutí módu na rolišení 0 až 1023 int Light; //proměná pro uložení hodnoty světla bool Touch; //proměná pro uložení stavu tlačítka while(true) //nekonečná smyčka { Light = Sensor (IN_3); //načtení intenzity světla Touch = Sensor (IN_1); //zjistí stav tlačítka NumOut (10, LCD_LINE2, Light, true); //výpis hodnoty if(Touch == true) { SetSensorType (IN_3, IN_TYPE_LIGHT_INACTIVE); //vypnutí LED u světelného senzoru } else { SetSensorType (IN_3, IN_TYPE_LIGHT_ACTIVE); //zapnutí LED u světelného senzoru } } } //konec programu
Úkol č. 5
Zadání: Naprogramujte robota tak, aby pomocí senzoru světla zobrazoval na LCD dipleji hodnotu intenzity světla.
Funkce: Na LCD displeji je zobrazována intenzita světla která se nachází pod senzorem světla.
Ukázka programu:
- include "NXCDefs.h" //vložení hlavičkového souboru
task main() //hlavní funkce {
SetSensorTouch (IN_1); //zapnutí tlačítka SetSensorLight (IN_3); //zapnutí světelného senzoru
SetSensorMode (IN_3, IN_MODE_RAW); //přepnutí módu na rolišení 0 až 1023
int Light; //proměná pro uložení hodnoty světla bool Touch; //proměná pro uložení stavu tlačítka
while(true) //nekonečná smyčka { Light = Sensor (IN_3); //načtení intenzity světla Touch = Sensor (IN_1); //zjistí stav tlačítka
NumOut (10, LCD_LINE2, Light, true); //výpis hodnoty
if(Touch == true) { SetSensorType (IN_3, IN_TYPE_LIGHT_INACTIVE); //vypnutí LED u světelného senzoru } else { SetSensorType (IN_3, IN_TYPE_LIGHT_ACTIVE); //zapnutí LED u světelného senzoru } }
} //konec programu
Úkol č. 6
Zadání:
Funkce:
Ukázka programu:
Úkol č. 7
Zadání:
Funkce:
Ukázka programu:
Úkol č. 8
Zadání:
Funkce:
Ukázka programu:
literatura:
- http://bricxcc.sourceforge.net/nbc/nxcdoc/NXC_tutorial.pdf tutoriál EN
- http://support.dce.felk.cvut.cz/roboti/files/nxc/NXC_Guide_sk.pdf překlad tutoriálu SK
- http://support.dce.felk.cvut.cz/roboti/index.php?sekce=home&id=nxc
- Maturitní práce Realizace sad úloh pro NXT s SW BricxCC - Jan Pokorný 2010 SOČ 2010