跑馬燈+呼吸燈=霹靂燈
xkS2cbQetbg單向原始碼
#define Speed 4 //Min = 1 ,Max = 5
#define Long 180 //Min = 0 ,Max = 254
byte Led ={3,5,6,9,10}; //建立儲存LED接腳位置陣列
int Br; //建立儲存LED亮度陣列
byte i;
//-----副程式區-----//
int Br_dec(byte LED,int BR)
{
analogWrite(LED,BR); //對LED腳位輸出PWM信號
BR-=1; //並將值衰減一次後回傳
if(BR < 1) BR=0;
return BR;
}
void setup()
{
for(i=0;i<5;i++) pinMode(Led, OUTPUT);
}
void loop()
{
for(i=0;i<5;i++) Br = 255; //存入各LED點燈亮度值
i = 0; //預設開始點燈位置
do
{
Br = Br_dec(Led,Br);
if(i>0) Br = Br_dec(Led,Br);
if(i>1) Br = Br_dec(Led,Br);
if(i>2) Br = Br_dec(Led,Br);
if(i>3) Br = Br_dec(Led,Br);
if(Br==Long && i<4) i++; //判斷是否點亮下一顆燈
delay(6-Speed); //設定延遲時間
}while(Br > 0); //判斷最後一個燈是否熄滅
delay(150);
}
雙向來回原始碼再下面(要自己先想想再來看哦!)
**** Hidden Message *****
thanks
正好需要參考 這讓我獲益良多~~感謝 我用了個感覺蠻偷懶的方法來做成來回的樣子,就是
把LED針腳對應的陣列順序倒反XDDDD((因為真的不想動主程式了
附上Code
#define Speed 4 //Min = 1 ,Max = 5
#define Long 180 //Min = 0 ,Max = 254
byte Led; //不先儲存針腳位置
int Br;
byte i;
//-----副程式區-----//
int Br_dec(byte LED,int BR)
{
analogWrite(LED,BR);
BR-=1;
if(BR < 1) BR=0;
return BR;
}
void setup()
{
for(i=0;i<3;i++) pinMode(Led, OUTPUT);
}
void loop()
{
for(int n = 0; n <= 2; n++)Led = n+9;//儲存針腳位置(9為1,10為2,11為3)
for(i=0;i<3;i++) Br = 255;
i = 0;
do
{
Br = Br_dec(Led,Br);
if(i>0) Br = Br_dec(Led,Br);
if(i>1) Br = Br_dec(Led,Br);
if(Br==Long && i<2) i++;
delay(6-Speed);
}while(Br > 0);
delay(150);
//回來囉~
只加了兩行程式就搞定來回了!!^^
來回復看看周老師的想法... 太棒了,真的想要學。 let me see...... 終於找到霹靂燈ㄌ 讚啦 謝謝分享美好的程式 謝謝無私分享你的程式碼 謝謝分享好的程式。 謝謝分享 謝謝分享 謝謝分享 用過別的程式,不過折返時跑不順,想試試別種程式。 感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩感恩 趕下大大 thanks
正好需要參考:) 這讓我獲益良多~
太謝謝了 000000000000000000
頁:
[1]
2