这一次的开发使用Python语言,在Thonny下进行开发。看Thonny网站,最新版本为4.1.6。我之前用过Thonny,不过版本是
3.3.13,应该时可以用的,就没有进行升级。
1、更新开发板固件
为了适应Python开发,需要更新ESP32S3开发板的固件。固件可以从下列地址下载:
https://circuitpython.org/board/adafruit_feather_esp32s3_tft/
下载时选择你喜欢的语言(编译文件时的提示信息用的语言)
下载后的文件:adafruit-circuitpython-adafruit_feather_esp32s3_tft-en_GB-9.2.0.uf2
将开发板用USB电缆接入电脑后,双击BOOT按键,等待板载TFT液晶显示以下画面
同时电脑上出现名为“FTHRS3BOOT ”的驱动器
将前面下载的固件拷贝到这个驱动区中,等待完成后,开发板的TFT液晶上显示为:
表示刷新固件的处理完成。其中的“Hello World!”是code.py的运行结果。
2、安装必要的库
根据PPT文档,整个开发需要以下几个库支持,需要将文件拷贝到lib目录中。
3、验证器件
3.1 写段代码验证库是否可用,
import time
import board
import terminalio
import displayio
import adafruit_bh1750
import math
from digitalio import DigitalInOut, Direction, Pull
from adafruit_display_text import label
from adafruit_bh1750 import Resolution
print("Lib OK!")
led = DigitalInOut(board.LED)
led.direction = Direction.OUTPUT
sw = DigitalInOut(board.D2)
sw.direction = Direction.INPUT
sw.pull = Pull.UP
while True:
# if sw.value:
led.value = False
# else:
time.sleep(0.5)
led.value = True
time.sleep(0.5)
修改thonny的设置,
设置完成,点击运行图标,
开发板的一个红色LED(D13引脚)周期闪烁起来,说明OK了。
复位开发板,程序的正产运行结果,
3.2 测试按钮
现在加入按钮模块。在连接按钮模块之前,有必要了解ESP32S3这块开发板提供的接口,
这里我使用D5、D6作为按钮的输入口。
import time
import board
import terminalio
import displayio
import adafruit_bh1750
import math
from digitalio import DigitalInOut, Direction, Pull
from adafruit_display_text import label
from adafruit_bh1750 import Resolution
print("Lib OK!")
led = DigitalInOut(board.LED)
led.direction = Direction.OUTPUT
sw1 = DigitalInOut(board.D5)
sw1.direction = Direction.INPUT
sw1.pull = Pull.UP
sw2 = DigitalInOut(board.D6)
sw2.direction = Direction.INPUT
sw2.pull = Pull.UP
while True:
while not sw1.value:
led.value = True
time.sleep(0.5)
led.value = False
time.sleep(0.5)
while not sw2.value:
led.value = True
time.sleep(1)
led.value = False
time.sleep(1)
time.sleep(0.01)
按下D5对应的按钮,红色LED(D13)以0.5秒的周期闪烁;按下D6对应的按钮,红色LED(D13)以1秒的周期闪烁,实测OK。
3.3 测试BH1750
BH1750使用I2C接口,按照例程,使用板载的SCL和SDA接口。
import time
import board
import terminalio
import displayio
import adafruit_bh1750
import math
from digitalio import DigitalInOut, Direction, Pull
from adafruit_display_text import label
from adafruit_bh1750 import Resolution
print("Lib OK!")
#使用SCL和SDA连接BH1750
i2c=board.I2C();
sensor = adafruit_bh1750.BH1750(i2c);
while True:
print("%.2f Lux" % sensor.lux)
time.sleep(1)
3.4 测试舵机DF9GMS
DF9GMS是一款180度的微型舵机,内部高精度尼龙齿轮组,工作电压4.8V,实际测试3.3V也没问题,但因为电机工作电流较大,安全起见,最好使用独立电源给舵机供电。
简单在Arduino使用ESP8266测试舵机没有问题,使用Servo驱动库,可以实现正反转,就是准确度上的偏差挺大,需要仔细调节参数才行。
测试代码:
// #include "Servo.h"
// Servo servo;
// void setup() {
// // 使用D4作为控制口
// servo.attach(2);
// }
// void loop() {
// // 转90度
// servo.write(90);
// delay(2000);
// // 转-90度
// servo.write(180);
// delay(2000);
// }
#include <Servo.h>
Servo myservo;
int pos = 0;
void setup() {
myservo.attach(2);
}
void loop() {
// 从0度到90度,以1度为步长
for (pos = 0; pos <= 180; pos += 1) {
// 让伺服机构转到变量pos指定的位置
myservo.write(pos);
// 等待15毫秒,等待伺服机构到达位置
delay(15);
}
delay(500);
// 从90度到0度,以1度为步长
for (pos = 180; pos >= 0; pos -= 1) {
// 让伺服机构转到变量pos指定的位置
myservo.write(pos);
// 等待15毫秒,等待伺服机构到达位置
delay(15);
}
}