2018年5月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

ブログ村

  • ブログ村

鉄道模型

無料ブログはココログ

最近のトラックバック

鉄道模型(モジュール製作)

2018年5月21日 (月)

追加LED表示パネル 表示動作の確認

追加LED表示パネルの配線がほぼ完了しました。

配線が完了したので、テストしてみました。

一応、想定通りの動きをしています。

追加LED表示パネルは、モジュール付近に設置し、ポイントが切り替わる様子がわかるようにしようと考えています。

これで、ポイント切り替えのシステムは、ほぼ完成のつもりです。

と言いつつも、まだこのような状態で、まだまだ未完成です。

20180521_225507

20180521_225524


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村


2018年5月20日 (日)

追加LED表示パネル用にスケッチを変更

追加LED表示パネルを点灯させるスケッチを作成しています。

まずは、ブレッドボードにLEDを8個並べて、LEDを点灯させるように変更します。

元の表示パネルは、13個のLEDで構成されています。
そして、全てのLEDに個別にデジタルピンを割り当てています。

追加LED表示パネルは、デジタルピン8本で、12個のLEDを点灯させます。


20180520_010238

デジタルピンを8本捻出できるかが心配でしたが、未使用の2~9を割り当てて、LEDが点灯することを確認しました。

しかし、これだけでは、何となく味気ないので、切り替わる際にもう少し目立つ動き(ギミック)が欲しいなあと考え、経路を切り替える際に、切り替える経路のLEDを数回点滅させることにしました。

こちらも、希望通りの動きができたので、4つの経路すべてに適用しました。


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

2018年5月18日 (金)

追加LED表示パネルの製作

連休が明けて、体調が悪くなり、2日ほど寝込んでいました。
考えてみると、毎年、この時期に体調が悪くなることが続いています。

追加LED表示パネルの試作が完了したので、製作を開始しました。

今回は、100均のカラーボードを使うことにしました。

20180517_000357


手前が追加の表示パネルです。

今回もマスキングテープで路線図を書きました。
しかし、色が薄かったので、2枚重ねとしました。

そして、あれこれ検討した結果、デジタルピン8本で表示することにしました。
4種類の経路なので、デジタルピン4本でも表示することはできるのですが、
2つ以上の経路で点灯させるLEDが複数あり、その処理には、個別にデジタルピンを割り当てるのが良いという結論に至りました。

その結果、デジタルピンを8本使用して12個のLEDを点灯させることにしました。

20180517_000421

その結果、1本のデジタルピンで、最大3個のLEDを点灯させる必要があります。

という事で、1本のデジタルピンで複数のLEDを点灯させるための回路を3組作成しました。
この回路を使用することにより、1本のデジタルピンで1個のLEDを点灯させた場合と同様にLEDを点灯させることが可能になります。


20180517_230150


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

2018年5月13日 (日)

追加LED表示パネルの試作

新作モジュールのポイント側にLED表示パネルを追加する為の試作を行いました。

今回実現したいのは、デジタルピン1本の出力で、LEDを4個点灯させることです。

今回利用するのは、トランジスタのスイッチング回路です。

デジタルICからの信号でLEDを点灯する回路です。(LEDドライブ回路)

こちらの情報
を参考にしています。

実際に、ブレッドボードで試作して、確認しました。

Arduino UNO互換機に、LEDを点滅させるスケッチを書き込んで確認しました。

#define LED 8
// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED, OUTPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED, HIGH);    // turn the LED on (HIGH is the voltage level)
  digitalWrite(LED_BUILTIN, HIGH);  
  delay(1000);                       // wait for a second
  digitalWrite(LED, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(LED_BUILTIN, LOW); 
  delay(1000);                       // wait for a second
}


なお、使用しているLEDは、詳細のスペックは不明ですが、
100Ωを接続しています。

20180513_014119

一応、これで、デジタルピン1本で4個のLEDを点灯させることには成功しました。

この回路を4経路分実装すれば、4本のデジタルピンで追加のLED表示パネルが制作できそうです。

ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村


2018年5月11日 (金)

各モジュールの連結

Arduinoでポイントを制御するモジュールですが、
これまで、個々に作っていたものを組み合わせることにしました。

まずは、LEDの表示パネルにLANコネクタを2個設置しました。

1個は、経路選択ボタンのモジュールにつながります。

そして、もう一つは、ポイントを切り替えるサーボとギャップ制御モジュールにつながります。

20180511_004456


