这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » GroveCreatorKit套件+摇杆测评

共2条 1/1 1 跳转至

GroveCreatorKit套件+摇杆测评

助工
2026-09-06 19:58:55     打赏

GROVE CREATOR KIT- 20 IN 1 FUNCT Seeed Studio推出的一款高性价比、入门级电子学习套件。它基于Grove模块化生态系统,包含了20个功能各异的输入输出模块,旨在帮助初学者快速、轻松地学习电子知识和项目开发,避免了繁琐的接线工作。

该套件兼容ArduinoRaspberry Pi两大主流平台,并提供了详细的免费教程。可以通过简单的Grove接口(4-pin统一接口)连接各个模块,非常适合用于电子原理教学和快速原型验证。

image.png 

一、开关 / 按键类输入模块

 

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分别采集一个轴动作)的数据显示在屏幕并且以模拟信号形式发送到串口;硬件接线如图:

image.png 

摇动摇杆在绘图区有图形:

image.png 

以下是编写的代码:

# 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()

 

 



专家
2026-09-08 08:04:30     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

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