BricxCC

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
Řá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
  
</source>
+
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
  
</source>
+
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.

SW-BricxCC 01.jpg
SW-BricxCC 02.jpg
SW-BricxCC 03.jpg


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:

SW-BricxCC 04.jpg
#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:

SW-BricxCC ukol 01.jpg
#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:

Dotek.PNG
#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:

Zvuk.PNG
#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:

Svetlo.PNG
  1. 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:

Sonar.PNG
 



Úkol č. 7

Zadání:

Funkce:

Ukázka programu:

Enkoder.PNG
 



Úkol č. 8

Zadání:

Funkce:

Ukázka programu:

Joystick.PNG
 



literatura:

Osobní nástroje
Jmenné prostory
Varianty
Akce
Rychlá navigace
NEJ aktivity
Nejlepší předměty
Nejlepší MCU
SW-HW
Ostatní
Utility
Nástroje
Tisk/export