这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » [Let'sDo第3期]电子测光表过程帖+建立开发环境,测试各模块

共1条 1/1 1 跳转至

[Let'sDo第3期]电子测光表过程帖+建立开发环境,测试各模块

专家
2024-11-14 13:49:45     打赏

这一次的开发使用Python语言,在Thonny下进行开发。看Thonny网站,最新版本为4.1.6。我之前用过Thonny,不过版本是

3.3.13,应该时可以用的,就没有进行升级。

1、更新开发板固件

为了适应Python开发,需要更新ESP32S3开发板的固件。固件可以从下列地址下载:

https://circuitpython.org/board/adafruit_feather_esp32s3_tft/

下载时选择你喜欢的语言(编译文件时的提示信息用的语言)

图片1.png

下载后的文件:adafruit-circuitpython-adafruit_feather_esp32s3_tft-en_GB-9.2.0.uf2

将开发板用USB电缆接入电脑后,双击BOOT按键,等待板载TFT液晶显示以下画面

图片2.png

同时电脑上出现名为“FTHRS3BOOT ”的驱动器

图片3.png

 将前面下载的固件拷贝到这个驱动区中,等待完成后,开发板的TFT液晶上显示为:

图片4.png

表示刷新固件的处理完成。其中的“Hello World!”是code.py的运行结果。

2、安装必要的库

根据PPT文档,整个开发需要以下几个库支持,需要将文件拷贝到lib目录中。

图片7.png

图片8.png

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驱动库,可以实现正反转,就是准确度上的偏差挺大,需要仔细调节参数才行。

测试舵机.gif

测试代码:

// #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);
  }
}












共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]