LISP Badge:可以用uLisp编程的单板计算机

2020-07-05 12:54:34

Lisp徽章是一台独立的计算机,基于ATmega1284,有自己的显示器和键盘,您可以用uLisp编程:

您可以使用它来运行程序,这些程序通过I/O引脚与LED和按钮等组件接口,读取模拟输入,并通过I2C和SPI接口操作外部设备。它有一个灰度OLED显示屏,可提供8行42个字符,以及一个为Lisp优化的集成45键键盘。

键盘:集成45键键盘,提供uLisp所需的大小写字符、数字和符号。

EEPROM:1024Lisp单元(4096字节),允许您使用save-image保存Lisp工作区。

uLisp是Common Lisp的子集,具有122个Lisp函数和特殊形式。有关完整定义,请参阅uLisp语言参考。

整数是一系列数字,可以选择以";+";或";-";作为前缀。整数可以介于-32768和32767之间。您可以使用符号#x2a、#o52或#b101010输入十六进制、八进制或二进制的数字,所有这些数字都表示42。

用户定义的符号名称可以具有任意名称。任何不是整数的序列都可以用作符号;因此,例如,12a就是有效的符号。

函数和变量只有一个名称空间;换句话说,函数和变量不能使用相同的名称。

这些接口位于Lisp徽章板边缘的页眉。括号中的数字指的是Arduino PIN号:

四个使用模拟读数的模拟输入引脚:A0至A3(24至27)加上VCC和GND。

使用管脚模式、数字读取和数字写入的数字输入和输出:MOSI(5)、MISO(6)、SCK(7)、RX0(8)、TX0(9)、SCL(16)、SDA(17)和A0至A3(24至27)。

SCK(7)连接到前面板上的LED。这是一个模拟输出引脚,因此您可以改变LED的亮度。

Lisp Badge包含两个打印扩展名Plot和plot3d,旨在允许打印到灰度图形显示器。

生成绘图后,两个函数都会等待按Esc键,然后才会显示uLisp提示符。

每个函数都应该是一个参数(x坐标)的函数,并且将使用从0到255的每个x值来调用它。该函数应返回从0到63的y值。

(deffine()(let((X0)(Y2045))(lambda(N)n(incf x(/(*y16)163))(decf y(/(*x16)163))(+32(ash x-6)。

以下示例在单个绘图上每秒绘制一次模拟输入0至3上的电压。首先定义:

该函数应该是两个参数(x和y坐标)的函数,并且将使用从0到255的每个x值和从0到63的y值来调用它。该函数应返回要打印的灰度值,范围为0到15。

(defunp(Xy)(let((a(/(-x128)2))(b(-y32)(min(abs(-(logand(+(*a a)(*b b)(*a b)16)31)15))