arduinoに関する質問です
リレー1はモーターのオンオフ、
リレー2はモーターの正転を制御しているスイッチです。
1.右方向に移動
2.右端のリミットスイッチに当たると、一旦停止(2秒)、その後左に移動
3.左方向に移動
4.左側のリミットスイッチに当たると、一旦停止(2秒)、その後左に移動
を繰り返すようなプログラムを作りたいです。
いまのところ、押すと正逆を繰り返すプログラムはできたのですが、
押した後一旦停止して、と言うものが何故かできません、
stateが切り替わった後で一旦停止してあげても良いのですが、これをやるとおそらくこのdelayが何度も繰り返され続けてしまい、正確にスイッチを監視し続けることができないようです。
この場合、どのようにすればイメージ通りの動作ができるでしょうか。
今のところ作ったスケッチは以下のとおりです。
アドバイスお願いします…!
int val = 0;
int val2 = 0;
int state = 0;
int RELAY1 = 11;
int RELAY2 = 10;
int RELAY3 = 9;
int RELAY4 = 8;
int SW1 = 13;
int SW2 = 12;
//3端子スイッチのコモン端子をピンに接続。ほかはそれぞれgndとvccに接続
void setup() {
pinMode(RELAY1, OUTPUT);//オンオフ1
pinMode(RELAY2, OUTPUT);//正逆1
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
}
void loop() {
val = digitalRead(SW1);
val2 = digitalRead(SW2);
if ((val == HIGH) && (state == 0)) { //SW1が高い値を取ったら
state = 1 - state ;
}
if ((val2 == HIGH) && (state == 1)) {//SW2が高い値を取ったら
state = 1 - state ;
}
if (state == 1) {
digitalWrite(RELAY1, LOW);
delay(2000);
digitalWrite(RELAY1, HIGH);
digitalWrite(RELAY2, HIGH);
} else {
digitalWrite(RELAY1, LOW);
delay(2000);
digitalWrite(RELAY1, HIGH);
digitalWrite(RELAY2, HIGH);
}
}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。