質問: 1) { digitalWrite(RELAY1, LOW); delay(2000); digitalWrite(RELAY1, HIGH); digitalWrite(RELAY2, HIGH); } else { digitalWrite(RELAY1, LOW); delay(2000); digitalWrite(RELAY1, HIGH); digitalWrite(RELAY2, HIGH); } }
回答: > > 1.右方向に移動 > > 2.右端のリミットスイッチに当たると、一旦停止(2秒)、その後左に移動 > > 3.左方向に移動 > > 4.左側のリミットスイッチに当たると、一旦停止(2秒)、その後左に移動 > > を繰り返すようなプログラムを作りたいです。 > > > 恐らく > > 4.左側のリミットスイッチに当たると、一旦停止(2秒)、その後左に移動 > > > は右側に移動の間違いかと。(他にも色々と間違いと無駄な表記が有りますのでシンプルに) では実際に簡単なプログラムでは。 ``` #define RELAY1 11 #define RELAY2 10 #define SW1 13 #define SW2 12 void setup(){ pinMode(RELAY1,OUTPUT); digitalWrite(RELAY1,LOW); pinMode(RELAY2,OUTPUT); digitalWrite(RELAY2,LOW); pinMode(SW1,INPUT); pinMode(SW2,INPUT); } void loop(){ if(digitalRead(SW1)) // 恐らく右左のどちらかだけど動作次第で入れ替える { digitalWrite(RELAY2,LOW); // 正逆の方向 digitalWrite(RELAY1,LOW); sleep(2000); digitalWrite(RELAY1,HIGH); // 動作開始 sleep(5); // リミットスイッチが離れるインターバルとして } if(digitalRead(SW2)) { digitalWrite(RELAY2,HIGH); // 正逆の方向 digitalWrite(RELAY1,LOW); sleep(2000); digitalWrite(RELAY1,HIGH); // 動作開始 sleep(5); // リミットスイッチが離れるインターバルとして } } ``` これで一応動作するかと。