LED表示パネルは、一旦LEDを取り外して、黒いカバーをかけました。
これは、マスキングテープで作った経路が目立たなかったのと、
内部の目隠し用です。

このLED表示パネルには、Arduino MEGAと電源モジュール、LANコネクタを内蔵します。

そして、経路選択用モジュールのLANコネクタは、両面テープでケースに固定しました。


20180511_004716


こちらは、ポイント側に設置する基板とLANコネクタです。

LED表示パネルからは数メートル離れた場所に設置します。

実際のモジュールでは、この基板とLANコネクタ、ギャップ制御モジュールは、目立たない場所に設置します。


今のところ、LANケーブルでのトラブルはありませんが、ノイズを拾って誤作動しないかが心配ではあります。


それと、もう一つの課題は、ポイント側に、設置するLED表示パネルをどうするかを考えなければなりません。
経路選択の4種類の情報から、LEDを最低でも4個点灯させる必要があるので、
ちょっと悩んでいます。

ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村


2018年5月 8日 (火)

ポイントモジュール用スケッチ 5/7現在

現時点での最新状態です。
今後、ギャップモジュールの通電対応を追加予定です。

/*
 LEDTEST6
 
  2018/4/28 
  IHTモジュール倶楽部 oomori
  サーボによるポイント切替
 押しボタンにより選択された経路へポイントを切り替える。
 切り替えた経路は、LEDで表示する 
  2018/05/05
  ポイント切替中は、操作モジュールのLEDが点灯する。
  サーボ割り当て、サーボ解放タイミングの変更。 
 サーボピン指定変更 46,47,48 

*/
#include <VarSpeedServo.h>
#define CHIEN 53 //遅延線
VarSpeedServo myservo1;
VarSpeedServo myservo2;
VarSpeedServo myservo3;
int Start_pos = 90; //ポイント切替 開始位置
int End_pos = 81 ;  //ポイント切替 終了位置
int End_pos2 = 99;
int SPEED1 = 2; //サーボスピード
int srv1 = 46; //サーボピン指定
int srv2 = 47;
int srv3 = 48;
#define LED22 22 //LEDピン指定
#define LED23 23
#define LED24 24
#define LED25 25
#define LED31 31
#define LED32 32
#define LED30 30
#define LED26 26
#define LED27 27
#define LED28 28
#define LED29 29
#define LED33 33
#define LED34 34
// 経路選択SW
#define BUTTON_ON 40 //操作モジュールLED用
#define BUTTON1 41
#define BUTTON2 42
#define BUTTON3 43
#define BUTTON4 44
// SWの入力値、前回入力値、ステイタス 初期化
int val1 = 0;
int old_val1 = 0;
int state1 = 0;
int val2 = 0;
int old_val2 = 0;
int state2 = 0;
int val3 = 0;
int old_val3 = 0;
int state3 = 0;
int val4 = 0;
int old_val4 = 0;
int state4 = 0;
// the setup function runs once when you press reset or power the board
void setup() {
//サーボ割り当て(初期)
  myservo1.attach(srv1);
  myservo2.attach(srv2);
  myservo3.attach(srv3);
//サーボ 初期値設定
  myservo1.write(Start_pos,SPEED1);
  myservo1.wait();
  myservo2.write(Start_pos,SPEED1);
  myservo2.wait();
  myservo3.write(Start_pos,SPEED1);
  myservo3.wait();
  pinMode(CHIEN, OUTPUT);    //遅延線割り当て 
  digitalWrite(CHIEN,HIGH);  //遅延線起動
  delay(1000);               //dummy
  
  //  digital pin  as an output.
  pinMode(LED22, OUTPUT);
  pinMode(LED23, OUTPUT);
  pinMode(LED24, OUTPUT);
  pinMode(LED25, OUTPUT);
  pinMode(LED31, OUTPUT);
  pinMode(LED32, OUTPUT);
  pinMode(LED30, OUTPUT);
  
  pinMode(LED26, OUTPUT);
  pinMode(LED27, OUTPUT);
  pinMode(LED28, OUTPUT);
  pinMode(LED29, OUTPUT);
  
  pinMode(LED33, OUTPUT);
  pinMode(LED34, OUTPUT);
  pinMode(BUTTON_ON, OUTPUT);
  pinMode(BUTTON1, INPUT);
  pinMode(BUTTON2, INPUT);
  pinMode(BUTTON3, INPUT);
  pinMode(BUTTON4, INPUT);
  digitalWrite(BUTTON_ON, LOW);  //操作モジュールLED消灯
}
// the loop function runs over and over again forever
void loop() {
  val1 = digitalRead(BUTTON1);
  if ((val1 == HIGH ) && (old_val1 == LOW)){
    state1 = 1;
    state2 = 0;
    state3 = 0;
    state4 = 0;
    digitalWrite(BUTTON_ON, HIGH);  //操作モジュールLED点灯
    delay(10);
  }
  old_val1 = val1;
   val2 = digitalRead(BUTTON2);
  if ((val2 == HIGH ) && (old_val2 == LOW)){
    state2 = 1 ;
    state1 = 0;
    state3 = 0;
    state4 = 0;
        digitalWrite(BUTTON_ON, HIGH);  //操作モジュールLED点灯 
    delay(10);
  }
  old_val2 = val2;
  val3 = digitalRead(BUTTON3);
  if ((val3 == HIGH ) && (old_val3 == LOW)){
    state1 = 0;
    state2 = 0;
    state3 = 1;
    state4 = 0;
        digitalWrite(BUTTON_ON, HIGH);  //操作モジュールLED点灯 
    delay(10);
  }
  old_val3 = val3;
   val4 = digitalRead(BUTTON4);
  if ((val4 == HIGH ) && (old_val4 == LOW)){
    state1 = 0;
    state2 = 0;
    state3 = 0;
    state4 = 1;
        digitalWrite(BUTTON_ON, HIGH);  //操作モジュールLED点灯  
    delay(10);
  }
  old_val4 = val4;
  
  if (state1 == 1) {
      myservo1.attach(srv1);  //サーボ割り当て
      myservo2.attach(srv2);
      myservo3.attach(srv3);
      myservo1.write(Start_pos,SPEED1);
      myservo1.wait();
      myservo2.write(Start_pos,SPEED1);
      myservo2.wait();
      myservo3.write(Start_pos,SPEED1);
      myservo3.wait();
      myservo1.detach();  //サーボ解放
      myservo2.detach();  //
      myservo3.detach();  //
      digitalWrite(LED22, HIGH);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(LED23, HIGH);  
      digitalWrite(LED24, HIGH); 
      digitalWrite(LED25, HIGH);
      digitalWrite(LED31, HIGH); 
      digitalWrite(LED32, HIGH);
      digitalWrite(LED30, HIGH);
      digitalWrite(LED26, LOW);
      digitalWrite(LED27, LOW);
      digitalWrite(LED28, LOW);
      digitalWrite(LED29, LOW);
      digitalWrite(LED33, LOW);
      digitalWrite(LED34, LOW); 
      digitalWrite(BUTTON_ON, LOW);  //操作モジュールLED消灯 
  }
  if (state2 == 1) {
      myservo1.attach(srv1);  //サーボ割り当て
      myservo2.attach(srv2);
      myservo3.attach(srv3);
      myservo1.write(End_pos,SPEED1);
      myservo1.wait();
      myservo2.write(End_pos,SPEED1);
      myservo2.wait();
      myservo3.write(End_pos2,SPEED1);
      myservo3.wait();
      myservo1.detach();  //サーボ解放
      myservo2.detach();  //
      myservo3.detach();  //
      digitalWrite(LED22, LOW);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(LED23, LOW);  
      digitalWrite(LED24, LOW); 
      digitalWrite(LED25, LOW);
      digitalWrite(LED31, LOW); 
      digitalWrite(LED32, LOW);
      digitalWrite(LED30, HIGH);
      digitalWrite(LED26, HIGH);
      digitalWrite(LED27, HIGH);
      digitalWrite(LED28, HIGH);
      digitalWrite(LED29, HIGH);
      digitalWrite(LED33, LOW);
      digitalWrite(LED34, LOW);
      digitalWrite(BUTTON_ON, LOW);  //操作モジュールLED消灯 
  }
  if (state3 == 1) {
      myservo1.attach(srv1);  //サーボ割り当て
      myservo2.attach(srv2);
      myservo3.attach(srv3);
      myservo1.write(Start_pos,SPEED1);
      myservo1.wait();
      myservo2.write(End_pos,SPEED1);
      myservo2.wait();
//      myservo3.write(End_pos,SPEED1);  サーボ3は無指定
//      myservo3.wait();
      myservo1.detach();  //サーボ解放
      myservo2.detach();  //
      myservo3.detach();  //    
      digitalWrite(LED22, LOW);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(LED23, LOW);  
      digitalWrite(LED24, LOW); 
      digitalWrite(LED25, HIGH);
      digitalWrite(LED31, LOW); 
      digitalWrite(LED32, LOW);
      digitalWrite(LED30, LOW);
      digitalWrite(LED26, HIGH);
      digitalWrite(LED27, LOW);
      digitalWrite(LED28, LOW);
      digitalWrite(LED29, LOW);
      digitalWrite(LED33, HIGH);
      digitalWrite(LED34, LOW); 
      digitalWrite(BUTTON_ON, LOW);  //操作モジュールLED消灯 
  }
  if (state4 == 1) {
      myservo1.attach(srv1);  //サーボ割り当て
      myservo2.attach(srv2);
      myservo3.attach(srv3);
      myservo1.write(End_pos,SPEED1);
      myservo1.wait();
      myservo2.write(Start_pos,SPEED1);
      myservo2.wait();
      myservo3.write(End_pos2,SPEED1);
      myservo3.wait();
      myservo1.detach();  //サーボ解放
      myservo2.detach();  //
      myservo3.detach();  //
      digitalWrite(LED22, HIGH);   // turn the LED on (HIGH is the voltage level)
      digitalWrite(LED23, LOW);  
      digitalWrite(LED24, LOW); 
      digitalWrite(LED25, LOW);
      digitalWrite(LED31, LOW); 
      digitalWrite(LED32, LOW);
      digitalWrite(LED30, HIGH);
      digitalWrite(LED26, LOW);
      digitalWrite(LED27, LOW);
      digitalWrite(LED28, LOW);
      digitalWrite(LED29, HIGH);
      digitalWrite(LED33, LOW);
      digitalWrite(LED34, HIGH);
      digitalWrite(BUTTON_ON, LOW);  //操作モジュールLED消灯  
  }
    delay(200);   // wait for a second
}

ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

