想在原有的项目上加上一个呼吸灯怎么做才不影响原程序-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2845|回复: 7

[未解决] 想在原有的项目上加上一个呼吸灯怎么做才不影响原程序

[复制链接]
发表于 2021-6-11 11:54 | 显示全部楼层 |阅读模式
如题,想在原来的程序上加上一个呼吸灯,但是程序中的delay会影响到程序的其他部分,想问问大佬们有没有好方法解决这个问题
微信图片编辑_20210611115343.jpg
发表于 2021-6-13 20:23 | 显示全部楼层
sjdynake 发表于 2021-6-11 15:51
加上灯实现呼吸效果,就是怕delay影响其他程序,发的这个就是参考

給你一段我前陣子做的呼吸燈程序


  1. //以系統時鐘進行呼吸燈點燈控制程式(多工) 1~20漸弱;21~27維持;28~47漸強;48~54維持
  2. //呼吸燈開啟,漸增/漸減各20段+維持亮/滅各7段=共54段
  3. B_COUNTER = int( (millis()-BREATHE_START_TIME)/B_SPEED );   //以運作時間計算步驟數

  4. if ( B_COUNTER <= 20 )                  //1~20步驟(漸弱)
  5.         analogWrite( BREATHE, (20-B_COUNTER)*12 );
  6. else
  7. {
  8.         if ( B_COUNTER <= 27 )              //21~27步驟(維持最暗)
  9.                 analogWrite( BREATHE, 0 );
  10.         else
  11.         {
  12.                 if ( B_COUNTER <= 47 )          //28~47步驟(漸強)
  13.                         analogWrite( BREATHE, (B_COUNTER-27)*12 );
  14.                 else
  15.                 {
  16.                         if ( B_COUNTER <= 54 )      //48~54步驟(維持最亮)
  17.                                 analogWrite( BREATHE, 255 );
  18.                         else
  19.                                 BREATHE_START_TIME = millis();  //全部步驟執行完後復歸,重新計時
  20.                 }
  21.         }
  22. }
复制代码

BREATHE 定義呼吸燈的 I/O PIN,需支援 PWM 功能
B_SPEED 定義呼吸燈的變化速度,定義 100=100ms/STEP
B_COUNTER 是個 int 型式的計數器,用來計算呼吸燈的 STEP 值
BREATHE_START_TIME 記錄呼吸燈啟動的時間,可於 setup() 中先設定初始值=millis(),型式 unsigned long
每一個 STEP 的 PWM 變化值為 12 的倍數,最暗 0、最亮 255

其他就讓系統時間 millis() 去決定 B_COUNTER 值、該做什麼控制,就有呼吸燈效果了,
總的來說這個呼吸燈是屬於速度快的類型 ^^
如果覺得不滿意,可自己調整 SPEED 值、PWM變化值或步驟數(含反應程序)
发表于 2021-6-11 15:33 | 显示全部楼层
你的意思是,还想在加一个灯实现呼吸效果吗?还是想在你本来的程序上,加上你贴图的这个程序?
 楼主| 发表于 2021-6-11 15:51 | 显示全部楼层
int_i 发表于 2021-6-11 15:33
你的意思是,还想在加一个灯实现呼吸效果吗?还是想在你本来的程序上,加上你贴图的这个程序? ...

加上灯实现呼吸效果,就是怕delay影响其他程序,发的这个就是参考
发表于 2021-6-11 16:44 | 显示全部楼层
那你得发你的程序。或者用定时器
发表于 2021-6-12 16:19 | 显示全部楼层
使用rtos,或者scoop
发表于 2021-6-13 19:14 | 显示全部楼层
millis() 函数了解一下
 楼主| 发表于 2021-6-16 10:54 | 显示全部楼层
shouzama 发表于 2021-6-13 20:23
給你一段我前陣子做的呼吸燈程序

get!٩( 'ω' )و 感谢大佬
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 03:56 , Processed in 0.076856 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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