前提・実現したいこと
Arduino Mega 2560の20番、21番ピンを用いて、タッチセンサを実装したいと考えています。
前提として、上記以外のデジタル入出力ピンは他の用途に使うため、利用不可です。
発生している問題・エラーメッセージ
Arduino Mega 2560の20番、21番ピンを用いた静電容量タッチが動作しない状況です。
下記プログラムでは、20番ピン側の抵抗の足をタッチしても、出力値が0のままになってしまいます。
※20番,21番ピン以外のデジタル入出力ピンを用いる場合は正しく動作します。
該当のソースコード
Arduino
1void setup(){ 2 //モニタリングのためシリアル通信開始 3 Serial.begin(9600); 4 //21番ピンをデジタル出力 5 pinMode(21,OUTPUT); 6 //20番ピンをデジタル入力 7 pinMode(20,INPUT); 8} 9 10void loop(){ 11 //静電容量変化量の変数を用意 12 int a=0; 13 //21番ピンをHIGHで出力 14 digitalWrite(21, HIGH); 15 //指が触れたとき20番ピンがHIGHになるまでをカウント 16 while (digitalRead(20)!=HIGH){ 17 //カウントする 18 a++; 19 } 20 delay(1); 21 //21番ピンをLOWにする 22 digitalWrite(21, LOW); 23 //モニタリング:値を出力 24 Serial.println(a); 25}
試したこと
- 上記プログラムが別のGPIOピンでは正常に動作することを確認(=回路,ロジック上の問題は無い)
- 別のArduino Mega 2560でも同様に動作しなかった(=Arduino Megaは故障していない)
補足情報
個人的には、20番、21番ピンがI2C用のピンであることが何か関係するのかもと考え、
色々調査したのですが、特に解決策を見つけることは出来ませんでした。
なお、上記プログラムにおいて参考にしたページはhttp://kousaku-kousaku.blogspot.com/2008/10/arduino.htmlです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/11 00:49
2018/10/11 01:05
2018/10/11 01:18