操作モジュールの追加加工

今回製作している、各モジュールの接続の準備を進めています。

まずは、MEGAの接続をテストワイヤーからピンヘッダへ変更しました。

20180507_225952

ピンヘッダーに変更した理由としては、
・テストワイヤーでは、コネクタ部分が出っ張ってしまう。
・その結果、コネクタ部分で曲げる為、断線が発生する。

手持ちのテストワイヤーは、あまり品質が良くないようで、内部で断線していたり、コネクタ部分で切れてしまったりと、問題が多かったのも変更した理由の一つです。

その後、操作モジュールには、表示パネルとの接続用のコネクタを取り付けました。

今回、各モジュール間を接続するワイヤーとして使用するのは、LANケーブルです。
今のところ、操作モジュールには、7本のワイヤー、そして、ポイントモジュール側にも、7本のワイヤーが必要になります。

今のところ、LANケーブル2本で接続出来る予定でいます。

まあ、不足したら、もう1本LANケーブルを増やせば、いいので、案外気楽に考えています。

しかし、ポイントモジュール側に表示パネルを増設しようとすると、10本以上のワイヤが必要になるので、
この点は、工夫の余地があります。
出来れば、4本に集約できないかと考えています。

ちなみに、LANコネクタは、基板付きのものをaitendoで購入してきました。

