单核无操作系统如何实现任务并行运行demo之ardiuno读取MPU6050进行oled显示和控制ws2812B灯阵模式显示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单核无操作系统如何实现任务并行运行demo之ardiuno读取MPU6050进行oled显示和控制ws2812B灯阵模式显示相关的知识,希望对你有一定的参考价值。
实物演示视频请转向哔站
1. 起源
一直想做一个多种模式显示的灯阵控制小玩意作为床头灯, 这样每次一个人在乌漆嘛黑的卧室刷手机时能够给自己带来一丝暖意!!! 此外在大约5年前玩单片机的时候正好有过一阵子玩ardiuno, 想来ardiuno的性能足够实现对灯阵的控制要求了.
于是乎我在哔站找了几个视频对于床头灯的DIY方案, 本次借鉴的是利用ESP8266控制ws2812B闪烁模式, 实现手机联网操作的方案. 因为不需要联网只需要手动控制即可, 所以选择了性能跟接口都更好的ardiuno nanoV3, 对于手动控制的想法, 我是想做一个方块, 对于不同的摆放, 会有不同的闪烁模式, 比如呼吸灯, 流水灯, 亮度控制灯.
本项目的核心点是对多任务并行实现, 因为ardiuno本身没操作系统来实现多任务功能, 对此本项目利用millis()
来实现多任务轮训的功能. 这是由于每条指令的执行时间近乎不计, 系统时间当部分被delay()
函数给消耗掉了(delay
函数是独占系统时间), 因此本项目摒弃delay
函数, 通过不断读取millis()
, 计算时间段, 完成对应任务的延时.
ps: 可能有人会刚, 并行任务不能使用定时器来控制么? 但是我在实践过程中确实发现定时器对于定时扫描MPU6050并将结果显示到OLED上会失效, 至于原因, 希望刚的人能够解释
并发编程
一 并发:是伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发,(并行也属于并发) 单核
二 并行:同时运行,只有具备多个cpu才能实现并行
单核下,可以利用多道技术,多个核,每个核也都可以利用多道技术(多道技术是针对单核而言的)
有四个核,六个任务,这样同一时间有四个任务被执行,假设分别被分配给了cpu1,cpu2,cpu3,cpu4
四 同步异步and阻塞非阻塞(重点)
以上是关于单核无操作系统如何实现任务并行运行demo之ardiuno读取MPU6050进行oled显示和控制ws2812B灯阵模式显示的主要内容,如果未能解决你的问题,请参考以下文章