設為首頁收藏本站

圓創力科技.MakeBlock TW

 找回密碼
 立即註冊

QQ登錄

只需一步,快速開始

掃一掃,訪問微社區

查看: 11320|回復: 19

跑馬燈+呼吸燈=霹靂燈

  [複製鏈接]
magiccar 發表於 2014-10-3 01:00 | 顯示全部樓層 |閱讀模式

單向原始碼
  1. #define Speed         4        //Min = 1 ,Max = 5
  2. #define Long         180         //Min = 0 ,Max = 254

  3. byte Led[5] ={3,5,6,9,10};        //建立儲存LED接腳位置陣列
  4. int Br[5];                        //建立儲存LED亮度陣列
  5. byte i;

  6. //-----副程式區-----//
  7. int Br_dec(byte LED,int BR)
  8. {
  9.   analogWrite(LED,BR);                //對LED腳位輸出PWM信號
  10.   BR-=1;                        //並將值衰減一次後回傳
  11.   if(BR < 1) BR=0;
  12.   return BR;
  13. }

  14. void setup()
  15. {
  16.   for(i=0;i<5;i++) pinMode(Led[i], OUTPUT);
  17. }

  18. void loop()
  19. {
  20.   for(i=0;i<5;i++) Br[i] = 255;        //存入各LED點燈亮度值
  21.   i = 0;                        //預設開始點燈位置
  22.   do
  23.   {
  24.     Br[i] = Br_dec(Led[i],Br[i]);
  25.     if(i>0) Br[i-1] = Br_dec(Led[i-1],Br[i-1]);
  26.     if(i>1) Br[i-2] = Br_dec(Led[i-2],Br[i-2]);
  27.     if(i>2) Br[i-3] = Br_dec(Led[i-3],Br[i-3]);
  28.     if(i>3) Br[i-4] = Br_dec(Led[i-4],Br[i-4]);
  29.     if(Br[i]==Long && i<4) i++;        //判斷是否點亮下一顆燈
  30.     delay(6-Speed);                //設定延遲時間
  31.   }while(Br[4] > 0);                //判斷最後一個燈是否熄滅
  32.   delay(150);
  33. }
複製代碼


雙向來回原始碼再下面(要自己先想想再來看哦!)
遊客,如果您要查看本帖隱藏內容請回復




YITING 發表於 2018-7-21 02:52 | 顯示全部樓層
thanks
正好需要參考
frankkevin123 發表於 2018-6-18 20:52 | 顯示全部樓層
這讓我獲益良多~~感謝
JamesChang博皓 發表於 2014-10-18 00:09 | 顯示全部樓層
我用了個感覺蠻偷懶的方法來做成來回的樣子,就是
把LED針腳對應的陣列順序倒反XDDDD((因為真的不想動主程式了
附上Code
  1. #define Speed         4        //Min = 1 ,Max = 5
  2. #define Long         180         //Min = 0 ,Max = 254

  3. byte Led[3];        //不先儲存針腳位置
  4. int Br[3];                        
  5. byte i;

  6. //-----副程式區-----//
  7. int Br_dec(byte LED,int BR)
  8. {
  9.   analogWrite(LED,BR);               
  10.   BR-=1;                        
  11.   if(BR < 1) BR=0;
  12.   return BR;
  13. }

  14. void setup()
  15. {
  16.   for(i=0;i<3;i++) pinMode(Led[i], OUTPUT);
  17. }

  18. void loop()
  19. {
  20.   for(int n = 0; n <= 2; n++)Led[n] = n+9;//儲存針腳位置(9為1,10為2,11為3)
  21.   for(i=0;i<3;i++) Br[i] = 255;        
  22.   i = 0;                        
  23.   do
  24.   {
  25.     Br[i] = Br_dec(Led[i],Br[i]);
  26.     if(i>0) Br[i-1] = Br_dec(Led[i-1],Br[i-1]);
  27.     if(i>1) Br[i-2] = Br_dec(Led[i-2],Br[i-2]);
  28.     if(Br[i]==Long && i<2) i++;      
  29.     delay(6-Speed);               
  30.   }while(Br[2] > 0);               
  31.   delay(150);
  32.   
  33.   //回來囉~
複製代碼


點評

真是快又有效!  發表於 2014-10-19 21:38
JamesChang博皓 發表於 2014-10-17 23:56 | 顯示全部樓層
只加了兩行程式就搞定來回了!!^^
來回復看看周老師的想法...
kun 發表於 2015-1-12 03:02 | 顯示全部樓層
太棒了,真的想要學。
irpolo 發表於 2015-9-23 18:44 | 顯示全部樓層
終於找到霹靂燈ㄌ 讚啦
hengfeb 發表於 2015-11-29 20:08 | 顯示全部樓層
謝謝分享美好的程式
borstquc 發表於 2015-12-7 21:40 | 顯示全部樓層
謝謝無私分享你的程式碼
harry830626 發表於 2015-12-17 17:36 | 顯示全部樓層
謝謝分享好的程式。
chunxian 發表於 2018-4-9 02:41 | 顯示全部樓層
用過別的程式,不過折返時跑不順,想試試別種程式。
蘇格蘭 發表於 2018-5-1 13:54 | 顯示全部樓層
感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩
sia970376 發表於 2018-10-16 23:03 | 顯示全部樓層
thanks
正好需要參考
KU39DF 發表於 2018-10-17 00:36 | 顯示全部樓層
這讓我獲益良多~
太謝謝了
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

QQ|Archiver|手機版|小黑屋|圓創力科技有限公司 IOP Robotic Technology Co.,Ltd Tel: 07-3924582   

GMT+8, 2018-10-20 12:00 , Processed in 0.059030 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表