Niezawodne programowanie

Reguły dla urządzeń USB

Aby nie wykonywać operacji fwexec i fwflash w trybie administratora należy wgrać plik /usr/local/gnatmindstorms2012/share/examples/mindstorms/mindstorms.rules do katalogu /etc/udev/rules.d (trzeba kopiować w trybie administratora).

Dopisane: nie zapomnij dodać użytkownika do grupy plugdev.

Programowanie LEGO Mindstorms w języku Ada

9841

Pod systemem Microsoft Windows™ dostępne jest środowisko GNAT GPS umożliwiające programowanie LEGO Mindstorms w języku Ada.

W swoim opisie będę korzystał z wersji dostępnej pod systemem Linux. Można pobrać ją ze strony Universidad Politecnica de Madrid.

Aby zainstalować środowisko pod Linuxem (wersja z Adą 2012) należy pobrać plik adaformindstorms-linux-2012-x86-gdb-bin.tar.gz, następnie rozpakować jego zawartość np. w katalogu /usr/local i ustawić w zmiennej środowiskowej PATH ścieżkę do katalogu /usr/local/gnatmindstorms2012/bin.

W katalogu /usr/local/gnatmindstorms2012/share/examples/mindstorms/demos znajdują się przykładowe programy. Aby je skompilować wystarczy, po przejściu do odpowiedniego podkatalogu, wykonać polecenie make.

Przed uruchomieniem skompilowanego programu na cegle NXT 2.0 należy usunąć z niej oryginalny firmware. W tym celu należy wcisnąć na kilka sekund przycisk reset umieszczony w otworze od spodu obudowy po stronie gniazda USB:

20061201_legonxt_0025

Gdy cegła NXT będzie gotowa do transmisji programu będzie słychać z wbudowanego w nią głośniczka charakterystyczne tykanie (uaktywniony tryb SAMBA).

Aby uruchomić na cegle NXT skompilowany program, należy podłączyć ją z komputerem, na którym kompilowałeś program, kablem USB i uruchomić program fwexec z parametrem będącym nazwą pliku ze skompilowanym programem. Prawdopodobnie do poprawnego działania programu fwexec trzeba go będzie uruchamiać w trybie administratora np. używając polecenie sudo (aby korzystać z polecenia sudo należy być w grupie 27 sudo).

Jeśli chcesz odtworzyć na cegle NXT oryginalny firmware, pobierz ze strony NXT Firmware Download archiwum zip, rozpakuj je a następnie wyślij plik LEGO MINDSTORMS NXT Firmware V1.31.rfw do cegły poleceniem fwflash (również w trybie administratora).

Na początek możesz spróbować skompilować poniższy program hello.adb:

with Ada.Real_Time; use Ada.Real_Time;
with NXT.AVR;
with NXT.Display; use NXT.Display;
with NXT.Last_Chance;

procedure Hello is
begin
  Put_Line(
"Hello world!”);
  Put_Line(
"wait 5 secs for power down”);
  
loop
    
delay until Clock + Seconds(5);
    NXT.AVR.Power_Down;
  
end loop;
end Hello;

Powyższy program pisze na wyświetlaczu LCD, a następnie po pięciu sekundach wyłącza cegłę NXT.