*本工程仅0标题部分为手写,下方图片为手动拍摄,原理图pcb手绘,其他内容均为AI生成
视频
https://www.bilibili.com/video/BV13NN3z7Efj/
使用豆包对话式AI+arduino形式生成的代码
对话:
https://www.doubao.com/thread/w59fa4306eb904aba
向AI描述硬件的具体步骤
1.描述使用的平台,例如:arduino,VS CODE,KEIL等
2.描述使用的主控芯片品牌和具体型号,例如:STM32F103C8T6,ESP32C3等
3.需要做什么产品,例如:本次工程的调速风扇
4.产品功能描述,以本工程举例:扭动电位器到最大,风扇转速最大,扭动电位器到最小,风扇转速最小,对应LED灯指示也随之变化,有正反开关,拨到一边是正转,另一边是反转。
5.需要特别注意的点让AI知道并特别注意,例如本工程的:正反转开关切换需要1秒停止两个输出脚PWM以免烧坏电机
6.描述输入口定义(IO脚,输入输出状态,上下拉,频率,协议等)。需要用户输入的传感器,按键,旋钮,编码器,摄像头,音频等对应到MCU的引脚上。例如本工程:旋钮控制快慢,旋钮输入ADC值;开关切换旋转方向,输入IO电平。
7.描述输出口定义(IO脚,输入输出状态,上下拉,频率,协议等)。需要输出给用户的LED灯,屏幕,数码管,提示音,又或者输出给其他器件的信号,IIC控制信号,IIS控制信号,SPI信息,PWM信息等。例如本工程:输出PWM给电机驱动芯片,电机就能旋转快慢,输入给电机驱动芯片不同的引脚就能进行正传反转。这一步对整个项目的架构和理解要求较高。
8.代码需要注意的事项或需要特别的代码架构,本工程AI提示需要注意LED闪烁快慢时间要使用非阻塞式闪烁,避免使用软件delay带来阻塞调速 / 开关检测
9.要求代码清晰备注。
编译烧录:
描述写的差不多以后即可生成第一次代码,生成出来可以不看AI的思考提示,先可以直接复制到开发工具里直接编译,可能会出现编译问题,也可能直接编译通过。
1.编译出问题可以告诉AI进行反馈debug,如果自己有经验也可以自行排除,本工程使用arduino平台较少遇到该问题,后续有其他AI工程使用KEIL的遇到该问题会教大家如何排除。
2.编译没有问题可以直接烧录进MCU看现象。
软件DEBUG:
1.烧录后仔细观察现象。
2.将现象描述清晰并且反馈给AI,AI会根据你的描述现象先排查软件问题,自己有经验也可以自行进行排查。
3.若多次反馈给AI后仍然有错误,则需要考虑是否是硬件问题
4.如果是硬件问题可以考虑软件使用其他方法代替,如果是硬伤没法代替则只能进行硬件飞线,拆换器件等操作
5.重新进行硬件描述的具体步骤、编译烧录、软件DEBUG迭代
- 转速调节:10KΩ 电位器无级调速,最小档位电机停转,最大档位转速最快
- 正反转切换:拨动开关实现风扇正反转切换,切换时自动停止输出 1 秒,保护电机和驱动芯片
- 转速指示:LED 灯以闪烁频率指示转速(无硬件 PWM 适配方案),转速越快闪烁频率越高,停转时 LED 常灭
- 硬件保护:换向时强制停止电机输出 1 秒,避免瞬间换向导致的电机 / 驱动芯片损坏

电路连
接
- 电位器需反接:拧到风速最大时 AD 值为 0,最小风速时 AD 值为 255
- 电机必须通过驱动模块连接,禁止直接接 CH552G IO 口
- LED 需串联 220Ω 限流电阻后再连接 P11 引脚
- 拨动开关未按下时为低电平(反转),按下时为高电平(正转)
- Arduino IDE 1.8.x 或更高版本
- CH55xDuino 核心库(安装教程:https://github.com/DeqingSun/ch55xduino)
- 打开 Arduino IDE,安装 CH55xDuino 核心库
- 选择开发板:
- 配置参数:
- 时钟:
- USB 设置:
- 上传方式:
- 上传代码到 CH552G 开发板
代码结构说明
├── fan.ino # 主程序文件
│ ├── setup() # 初始化引脚模式、变量
│ ├── loop() # 主循环(ADC采样、转向检测、电机控制、LED指示)
│ ├── setMotorSpeed() # 电机转速/方向控制函数
│ └── updateLedIndicator() # LED转速指示(闪烁频率控制)
- ADC 采样:读取 P豆包 大模型 教程32 引脚电位器值,反转后转换为 PWM 占空比(0-255)
- 转向检测:实时读取 P14 开关状态,检测到切换时停止电机输出 1 秒
- 电机控制:根据占空比和转向,控制 P31/P30 的 PWM 输出
- LED 指示:将转速值映射为闪烁间隔(20ms~500ms),非阻塞延时实现闪烁
发布者:Ai探索者,转载请注明出处:https://javaforall.net/271783.html原文链接:https://javaforall.net
