アルディーノのプログラムについて
アルディーノのプログラムについてです。
アルディーノのプログラムについてです。 現在はトグルスイッチをON、センサーOFFでモーターが動きだし、センサーがONになるとそこからプラスで3.2秒モーターが動きその後停止し、またセンサーがOFFになるとモーターが動き出すと言うプログラムの動作を確認出来ています。この動作にモーターとセンサーをもう一つ加え、同じ動作をさせたいです。トグルスイッチは共通で、モーターの動きは対応しているセンサーによって独立させたいです。そこでプログラムを作ったのですが、このプログラムだと片方ずつしかモーターが動きません
uint32_t time=3201;
byte dir=2;
byte pul=3;
byte dir2=8;
byte pul2=9;
byte tgl_sw=6;
byte sensor=7;
byte sensor2=10;
word wait_us=2500
;//2500us*2*200→フルステップで約1RPS
void setup() {
pinMode(dir,OUTPUT);
pinMode(pul,OUTPUT); digitalWrite(dir,HIGH);
pinMode(dir2,OUTPUT);
pinMode(pul2,OUTPUT);// digitalWrite(dir2,HIGH);
pinMode(tgl_sw,INPUT_PULLUP);//※LOWでON
pinMode(sensor,INPUT);
pinMode(sensor2,INPUT);//※ }
}
void loop() {
if(digitalRead(tgl_sw)==LOW && digitalRead(sensor)==HIGH)
delay(2000);
time=millis();
while(millis()-time<3200) {//センサがオンになってから1500msまで
if(digitalRead(tgl_sw))return;
digitalWrite(pul,HIGH);//回す
delayMicroseconds(wait_us);
digitalWrite(pul,LOW);
delayMicroseconds(wait_us);
if(digitalRead(sensor)==HIGH)time=millis();//センサがオフなら更新
}
{if(digitalRead(tgl_sw)==LOW && digitalRead(sensor2)==HIGH)
delay(2000);
time=millis();
while(millis()-time<3200) {//センサがオンになってから1500msまで
if(digitalRead(tgl_sw))return;
digitalWrite(pul2,HIGH);//回す
delayMicroseconds(wait_us);
digitalWrite(pul2,LOW);
delayMicroseconds(wait_us);
if(digitalRead(sensor2)==HIGH)time=millis();//センサがオフなら更新
//停止
}
}
}
修正点を教えていただけるとありがたいです。よろしくお願いします。
お礼
教えて頂き有難うございました。問題なく作動するようになりました。