イノッチの鉄道模型ブログ

日常生活の中のトピックスを気ままに書きます。鉄道模型製作や畑作業が中心です。
これまで製作した鉄道模型作品は、ホームページ「イノッチの鉄道模型」inoyoshio.jimdo.comに載せていますので、こちらもよかったらみてください。

Arduino 2往復自動運転で??

やっぱりうまくいきません。oomoriさん、rtmrwさんから貴重なアドバイスをいただきながら、この正月、テスト回路で「変数」を使ったスケッチをいろいろ検討しましたが、一部の読者の方々には深入り過ぎてたいへん失礼と思いつつ、なんとか自分のものにしたい気持ちがあり、今回ブログ更新する次第です。


本来、2軌道にそれぞれれのArduinoでそtれぞれの車両を2往復走らせ、パラ運転させようと思っています。そのために1軌道に2往復、をまず実験しているのですが、最後の終了が自動でできないのです。「変数」と、if文、while文を使っていろいろ試しているのですが、順番通りにランプが点いてくれなかったり途中で止まったり‥。


これがテストの実装です。リード線を所定部分に順番通りタッチさせることでランプが交互に点き、スケッチが正しいかの確認をしています


以下は、「i f 文」を基本にして作った未完のスケッチです。「変数」はまだ入れてない状態です。
void setup() {                   ⇦この下に int nikaime;
 pinMode(2, INPUT);//スタートPB     
 pinMode(3, INPUT);//正送
 pinMode(4, INPUT);//逆走
 pinMode(8, OUTPUT);//逆走ランプ
 pinMode(9, OUTPUT); //
 pinMode(10, OUTPUT); //正走ランプ
 pinMode(11, OUTPUT); //
 digitalWrite(2, LOW);
 digitalWrite(3, LOW);
 digitalWrite(4, LOW);
 digitalWrite(8, LOW);
 digitalWrite(9, LOW);
 digitalWrite(10, LOW);
 digitalWrite(11, LOW);
}
void loop() {                                                           ⇦この下に  nikaime=0;
 if(digitalRead(2)==HIGH){//スタート信号                                   
  delay(1000);
  digitalWrite(10, HIGH);//正走開始
  digitalWrite(11, LOW);
  delay(1000);
 }
 if(digitalRead(3)==HIGH){ //B停止と逆走信号
  delay(1000);
  digitalWrite(10, LOW);//Bで停止          
  digitalWrite(11, LOW);
  delay(1000);
  digitalWrite(8, HIGH);//逆走開始
  digitalWrite(9, LOW);
  delay(1000);
 }
 if(digitalRead(4)==HIGH){ //A停止と再正走信号
  delay(1000);
  digitalWrite(8, LOW);//Aで停止
  digitalWrite(9, LOW);
  delay(1000);
  digitalWrite(10, HIGH); //再正走開始
  digitalWrite(11, LOW); //
  delay(1000);
 }                         ⇦この下にnikaime=1;
                                                                                                              if(nikaime==1){
if(digitalRead(3)==HIGH){ //B停止と再逆走信号         
  delay(1000);
  digitalWrite(10, LOW);//Bで停止 
  digitalWrite(11, LOW);
  delay(1000);
  digitalWrite(8, HIGH);//再逆走開始
  digitalWrite(9, LOW);
  delay(1000);
 }
 if(digitalRead(4)==HIGH){ //終了信号
  delay(1000);
  digitalWrite(8, LOW);//終了
  digitalWrite(9, LOW);
  digitalWrite(10, LOW);
  digitalWrite(11, LOW);
  delay(1000);
 }                                                                                         ⇦この下に  }
}                                nikaime=0;


以上の未完スケッチに、右側にある文を挿入したり、段を変えて入れたり、while文をいろいろ試したりしましたが、2往復運転で終了するにまで至っておりません。「変数」やシステム構成などイマイチです。もう少しヒントをいただけければ幸いです。このたびは特定の方々にお願いするブログになってしまい、たいへん失礼な内容をお許しください。

×

非ログインユーザーとして返信する