A Raspberry Pi
GPIO
package for ECL
(Embedded Common Lisp), wrapped Mikem's BCM2835 library
This package provide a way to access Raspberry Pi
GPIO
with Common Lisp
, now only few functions, the full version will support later.
-
At first, you need to install
ECL
(OtherCommon Lisp
implemations will be supported later). -
Second, copy the
/libfile/libbcm2835.so
to your/usr/lib
if you have not one in it.
- Get the
bcm2835.lisp
git clone https://github.com/FreeBlues/Raspi-GPIO-ECL
- Run
ECL
scriptload-bcm2835.lisp
to load the package.
(load "load-bcm2835.lisp")
(rpi:bcm-version)
10048
(load "./examples/blink.lisp)
Functions can be used in ECL:
(rpi:bcm-version)
(rpi:bcm-init)
(rpi:gpio-fsel pin mode)
(rpi:gpio-write pin on)
(rpi:gpio-lev pin)
(rpi:gpio-set pin)
(rpi:gpio-clr pin)
(rpi:bcm-delay millis)
(rpi:bcm-delay-microseconds micros)
(rpi:bcm-close)
Parameters:
pin = rpi:RPI_GPIO_P1_11 or rpi:RPI_V2_GPIO_P1_11
mode = BCM2835_GPIO_FSEL_OUTP or
on = rpi:HIGH or rpi:LOW
millis: a number which type is unsighed-int in ECL
micros: a number which type is uint64 in ECL
http://www.airspayce.com/mikem/bcm2835
https://github.com/raspi-gpio-newlisp
https://gist.github.com/chomy/003deea83b5a13ad1ee3
用于树莓派
下操作GPIO
的一个ECL
库, 用ECL
封装了Mikem 的 BCM2835 库.
这个包提供了一种通过 Common Lisp
访问 树莓派2
下 GPIO
的方法, 可以在 ECL
的REPL
中直接操作树莓派
的GPIO
寄存器, 目前只导出少数几个函数用于验证, 后续将补全.
- 首先, 需要在你的
树莓派
(同时支持V1
和V2
)上安装好ECL
, 目前只支持ECL
, 对于其他Common Lisp
实现的支持将会在后续完成. - 其次, 需要在你的
树莓派
上安装BCM2835
库的动态版本(libbcm2835.so
), 不过鉴于该库体积很小, 所以本项目就把1.48
版的libbcm2835.so
集成进去了, 放在./libfile/
目录下, 可以直接使用.
- 获取
bcm2835.lisp
git clone https://github.com/FreeBlues/Raspi-GPIO-ECL
- 执行
ECL
脚本load-bcm2835.lisp
来加载包 (这个脚本做了这些工作: 编译bcm2835.lisp
得到文件bcm2835.fas
, 最后加载 "bcm2835.fas")
(load "load-bcm2835.lisp")
(rpi:bcm-version)
10048
(load "./examples/blink.lisp)
然后你就可以使用这些函数了
(rpi:bcm-version) ;;返回值为无符号整型
(rpi:bcm-init) ;;成功返回1, 失败返回0
(rpi:gpio-fsel pin mode) ;;返回值为空
(rpi:gpio-write pin on) ;;返回值为空
(rpi:gpio-lev pin) ;;返回值为8位整型
(rpi:gpio-set pin) ;;返回值为空
(rpi:gpio-clr pin) ;;返回值为
(rpi:bcm-delay millis) ;;返回值为空
(rpi:bcm-delay-microseconds micros) ;;返回值为空
(rpi:bcm-close) ;;成功返回1, 失败返回0
函数输入参数说明:
pin = 树莓派1使用形如 rpi:RPI_GPIO_P1_11, 树莓派2使用形如 rpi:RPI_V2_GPIO_P1_11
mode = BCM2835_GPIO_FSEL_OUTP
on = rpi:HIGH 或 rpi:LOW
millis: 数字, ECL 中的无符号整型
micros: 数字, ECL 中的无符号64位整型
http://www.airspayce.com/mikem/bcm2835