20180508_003223


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

2018年5月 5日 (土)

操作モジュール製作

経路選択の操作モジュールを作りました。

押しボタンで経路が選択できるようになりました。

しかし、問題点が。
というのは、押しボタンを押して、ポイントが切り替わって、LEDが点灯するまでの間、
押しボタンを押していたのかがわかりません。

特に、実際の運転では、操作モジュールとポイントの距離が離れているので、
ポイントが切り替わっている途中の様子がわかりません。

そこで、操作モジュールにLEDを追加しました。
押しボタンを押して、経路切り替えが完了するまで、このLEDが点灯する様にスケッチを変更しました。

20180505_212708

ちょっと、明るすぎる気もしますが、少し様子を見てみます。

ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

ギャップコントロールモジュール

今回、モジュールで使用しているポイントは、非選択式のポイントです。

その為、ポイントの切り替えに応じて、給電を行う必要があります。

ポイントの切り替え自体をArduinoで行いますので、ギャップの制御も一緒に行うことにしました。

昨夜、テストして問題なく動くことが確認できましたので、
基板を作成しました。

今回、必要なのは、2系統のギャップ制御です。
その為、1枚の基板に2系統分を作りました。

使用した基板は、ブレッドボード配線の基板です。
ブレッドボードでテストしたままの配置で基板を作成することができます。


