プッシュボタンでArduinoプロジェクトを開発しています。ボタンを押した後に実行するアクションが必要です。問題は、A6ピンとA7ピンのボタンを使用するたびに、ボタンが物理的に押されることなくHIGHを受け取るような予期しない結果が生じることです。私がボタンでデジタルピンを使用している限り、コードは正常に動作します。Arduino:プッシュボタンでA6とA7を使用する際の問題
A6ピンとA7ピンを使用して問題が発生している可能性がありますか、またはこれらのピンを考慮する必要があります。
ありがとうございます!ここで
は私のコードです:
int buttonBack = A6;
int flagLeft, flagRight;
int eventBack;
int currentButtonStatus = 0;
unsigned long currentButtonStatusStart1;
unsigned long currentButtonStatusStart2;
unsigned long currentButtonStatusStart3;
const int delayFalse = 30;
const int delayLongSingleClick = 300;
const int delayDeltaDoubleClick = 200;
void setup() {
pinMode(buttonBack,INPUT);
}
void loop() {
int eventBack = changeButtonStatus();
if (eventBack > 0) {
if(eventBack == 1) { // single button press
flagLeft = 1; flagRight = 0;
// move motor to the left code goes here
}
if(eventBack == 4) {
// long button press
flagLeft = 0; flagRight = 1;
// move motor to the right code goes here
}
}
}
int changeButtonStatus() {
int event = 0;
int currentButtonClick = analogRead(buttonBack);
unsigned long timeButton = millis();
switch(currentButtonStatus) {
case 0:
if(currentButtonClick) {
currentButtonStatus = 1;
currentButtonStatusStart1 = millis();
} else {
}
break;
case 1:
if(currentButtonClick) {
if(timeButton - currentButtonStatusStart1 >= delayLongSingleClick) {
event = 3;
}
} else {
if(timeButton - currentButtonStatusStart1 < delayFalse) {
currentButtonStatus = 0;
event = 0;
} else if(timeButton - currentButtonStatusStart1 < delayLongSingleClick) {
currentButtonStatus = 2;
currentButtonStatusStart2 = millis();
} else {
currentButtonStatus = 0;
event = 4;
}
}
break;
case 2:
if(currentButtonClick) {
if(timeButton - currentButtonStatusStart2 < delayFalse) {
currentButtonStatus = 1;
} else {
currentButtonStatus = 3;
currentButtonStatusStart3 = millis();
}
} else {
if(timeButton - currentButtonStatusStart2 > delayDeltaDoubleClick) {
currentButtonStatus = 0;
event = 1;
}
}
break;
case 3:
if(currentButtonClick) {
} else {
if(timeButton - currentButtonStatusStart3 < delayFalse) {
} else {
event = 2;
currentButtonStatus = 0;
}
}
break;
}
return event;
}
ここにコードを記入してください。いくつかの努力を示す。 – Billa
質問のある投稿の下にコードを追加しました –