Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz

五段調光~求檢視BUG

查看數: 2501 | 評論數: 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發佈時間: 2018-5-4 07:58

正文摘要:

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()  { &nb ...

回復

firelsas 發表於 2018-5-5 14:47:03
感謝回答
把LOW跟HIGH對調之後可以順利進行了
超新手 發表於 2018-5-4 19:00:51
仔細想想,應該還有簡單的改法
就是保持原有程式和電路
然後在 A0 接一個 k 歐姆的電阻到地
這樣應該也可以
超新手 發表於 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){
..........
}


超新手 發表於 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);

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

GMT+8, 2024-11-23 19:35 , Processed in 0.108632 second(s), 10 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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