20180504_142349


これで、ひととおり必要なものは準備できたことになります。
今後は、実際にレールを敷設してテストを実施します。


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

経路選択スケッチ

新作モジュールのスケッチです。

なお、まだ、ギャップコントロール部分の記述はできていません。

現状では、
1.選択された経路の表示
2.選択に応じたポイントの切り替え

が出来ています。

なお、サーボに関しては、何故か、変な動きが止まらない為、
ダミーのサーボを定義のみ行っています。

/*
 LEDTEST5
 
  2018/4/28 
  IHTモジュール倶楽部 oomori
  サーボによるポイント切替
 ボタンにより選択されて経路へポイントを切り替える。
 切り替えた経路は、LEDで表示する 

*/
#include <VarSpeedServo.h>

#define CHIEN 53 //遅延線

VarSpeedServo myservo0; //dummy
VarSpeedServo myservo1;
VarSpeedServo myservo2;
VarSpeedServo myservo3;

int Start_pos = 90; //ポイント切替 開始位置
int End_pos = 81 ;  //ポイント切替 終了位置
int End_pos2 = 99;
int SPEED1 = 2; //サーボスピード

int srv1 = 3; //サーボピン指定
int srv2 = 4;
int srv3 = 5;

#define LED22 22 //LEDピン指定
#define LED23 23
#define LED24 24
#define LED25 25
#define LED31 31
#define LED32 32
#define LED30 30

#define LED26 26
#define LED27 27
#define LED28 28
#define LED29 29

#define LED33 33

#define LED34 34

// 経路選択SW
#define BUTTON1 41
#define BUTTON2 42
#define BUTTON3 43
#define BUTTON4 44

// SWの入力値、前回入力値、ステイタス 初期化
int val1 = 0;
int old_val1 = 0;
int state1 = 0;
int val2 = 0;
int old_val2 = 0;
int state2 = 0;
int val3 = 0;
int old_val3 = 0;
int state3 = 0;
int val4 = 0;
int old_val4 = 0;
int state4 = 0;

// the setup function runs once when you press reset or power the board
void setup() {
//サーボ割り当て
 myservo1.attach(srv1);
 myservo2.attach(srv2);
 myservo3.attach(srv3);

//サーボ 初期値設定
 myservo1.write(Start_pos,SPEED1);
 myservo1.wait();
 myservo2.write(Start_pos,SPEED1);
 myservo2.wait();
 myservo3.write(Start_pos,SPEED1);
 myservo3.wait();

 pinMode(CHIEN, OUTPUT);    //遅延線割り当て
 digitalWrite(CHIEN,HIGH);  //遅延線起動
 delay(1000);               //dummy
 
 //  digital pin  as an output.
 pinMode(LED22, OUTPUT);
 pinMode(LED23, OUTPUT);
 pinMode(LED24, OUTPUT);
 pinMode(LED25, OUTPUT);
 pinMode(LED31, OUTPUT);
 pinMode(LED32, OUTPUT);
 pinMode(LED30, OUTPUT);
 
 pinMode(LED26, OUTPUT);
 pinMode(LED27, OUTPUT);
 pinMode(LED28, OUTPUT);
 pinMode(LED29, OUTPUT);
 
 pinMode(LED33, OUTPUT);
 pinMode(LED34, OUTPUT);
 
 pinMode(BUTTON1, INPUT);
 pinMode(BUTTON2, INPUT);
 pinMode(BUTTON3, INPUT);
 pinMode(BUTTON4, INPUT);
}

