WS2812B七彩LED具有集成度高、使用方便等特点,但是800K的数据速率(IO变化速率高达2.4M),对单片机提出了较高的要求,通常是采用SPI+DMA方式驱动, 也有人采用汇编实现,但是要预先把数据转换为按bit存放,在LED级连数量较多的情况下,需要占用极多的存储空间。 在驱动WS2812B上花费了太多的时间,走了不少弯路,记录下来: 简易数字分析仪采样频率最高只有4M,即测量
WS2812自带5050灯珠,只需要一个IO口就能够驱动LED灯带,十分方便。但是,由于需要800K的PWM信号,对大部分单片机来说,压力非常大,通常单片机的硬件PWM只支持到100K左右。 好不容易在网上找了个例子,为了满足处理速度,预先将字节转化为比特,需要24字节的缓冲区,而且只能适用于1灯珠的情况。 http://www.ndiy.cn/forum.php?mod=viewthre
DS3231高精度时钟模块倒是又便宜又好用,SDA/SCL两个IO口就能搞定基本功能,不过在使用闹铃中断输出的时候遇到了问题,那就是闹铃中断只会输出一次,之后始终保持低电平。 这个问题数据手册上没有明说,在网上搜索了很久,一点信息都没有找到,只好自己折腾。 经过反复尝试,最终确认DS3231的闹铃中断输出正确使用方式如下:首先是初始化,设定闹铃时间和允许中断输出void DS3231_In
点阵屏还是比较耗电的,和显示的内容有关,在最小亮度的条件下,实测平均约130mA。为了节电,延长电池供电下的使用时间,引入了人体感应开关模块,在没有检测到人员活动的情况下关闭屏幕显示,单片机进入掉电模式。理论上是比较简单的,但是在实施的过程中遇到了不少的问题,记录下来与大家共享。问题1、供电电压 为了便于使用锂电池,系统使用3.3V电压,但是网购的人体感应开关模块是5V供电的。好在仔细看了模
MAX7219点阵模块可以用三根数据线实现8*8的LED点阵控制,而且不需要单片机参与扫描,使用非常方便。更为重要的是,它支持模块级联使用,在不增加IO数量的条件下,实现多模块的控制。因此在大屏时计中采用了3个MAX7219点阵模块组合成8*24的点阵屏。点阵的使用遇到一点小麻烦,是关于级联使用的,网络上查询到的代码每一块点阵的写入需要采用单独的函数,如://向第二片MAX7219写数据 &nbs
主要特点: 使用3片MAX7219点阵模块,组成8*24点阵屏,动态显示日期或时间; 人体感应,有人的时候才点亮点阵屏,超时后系统进入掉点模式,减少电源消耗,从而使电池供电成为可能; 使用语音播报模块SC5B10,实现整点报时; 不设置按键,通过串口控制,将来可以根据需要安装蓝牙或其他无线;(所需的操作主要是对时,不过走时很准,第一次设置之后不需要人工干预) 电池供电和无线充电,方便移动。 感应到有人活动时,启用显示屏,显示4秒时间,然后显示2秒日期,再回到时间模式,如此反复,当30秒内检测不到人员活动则进入掉电状态,关闭显示,但仍能整点报时。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号