文章目录

之前我做了个 AI 生成外形的复古小电脑,并且同样使用 AI 生成了 3D 模型,塞了 ESP32-S3 开发板 + 0.96 英寸 OLED 进去,顺手做了个能播放《Bad Apple》的固件(见《3 步从 nana banana AI 生成的复古小电脑到真实桌面小玩具》)。

最近在 GitHub 上看到一个 ArduinoBASIC 项目,一个还算完整的 BASIC 语言解释器,支持 BASIC 语言中常用的特性,这不刚好用来把这个复古小电脑变成真的可以写代码的小电脑吗 😃。
PS. 当年比尔·盖茨和保罗·艾伦为 Altair 8800 写 BASIC 时,机器 CPU 是 2 MHz 的 Intel 8080,只有 4 KB RAM。对比之下,ESP32-S3 的性能强太多了。
来跑个 1 加到 100
ArduinoBASIC 在 ESP32-S3 上,实际计算过程还是比较快的,如果不输出中间过程,几乎相当于瞬间出结果,但是估计原来项目中写屏相关的代码没有特别优化性能,导致有屏幕输出的时候,性能下降得厉害。
PS. 手机拍摄的时候由于刷新率和快门时间的关系,显示屏有种老 CRT 显示器的感觉了 🙈。
测试代码
10 sum=0
20 FOR i = 1 TO 100
30 sum=sum+i
40 PRINT "1+..";i;"=";sum
50 NEXT i
视频
ArduinoBASIC 项目
项目地址:https://github.com/robinhedwards/ArduinoBASIC
项目介绍:
A complete BASIC interpreter for the Arduino, using a PS/2 keyboard, and SPI OLED screen. The BASIC supports almost all the usual features, with float and string variables, multi-dimensional arrays, FOR-NEXT, GOSUB-RETURN, etc.

原作者是用了 PS/2 键盘、SPI 接口的 0.96 寸 OLED 屏幕,并且是用 EEPROM 来保存用户程序,可能是因为作者写这个非常久远了,10 年前的项目,另外就是基于 Arduino UNO 之类的开发板,本身资源相当有限。
我 clone 下来之后,直接一句话让 AI 把它转换成了基于 ESP32-S3 + Arduino 的项目,这样就可以使用 I2C 的 OLED 和 USB 键盘了,毕竟 ESP32-S3 直接支持 USB Host。
不得不说在写这种代码的能力上,AI 还是相当好用的,做个移植什么的工作,借助于 AI,可以极大地提升效率。
另外因为 ESP32-S3-Zero 开发板的 USB Type-C 接口用于连接键盘,所以需要额外一个转接板,添加一个 USB Type-C 接口来供电,不过这个在之前做复古小电脑的时候已经考虑过了,这里就直接用了。
硬件操作 PIN、PINMODE
这个 ArduinoBASIC 项目中,还有增加以下几个对 GPIO 操作的函数:
- PIN pinNum, value (0 = low, non-zero = high)
- PINMODE pinNum, mode ( 0 = input, 1 = output)
- PINREAD(pin) - see Arduino digitalRead()
- ANALOGRD(pin) - see Arduino analogRead()
理论上通过这几个函数,也可以实现一些简单的硬件操作能力,读取个传感器什么的?或者至少可以控制 LED 来实现个流水灯吧~
不过我之前画的转接板并没有预留这些接口,就懒得写代码玩了,不过之前是测试了 GPIO 来控制 LED 是没有问题的。
就这样吧,桌上继续多一个吃灰的小玩具了~

0 条评论。