// the loop function runs over and over again forever
void loop() {
 val1 = digitalRead(BUTTON1);
 if ((val1 == HIGH ) && (old_val1 == LOW)){
   state1 = 1;
   state2 = 0;
   state3 = 0;
   state4 = 0;
   delay(10);
 }
 old_val1 = val1;

  val2 = digitalRead(BUTTON2);
 if ((val2 == HIGH ) && (old_val2 == LOW)){
   state2 = 1 ;
   state1 = 0;
   state3 = 0;
   state4 = 0;
   delay(10);
 }
 old_val2 = val2;

 val3 = digitalRead(BUTTON3);
 if ((val3 == HIGH ) && (old_val3 == LOW)){
   state1 = 0;
   state2 = 0;
   state3 = 1;
   state4 = 0;
   delay(10);
 }
 old_val3 = val3;

  val4 = digitalRead(BUTTON4);
 if ((val4 == HIGH ) && (old_val4 == LOW)){
   state1 = 0;
   state2 = 0;
   state3 = 0;
   state4 = 1;
   delay(10);
 }
 old_val4 = val4;

//サーボ割り当て (LOOP処理対応)
 myservo1.attach(srv1);
 myservo2.attach(srv2);
 myservo3.attach(srv3);
 
 if (state1 == 1) {
     myservo1.write(Start_pos,SPEED1);
     myservo1.wait();
     myservo2.write(Start_pos,SPEED1);
     myservo2.wait();
     myservo3.write(Start_pos,SPEED1);
     myservo3.wait();
     digitalWrite(LED22, HIGH);   // turn the LED on (HIGH is the voltage level)
     digitalWrite(LED23, HIGH);  
     digitalWrite(LED24, HIGH);
     digitalWrite(LED25, HIGH);
     digitalWrite(LED31, HIGH);
     digitalWrite(LED32, HIGH);
     digitalWrite(LED30, HIGH);
     digitalWrite(LED26, LOW);
     digitalWrite(LED27, LOW);
     digitalWrite(LED28, LOW);
     digitalWrite(LED29, LOW);
     digitalWrite(LED33, LOW);
     digitalWrite(LED34, LOW);
 }

 if (state2 == 1) {
     myservo1.write(End_pos,SPEED1);
     myservo1.wait();
     myservo2.write(End_pos,SPEED1);
     myservo2.wait();
     myservo3.write(End_pos2,SPEED1);
     myservo3.wait();
     digitalWrite(LED22, LOW);   // turn the LED on (HIGH is the voltage level)
     digitalWrite(LED23, LOW);  
     digitalWrite(LED24, LOW);
     digitalWrite(LED25, LOW);
     digitalWrite(LED31, LOW);
     digitalWrite(LED32, LOW);
     digitalWrite(LED30, HIGH);
     digitalWrite(LED26, HIGH);
     digitalWrite(LED27, HIGH);
     digitalWrite(LED28, HIGH);
     digitalWrite(LED29, HIGH);
     digitalWrite(LED33, LOW);
     digitalWrite(LED34, LOW);
 }

 if (state3 == 1) {
     myservo1.write(End_pos,SPEED1);
     myservo1.wait();
     myservo2.write(Start_pos,SPEED1);
     myservo2.wait();
//      myservo3.write(End_pos,SPEED1);  サーボ3は無指定
//      myservo3.wait();
         
     digitalWrite(LED22, LOW);   // turn the LED on (HIGH is the voltage level)
     digitalWrite(LED23, LOW);  
     digitalWrite(LED24, LOW);
     digitalWrite(LED25, HIGH);
     digitalWrite(LED31, LOW);
     digitalWrite(LED32, LOW);
     digitalWrite(LED30, LOW);
     digitalWrite(LED26, HIGH);
     digitalWrite(LED27, LOW);
     digitalWrite(LED28, LOW);
     digitalWrite(LED29, LOW);
     digitalWrite(LED33, HIGH);
     digitalWrite(LED34, LOW);
 }

 if (state4 == 1) {
     myservo1.write(Start_pos,SPEED1);
     myservo1.wait();
     myservo2.write(End_pos,SPEED1);
     myservo2.wait();
     myservo3.write(End_pos2,SPEED1);
     myservo3.wait();
         
     digitalWrite(LED22, HIGH);   // turn the LED on (HIGH is the voltage level)
     digitalWrite(LED23, LOW);  
     digitalWrite(LED24, LOW);
     digitalWrite(LED25, LOW);
     digitalWrite(LED31, LOW);
     digitalWrite(LED32, LOW);
     digitalWrite(LED30, HIGH);
     digitalWrite(LED26, LOW);
     digitalWrite(LED27, LOW);
     digitalWrite(LED28, LOW);
     digitalWrite(LED29, HIGH);
     digitalWrite(LED33, LOW);
     digitalWrite(LED34, HIGH);
 }
   delay(200);   // wait for a second
   myservo1.detach();  //サーボ解放
   myservo2.detach();  //
   myservo3.detach();  //
}


ブログ村に参加しています。
下のバナーのクリックをお願いします。

にほんブログ村 鉄道ブログ 鉄道模型 レイアウト製作へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 車両加工へ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型 Nゲージへ
にほんブログ村

にほんブログ村 鉄道ブログ 鉄道模型へ
にほんブログ村

より以前の記事一覧