Kursy • Poradniki • Inspirujące DIY • Forum
Czy ktoś pamięta język Lisp? Jest to pytanie kierowane bardziej do weteranów programowania, którzy pamiętają lata 50' – kiedy to Lisp miał swoje początki. Język ten jest jednym z pierwszych wysokopoziomowych języków interpretowanych - czyli takich, których kod programu nie wymaga kompilacji, zaś programy można pisać w linii poleceń lub w postaci skryptów.
Wydawać się może, że taki "zabytek" nie pasuje do współczesnych urządzeń – nic bardziej mylnego! Istnieją nawet dedykowane platformy sprzętowe do eksperymentów z tym językiem. Opisywany tutaj Lisp Badge składa się z mikrokontrolera ATmega1284P oraz elementów umożliwiających komunikację.
Na pokładzie płytki znajduje się m.in.:
- klawiatura wzbogacona o znaki pomocne w programowaniu,
- złącze FTDI z możliwością wpięcia zewnętrznego konwertera UART,
- graficzny wyświetlacz OLED o rozdzielczości 256x64px.
Istotą działania tego minikomputera jest wgrany do niego interpreter języka uLisp, który dostępny jest w formie szkicu na Arduino. Można go wgrać stosując Arduino IDE, przygotowano również zmieniony bootloader (na potrzeby mikrokontrolerów niewystępujących na płytkach Arduino).
Po wgraniu odpowiedniego szkicu można zająć się programowaniem mikrokontrolera w języku uLisp. Komendy wydaje się za pomocą terminala dostępnego w Arduino IDE lub za pomocą wbudowanej w płytkę klawiatury.
uLisp udostępnia 122 funkcje Lisp oraz dodatkowe funkcje rysujące wykresy.
Wyniki wyświetlane są zarówno po stronie terminala (portu szeregowego) jak i na wyświetlaczu OLED umieszczonym na płytce. Dzięki buforowaniu, możliwe jest usuwanie znaków widocznych na ekranie. Interpreter jest w stanie wyświetlać też podpowiedzi na temat domykania nawiasów, dzięki czemu podczas programowania można uniknąć "oczywistych" błędów.
uLisp można uruchomić na Arduino UNO, a także na mikrokontrolerach ST oraz ESP. Decydujący wpływ przy wyborze mikrokontrolera ma tu wielkość dostępnej pamięci operacyjnej.
Przykładowy program migający diodą w tym języku wygląda następująco:
1 2 3 4 5 6 7 |
(defun b () (pinmode 13 t) (loop (digitalwrite 13 t) (delay 1000) (digitalwrite 13 nil) (delay 1000))) |
Warto zwrócić uwagę na ten projekt z kilku względów. Po pierwsze, jest to dość niestandardowe DIY jak na Arduino. Po drugie, uLisp umożliwia pisanie programów w języku interpretowanym na komputerach o słabszych zasobach sprzętowych, co może być przydatne (chociażby do nauki).
Szczegóły na temat Lisp Badge znajdują się na stronie projektu. Sam język uLisp doczekał się również rozbudowanej dokumentacji. Warto tam zajrzeć, jeśli nawet nie chcecie budować komputera do nauki tego języka (do testów wystarczy przecież Arduino UNO). Kto z Was spróbuje swoich sił z uLisp?
Tablet z kartonu na bazie Raspberry Pi za 60$!
Pamiętacie projekt ZeroPhone? Budowa telefonu to bardzo oryginalny pomysł. Jednak w czasach, gdy prawie każdy ma smartphona opisywany... Czytaj dalej »
To nie koniec, sprawdź również
Przeczytaj powiązane artykuły oraz aktualnie popularne wpisy lub losuj inny artykuł »
arduino, avr, interpretowany, lisp, programowanie
Trwa ładowanie komentarzy...