Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 2500|回復: 5
打印 上一主題 下一主題

五段調光~求檢視BUG

[複製鏈接]
跳轉到指定樓層
1#
發表於 2018-5-4 07:58:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
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一直自動變換,按扭無功能。

2#
發表於 2018-5-4 08:26:51 | 只看該作者
本帖最後由 超新手 於 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);
3#
 樓主| 發表於 2018-5-4 14:53:20 | 只看該作者
感謝回答:
1、兩種上拉電阻都試過~失敗
2、加上delay~失敗
3、我的按鍵式常開型,想說壓下去通電作動(比較口語化)
     衍伸疑問~HIGH作動跟LOW作動有什麼不同嗎(網路書籍找不到資料)
4、修正+學習

付上接線圖
目前狀況,LED保持恒亮,按鈕無功能

S__3235884.jpg (308.12 KB, 下載次數: 418)

S__3235884.jpg
4#
發表於 2018-5-4 15:12:49 | 只看該作者
本帖最後由 超新手 於 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){
..........
}


5#
發表於 2018-5-4 19:00:51 | 只看該作者
仔細想想,應該還有簡單的改法
就是保持原有程式和電路
然後在 A0 接一個 k 歐姆的電阻到地
這樣應該也可以
6#
 樓主| 發表於 2018-5-5 14:47:03 | 只看該作者
感謝回答
把LOW跟HIGH對調之後可以順利進行了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-23 16:15 , Processed in 0.075060 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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