Robofun 機器人論壇
標題:
五段調光~求檢視BUG
[打印本頁]
作者:
firelsas
時間:
2018-5-4 07:58
標題:
五段調光~求檢視BUG
int sw=A0;
int led=3;
int changelight=50;
int light=0;
boolean swstatus=true;
void setup() {
pinMode(led,OUTPUT);
pinMode(sw,INPUT);
}
void loop() {
if (digitalRead(sw)==HIGH && swstatus==true){
light=light+changelight;
swstatus=false;
analogWrite (led,light);
if(light>255){
light=0;
}
}
else if(digitalRead(sw)==LOW && swstatus==false){
swstatus=true;
}
}
結果:LED一直自動變換,按扭無功能。
作者:
超新手
時間:
2018-5-4 08:26
本帖最後由 超新手 於 2018-5-4 08:57 編輯
1) 會不會是按鍵沒加提昇電阻? 改成
pinMode(sw,INPUT_PULLUP);
2) 另一個可能就是沒有處理按鍵彈跳問題
最簡單也是最笨的
的解法就是加個小 DELAY
else if(digitalRead(sw)==LOW && swstatus==false){
swstatus=true;
delay(200);
}
3) 還有一種可能....
很少看到按鍵是設計成 HIGH 動作....
會不會是你寫反了?
4) 這邊寫的不好, light加完應該先判斷是不是超過 255
再 analogWrite
light=light+changelight;
if(light>255){
light=0;
}
swstatus=false;
analogWrite (led,light);
作者:
firelsas
時間:
2018-5-4 14:53
感謝回答:
1、兩種上拉電阻都試過~失敗
2、加上delay~失敗
3、我的按鍵式常開型,想說壓下去通電作動(比較口語化)
衍伸疑問~HIGH作動跟LOW作動有什麼不同嗎(網路書籍找不到資料)
4、修正+學習
付上接線圖
目前狀況,LED保持恒亮,按鈕無功能
S__3235884.jpg
(308.12 KB, 下載次數: 419)
下載附件
2018-5-4 14:50 上傳
作者:
超新手
時間:
2018-5-4 15:12
本帖最後由 超新手 於 2018-5-4 16:05 編輯
如果沒看錯
你的按鍵接法有問題
應該是
A0 接按鍵一邊, 按鍵另一邊接地
常開型
所以按下去時, A0 變成接地(LOW)
平常沒按, 等於A0空接, 但空接狀態會不一定,
要不程式使用 INPUT_PULLUP, 要不加個提昇電阻
然後程式改成
1) pinMode(sw,
INPUT_PULLUP
)
2) if (digitalRead(sw)==
LOW
&& swstatus==true){
..........
}
else if(digitalRead(sw)==
HIGH
&& swstatus==false){
..........
}
作者:
超新手
時間:
2018-5-4 19:00
仔細想想,應該還有簡單的改法
就是保持原有程式和電路
然後在 A0 接一個 k 歐姆的電阻到地
這樣應該也可以
作者:
firelsas
時間:
2018-5-5 14:47
感謝回答
把LOW跟HIGH對調之後可以順利進行了
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2