Robofun 機器人論壇

標題: Ten bar LED + Arduino 模仿霹靂遊俠李麥克 [打印本頁]

作者: babyfish0226    時間: 2008-1-7 21:30
標題: Ten bar LED + Arduino 模仿霹靂遊俠李麥克
後面的標題很白癡,看看就好

目標:模仿當年熱門影集霹靂遊俠內『夥計』的車頭LED動畫效果(好啦,只是左右移來移去的LED而已)。

註:本來是在測試8x8的Matirx LED,不過有點複雜試不太出來,改換Ten Bar LED才發現這比較簡單,我是電子幼幼班,能做到這樣的結果....感動耶

[youtube]R_X54fr1CjM[/youtube]

使用的Pin為2到11共10組

以下為程式碼
//============================================
int i=2;
int delaymseconds=20;

void setup(void){
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
}

void loop(void){
  
  for (i=2;i<=11;i++)
  {
   digitalWrite(i,HIGH);
   delay(delaymseconds);
   digitalWrite(i,LOW);
  }

  for (i=11;i>=2;i--)
  {
   digitalWrite(i,HIGH);
   delay(delayseconds);
     if (i>2)
     {
       digitalWrite(i,LOW);
     }
  }
  
  delay(1000);    //跑一輪後讓第一個LED燈暫停一下
}
//http://www.robofun.net
//============================================
作者: ayu    時間: 2008-1-8 07:33
原帖由 babyfish0226 於 2008-1-7 21:30 發表
本來是在測試8x8的Matirx LED,不過有點複雜試不太出來,改換Ten Bar LED才發現這比較簡單,我是電子幼幼班,能做到這樣的結果....感動耶

baby您好,

        真厲害,加油喔。
作者: uucww    時間: 2008-1-8 08:16
babyfish0226大大...恭喜測試成功 喔!!!!加油!!!加油!!
作者: omegaCD    時間: 2008-1-8 23:26
  1. #include "reg54.h"
  2. #define X_LED P2
  3. int acount,bcount;
  4. void delay(int count)
  5. {
  6. while(count--);
  7. }
  8. unsigned char XSwitch(unsigned char DataIn,int Time,int act,int bct,int max)
  9. {
  10. unsigned char temp_DI=DataIn;
  11. while(Time--)
  12. {
  13.   X_LED=DataIn^0xff;
  14.   while(bct<max)
  15.   {
  16.    act--;
  17.    bct++;
  18.    if(act>0)
  19.    {
  20.     if(temp_DI<0x80)
  21.      DataIn<<=1;
  22.     else
  23.      DataIn>>=1;
  24.     delay(act);
  25.     X_LED=DataIn^0xff;
  26.    }
  27.    if(bct<max)
  28.    {
  29.     if(temp_DI<0x80)
  30.      DataIn>>=1;
  31.     else
  32.      DataIn<<=1;
  33.     delay(bct);
  34.     X_LED=DataIn^0xff;
  35.    }
  36.   }
  37.   if(bct==max)
  38.   {
  39.    act=max;
  40.    bct=0;
  41.    if(temp_DI<0x80)
  42.     DataIn<<=1;
  43.    else
  44.     DataIn>>=1;
  45.   }
  46. }
  47. return(DataIn);
  48. }
  49. void main(void)
  50. {
  51. P1=0xff;
  52. acount=P1^0xff;
  53. X_LED=P1^0xff;
  54. delay(9000);
  55. delay(9000);
  56. bcount=0;
  57. while(1)
  58. {
  59.   P1=0xff;
  60.   acount=P1^0xff;
  61.   XSwitch(XSwitch(0x01,7,acount,bcount,acount),7,acount,bcount,acount);
  62. }
  63. }
複製代碼
這是我之前寫的漸變LED霹靂燈程式(8051使用),各位可以拿去玩玩:P
我是用keil C下去編譯的,如果是別的compiler或MCU,PORT定義(reg54.h)可能要自己改掉

裏面我有用P1輸入的8位元資料去做速度控制,輸出是P2(定義在第2行),請自行改成需要的PORT。
連接圖如下:(註:參考用,LED是共陽及接法,如LED電流要限制的話請自行加上排阻,這裡省略是因為白光LED可以直接吃5V的電壓)

影片檔: PiziLight_2.rar (1.28 MB, 下載次數: 2399)

[ 本帖最後由 omegaCD 於 2008-1-8 23:28 編輯 ]
作者: ayu    時間: 2008-1-8 23:31
好感謝兩位版主大大的分享,真是太感動了。 謝謝兩位大大了喔。




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2