GROVE CREATOR KIT- 20 IN 1 FUNCT 是Seeed Studio推出的一款高性价比、入门级电子学习套件。它基于Grove模块化生态系统,包含了20个功能各异的输入输出模块,旨在帮助初学者快速、轻松地学习电子知识和项目开发,避免了繁琐的接线工作。
该套件兼容Arduino和Raspberry Pi两大主流平台,并提供了详细的免费教程。可以通过简单的Grove接口(4-pin统一接口)连接各个模块,非常适合用于电子原理教学和快速原型验证。
一、开关 / 按键类输入模块
1. Grove - Button 轻触按键
2. Grove - Switch (P) 拨动开关
3. Grove - Tilt Switch 倾斜开关
4. Grove - Magnetic Switch 磁控开关
二、环境检测传感器
1. Grove - Line Finder v1.1 循迹传感器
2. Grove - Temperature Sensor 温度传感器
3. Grove - Water Sensor 水位 / 水滴传感器
4. Grove - Sound Sensor 声音检测传感器
5. Grove - Light Sensor v1.2 光敏光线传感器
6. Grove - Vibration Sensor (SW-420) 震动传感器
7. Grove - Temperature & Humidity Sensor (DHT11) 温湿度传感器
三、模拟输入控制模块
1. Grove - Rotary Angle Sensor 旋转电位器
2. Grove - Thumb Joystick 双轴摇杆
四、声光执行器模块
1. Grove - Buzzer 有源蜂鸣器
2. Grove - Relay 继电器模块
3. Grove - Green LED 绿色LED灯
4. Grove - Red LED 红色LED灯
5. Grove - Blue LED 蓝色LED灯
6. Multi Color Flash LED (5mm) 七彩快闪LED
7. Grove - Chainable RGB LED V2.0 可串联RGB灯
本次测评完成Grove - Thumb Joystick 双轴摇杆测试,因为没有指定硬件开发板所以使用了esp32s3开发板,目的是将摇杆xy轴(A0 A1分别采集一个轴动作)的数据显示在屏幕并且以模拟信号形式发送到串口;硬件接线如图:
摇动摇杆在绘图区有图形:
以下是编写的代码:
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT
"""
基于官方Display and Display Bus规范实现的双电位器控制圆形拖动动画
兼容CircuitPython 10及以上版本
"""
import gc
import time
import board
import displayio
import digitalio
from adafruit_display_shapes.circle import Circle
from analogio import AnalogIn
# 直接获取板载预配置显示屏(带内置屏的开发板无需手动配置总线和驱动)
display = board.DISPLAY
# 配置板载LED用于边缘碰撞状态提示
led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT
# 创建显示根容器
main_group = displayio.Group()
# 创建全屏纯白色背景
color_bitmap = displayio.Bitmap(display.width, display.height, 1)
color_palette = displayio.Palette(1)
color_palette[0] = 0xFFFFFF
bg_sprite = displayio.TileGrid(color_bitmap, pixel_shader=color_palette, x=0, y=0)
main_group.append(bg_sprite)
# 定义绿色填充、紫色描边的圆形参数
circle_radius = 10
# 初始位置自动设为屏幕中心,避免启动时图形在边界外不可见
circle = Circle(display.width//2, display.height//2, circle_radius,
fill=0x00FF00, outline=0xFF00FF)
main_group.append(circle)
# 初始化两个ADC引脚,A0对应X轴电位器、A1对应Y轴电位器
adc_x = AnalogIn(board.A0)
adc_y = AnalogIn(board.A1)
# 将显示内容挂载到屏幕,完成画面渲染
display.root_group = main_group
# 主运行循环
while True:
# 将ADC 0~65535原始数值映射到屏幕有效坐标范围
# 限制数值最小为圆形半径、最大为屏幕宽高减去半径,避免圆形被屏幕边缘截断
max_x_pos = display.width - circle_radius
raw_x = adc_x.value
value_x = max(circle_radius, min(raw_x * max_x_pos // 65535, max_x_pos))
circle.x = value_x
max_y_pos = display.height - circle_radius
raw_y = adc_y.value
value_y = max(circle_radius, min(raw_y * max_y_pos // 65535, max_y_pos))
circle.y = value_y
# 以元组格式输出坐标数据,适配Mu编辑器绘图器可视化观测
print((value_x, value_y))
# 边界碰撞检测与LED状态提示
# 圆形触碰屏幕最左侧时熄灭LED
if circle.x <= circle_radius + 2:
led.value = False
time.sleep(0.5)
# 圆形触碰屏幕最顶部时点亮LED
if circle.y <= circle_radius + 2:
led.value = True
time.sleep(0.5)
time.sleep(0.02)
gc.collect()
我要赚赏金
