实物演示视频请转向哔站
1. 起源
一直想做一个多种模式显示的灯阵控制小玩意作为床头灯, 这样每次一个人在乌漆嘛黑的卧室刷手机时能够给自己带来一丝暖意!!! 此外在大约5年前玩单片机的时候正好有过一阵子玩ardiuno, 想来ardiuno的性能足够实现对灯阵的控制要求了.
于是乎我在哔站找了几个视频对于床头灯的DIY方案, 本次借鉴的是利用ESP8266控制ws2812B闪烁模式, 实现手机联网操作的方案. 因为不需要联网只需要手动控制即可, 所以选择了性能跟接口都更好的ardiuno nanoV3, 对于手动控制的想法, 我是想做一个方块, 对于不同的摆放, 会有不同的闪烁模式, 比如呼吸灯, 流水灯, 亮度控制灯.
本项目的核心点是对多任务并行实现, 因为ardiuno本身没操作系统来实现多任务功能, 对此本项目利用millis()
来实现多任务轮训的功能. 这是由于每条指令的执行时间近乎不计, 系统时间当部分被delay()
函数给消耗掉了(delay
函数是独占系统时间), 因此本项目摒弃delay
函数, 通过不断读取millis()
, 计算时间段, 完成对应任务的延时.
ps: 可能有人会刚, 并行任务不能使用定时器来控制么? 但是我在实践过程中确实发现定时器对于定时扫描MPU6050并将结果显示到OLED上会失效, 至于原因, 希望刚的人能够解释
标签:setPixelColor,demo,MPU6050,oled,print,Serial,display,WS2812B,255 From: https://blog.51cto.com/u_15888063/6123609