社区导航

 

搜索
查看: 305|回复: 1

[蓝牙BLE] bluenrg-1 真随机数实现节日彩灯效果

[复制链接]

5950

TA的帖子

9

TA的资源

版主

Rank: 6Rank: 6

发表于 2019-1-29 20:26 | 显示全部楼层 |阅读模式


使用bluenrg-1的RNG的真随机数功能生成随机色彩,再通过WS2812B彩灯显示
如果使用灯带再缩短更新延时效果会更好
生成随机数的代码,先等待数据准备好再读取数据,RNG模块一次可以读取一个16位的数据
  1. uint8_t rng_read(void)
  2. {  
  3.     uint8_t random;
  4.     /* Loop until the RNG Data Ready is SET */
  5.     while (RNG_GetFlagStatus() != SET);
  6.     random = (uint8_t)(RNG_GetValue() % 255);
  7.     return random;
  8. }
复制代码



WS2812B使用的是24位,所以每次读取8位,连续读取3次填充一颗LED灯珠
  1. void ws2812b_display(void)
  2. {
  3.   uint16_t i;  
  4.   uint32_t colors[WS2812B_COUNT];
  5.   RTC_DateTimeType RTC_DateTime;
  6.   rtc_get_time(&RTC_DateTime);
  7.   //清除源数据,绘制刻度
  8.   for(i=0;i<WS2812B_COUNT;i++)
  9.   {
  10.       colors[i] = rng_read() << 16 | rng_read() << 8 | rng_read();
  11.   }
  12.   if(index >= 24 || RTC_DateTime.Second == 0)index = 0;
  13.   //填充完一列8个点后显示      
  14.   IntColorsToWS2812BBytes(ws2812b_buffer,colors,WS2812B_COUNT);
  15.   DMASpi_Sending((uint32_t)ws2812b_buffer,WS2812B_COUNT * 9);
  16. }
复制代码



IMG_20190129_195056.jpg



http://training.eeworld.com.cn/course/4063/learn?preview=1#lesson/17835


http://training.eeworld.com.cn/course/4063/learn?preview=1#lesson/17836

工程文件
游客,如果您要查看本帖隐藏内容请回复


虾扯蛋


回复

使用道具 举报

32

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2019-1-29 23:02 | 显示全部楼层
厉害哟,没时间来做


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

Archiver|手机版|小黑屋|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2019-5-23 14:39 , Processed in 0.103021 second(s), 19 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表