感謝回答 把LOW跟HIGH對調之後可以順利進行了 |
仔細想想,應該還有簡單的改法 就是保持原有程式和電路 然後在 A0 接一個 k 歐姆的電阻到地 這樣應該也可以 |
本帖最後由 超新手 於 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: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.