суббота, 25 июля 2015 г.

Моргаем светодиодами на Raspberry PI

В общем, расчехлил я свою малинку и решил что-нибудь поделать. Первым делом, собрал там ccl, потом sbcl. Раньше sbcl собрать было нельзя. Теперь можно. Даже, вроде, работает.
В общем, брат собрался делать умный курятник, нашёптываю ему, что нужен lisp, ибо тру и всё такое. Он что-то пока посматривает на питон. :-\ 
Ну да ладно, теперь по порядку. Дабы чем-то управлять, нужно уметь подавать на выходы. А выходы можно смастерить на GPIO (General Purpose Input Output). А управлять этим GPIO будем... Нет, не из С, а именно из лиспа, в данном случае sbcl.
Собственно, заморачиваться не стал всяким FFI, ибо у нас есть sysfs интерфейс для GPIO. Собственно, по этой документашке накидана на скорую руку простейшая библиотека. Не шедевр, конечно, но функции выполняет. Потом причешу, думаю. Итак, пользовательский код:
(ql:quickload "cl-gpio-sysfs")
(gpio-sysfs:initialize-pin 27 :out 0)

;;; Посылаем 1 на выход порта, светодиод горит
(gpio-sysfs:write-pin 27 1)

;;; Посылаем 0 на выход порта, светодиод гаснет
(gpio-sysfs:write-pin 27 0)

(gpio-sysfs:shutdown-pin  27)
(quit)  


Перед запуском нашу библиотеку нужно забрать в quicklisp/local-projects. Ну а перед этим установить quicklisp.
Собственно, как этот светодиод горит, можно даже посмотреть: