int out1 = 3; //サーボ1=3PIN int out2 = 5; //サーボ2=5PIN int in1 = 8; //ポイント1スイッチ=8PIN int in2 = 9; //ポイント2スイッチ=9PIN void setup(){ //パルス出力ピンの設定 pinMode(out1,OUTPUT); pinMode(out2,OUTPUT); // デジタル入力のプルアップ抵抗を有効にする pinMode(in1, INPUT_PULLUP); pinMode(in2, INPUT_PULLUP); } void loop(){ int val1; int val2; if (digitalRead(in1) == HIGH) { val1 = 1750; //サーボ1のON位置設定 } else { val1 = 250; //サーボ1のOFF位置設定 } if (digitalRead(in2) == HIGH) { val2 = 1750; //サーボ2のON位置設定 } else { val2 = 250; //サーボ2のON位置設定 } //パルス:HIGHを出力 digitalWrite(out1,HIGH); digitalWrite(out2,HIGH); if (val2 < val1) { //サーボ2の方が早い delayMicroseconds(val2+500); digitalWrite(out2,LOW); //サーボ2を先に出力 delayMicroseconds(val1-val2); digitalWrite(out1,LOW); //サーボ1を後に出力 val2 = val1; //遅い方をセット } else { delayMicroseconds(val1+500); digitalWrite(out1,LOW); //サーボ1を先に出力 if (val1 < val2) { //サーボ1の方が早い(同時の場合は飛ばす) delayMicroseconds(val2-val1); } digitalWrite(out2,LOW); //サーボ2を後に出力 } //HIGHの継続時間を差引いて周期を20000usに調整 delayMicroseconds(10000-(val2+500)); delayMicroseconds(10000); }