视频地址:
源码包链接:https://download.eeworld.com.cn/detail/%E7%99%BD%E6%97%A0%E5%B8%B8120/630311
任务4替换源码链接:https://download.eeworld.com.cn/detail/%E7%99%BD%E6%97%A0%E5%B8%B8120/630355
额外传感器展示代码:https://download.eeworld.com.cn/detail/%E7%99%BD%E6%97%A0%E5%B8%B8120/630354
扩展模块使用的是M5stack的LASER RX UNIT 和 LASER TX UNIT
模块官网地址:https://docs.m5stack.com/en/unit/laser-rx
该模块特点:
工作电压:5V(经测试3.3V也可以正常使用)
LASER.TX 与 LASER.RX 配对。
响应频率:140KHz ~205KHzT
程序平台:Arduino、UIFlow(blockly、python)
管脚映射及原理图如下:
模块本来用于通讯传输,但是我在microPython中没有找到解析串口发送数据的方法,本次仅当做普通的红外传感器使用
测试代码如下:
from machine import UART
import time
from machine import Pin, SoftI2C
import ssd1306
i2c = SoftI2C(scl=Pin(7), sda=Pin(6))
oled_width = 128
oled_height = 64
oled = ssd1306.SSD1306_I2C(oled_width, oled_height, i2c)
uart= UART(1,baudrate=9600, bits=8, parity=None, rx=20,tx=21, stop=1, timeout=1)
while True:
# 发送字符串数据
uart.write("111")
time.sleep(0.2) # 延时1秒
data = uart.read()
oled.fill(0)
oled.text("open",10,30)
if data:
print(data)
oled.fill(0)
oled.text("close",10,30)
oled.show()
time.sleep(0.2)
作用是检测通断,当激光传感器被遮挡以后OLED上会显示“open”,未被遮挡的话显示“close”
显示效果如图:
被遮挡时
未被遮挡时: