首页 > 其他分享 >单核无操作系统如何实现任务并行运行demo之ardiuno读取MPU6050进行oled显示和控制ws2812B灯阵模式显示

单核无操作系统如何实现任务并行运行demo之ardiuno读取MPU6050进行oled显示和控制ws2812B灯阵模式显示

时间:2023-03-16 12:33:03浏览次数:46  
标签:setPixelColor demo MPU6050 oled print Serial display WS2812B 255

实物演示​​视频请转向哔站​

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

相关文章

  • rabbitmq-demo
    demoConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。ConnectionF......
  • Quartz组件的搭建及实现任务调度demo
    1.基本环境配置<dependency>​<groupId>org.slf4j</groupId>​<artifactId>slf4j-log4j12</artifactId>​<version>1.7.25</version>​</dependency><d......
  • 一个demo学会java
    全栈工程师开发手册(作者:栾鹏)快捷链接:​java开发大全这篇demo较长,包含了java基本的内容,若不是出于校验自己java基础能力的朋友,建议按照上面的链接分章节学习。本demo包含了j......
  • Java 建造者模式/链式调用 简单Demo
    最近,公司同事要求我给他们讲一下RxJava,为了更清晰的说明其架构,.简单写了一个链式调用的小Demo,分享给大家/**作者:赵星海(CSDN-深海呐)*时间:2019年3月19日16:56:32*......
  • 修改node项目自动重启 | nodemon工具包
    1、为什么使用nodemon(1)在编写调试Node.js项目的时候,如果修改了项目的代码,则需要频繁的手动close掉,然后再重新启动,非常繁琐。现在,我们可以使用nodemon工具包这个工......
  • Java实现一个轻量的DAG任务调度demo
    DAG(DirectedAcyclicGraph,有向无环图)是指一个有向图,其中不包含任何环。在任务调度中,DAG被用来表示任务之间的依赖关系。一个任务的执行必须等待其依赖的任务完成之后才能......
  • Java实现一个轻量的跳表demo
    importjava.util.Random;publicclassSkipList{privatefinalstaticintMAX_LEVEL=16;privateNodehead=newNode(MAX_LEVEL,0);privateRa......
  • Spel表达demo
    packagecom.example.demo;importorg.junit.jupiter.api.Test;importorg.springframework.boot.test.context.SpringBootTest;importorg.springframework.context.......
  • 平衡车项目MPU6050编程感想
    0.发现延时函数没有用,延时1s,但是printf()的频率非常快,目前不知道原因,猜测与MPU6050的FIFO有关系。 1. 昨天读数据,同时读编码器和MPU6050的一个实验,如果编码器能读数,M......
  • typescript 接口demo
    https://www.runoob.com/typescript/ts-interface.html......