2025-10-12 23:19:57 [显示全部楼层]
17浏览
查看: 17|回复: 0

【行空板K10】Microbit wiki驱动舵机

[复制链接]
1、硬件K10
具体功能这里略过,详细请看连接。
https://www.dfrobot.com.cn/goods-4035.html

舵机
工作扭矩:1.6KG/Cm转速:0.12-0.13秒/60°使用温度:-30°C~+60°C
死区设定:5微秒
转动角度:360°左右各180
使用电压:3-7.2V
舵机类型:数码舵机


Microbit wiki电机板

电源电压:3.5~5.5V DC
数字输出电压:0V / 3.3V
模拟输出电压:0~3.3V DC
标准重力接口
微:位接口:9 (P0 P1 P2 P8 P12 P13 P14 P15 P16)
伺服接口 x 8
电机接口:直流电机 x 4 / 步进电机 x 2
尺寸:63x58mm / 2.48x2.28in



2、实物
【行空板K10】Microbit wiki驱动舵机图2


【行空板K10】Microbit wiki驱动舵机图1

【行空板K10】Microbit wiki驱动舵机图3
3、功能说明
系统架构设计
采用K10微控制器作为核心控制单元,通过I²C总线与NXP PCA9685PW芯片通信,实现16路舵机PWM信号输出。系统配置两个独立按键(KEY1/KEY2)作为触发输入,三色LED(红/绿/蓝)作为状态指示。

硬件连接方案

PCA9685模块:SCL接K10的I²C时钟引脚(如PTE0),SDA接数据引脚(如PTE1),VCC接3.3V电源
按键电路:KEY1接PTA12,KEY2接PTA13,配置为下降沿触发中断
LED指示:红灯接PTB0,绿灯接PTB1,蓝灯接PTB2,共阴极接地
Mind图形化实现步骤

I²C初始化:在"通信"模块中配置I²C0,设置时钟频率400kHz
PCA9685配置:
使用"I²C写入"模块发送0x00(MODE1)寄存器配置
设置PRESCALE值为0x7D(对应50Hz PWM频率)
启用ALLCALL模式(0x20写入MODE1)
按键中断处理:
创建两个中断服务程序(ISR)
KEY1按下时:调用"I²C写入"发送舵机1控制指令(LED1_ON_L=0x06,LED1_ON_H=0x00,LED1_OFF_L=0x20,LED1_OFF_H=0x00)
KEY2按下时:发送舵机2控制指令,同时点亮三色LED(PTB0/1/2置高)
舵机控制逻辑:
通过修改OFF寄存器值实现0°-180°角度控制
示例:90°中位对应脉冲宽度1500μs(寄存器值0x78)
状态指示设计

按键未触发时:LED熄灭
KEY1按下:红灯常亮,舵机1旋转至90°
KEY2按下:绿灯+蓝灯交替闪烁(500ms周期),舵机2执行往复摆动



4、代码
【行空板K10】Microbit wiki驱动舵机图4

  1. /*!
  2. * MindPlus
  3. * esp32s3bit
  4. *
  5. */
  6. #include "unihiker_k10.h"
  7. #include <Microbit_Motor.h>
  8. // 函数声明
  9. void onButtonBUnPressed();
  10. void onButtonAUnPressed();
  11. void onButtonBPressed();
  12. // 创建对象
  13. uint8_t        screen_dir=2;
  14. UNIHIKER_K10   k10;
  15. AHT20          aht20;
  16. Microbit_Motor motorbit;
  17. // 主程序开始
  18. void setup() {
  19.         k10.begin();
  20.         k10.initScreen(screen_dir);
  21.         k10.creatCanvas();
  22.         k10.buttonB->setUnPressedCallback(onButtonBUnPressed);
  23.         k10.buttonA->setUnPressedCallback(onButtonAUnPressed);
  24.         k10.buttonB->setPressedCallback(onButtonBPressed);
  25.         k10.setScreenBackground(0xFFFFFF);
  26.         k10.canvas->canvasText("SG90", 7, 0x0000FF);
  27.         k10.canvas->canvasText("全速旋转", 2, 0x33FFFF);
  28.         k10.canvas->canvasText(aht20.getData(AHT20::eAHT20TempC), 1, 0xFF0000);
  29.         k10.canvas->updateCanvas();
  30. }
  31. void loop() {
  32. }
  33. // 事件回调函数
  34. void onButtonBUnPressed() {
  35.         motorbit.servo(S1, 90);
  36.         k10.rgb->write(0, 0x0000FF);
  37. }
  38. void onButtonAUnPressed() {
  39.         motorbit.servo(S1, 180);
  40.         k10.rgb->write(0, 0x00FF00);
  41. }
  42. void onButtonBPressed() {
  43.         motorbit.servo(S1, 0);
  44.         k10.rgb->write(0, 0xFF0000);
  45. }
复制代码
5、视频
【行空板K10】Microbit wiki驱动舵机图5



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail