delay()関数は安易に使えない アルデュイーノ×鉄道模型15

引き続き、入力装置のスケッチを 模索します。

入力装置で、求められる機能は次の通り。

 

➀ アップボタンで、から 変数(時間間隔)の値が一定数(100)づつ増加する。

 ダウンボタンで、変数の値が一定数(100)づつ減少する

  操作により、点滅間隔が変化すれば、大成功。なお、数値単位はミリ秒(1000分の1秒)なので、

  初期値500(0.5秒)に、100の増減(0.1秒の増減)です。

③ ➀の変数は、LCDに表示される

④ 変数の変更後、LCDをスピード表示に戻すため、➁の表示をクリアできる。

 

さて、いきなり、スピードメータに組み込んで、動作を検証する・・・と、失敗の検証過程が複雑になります。ここでの目的は、スケッチの開発だけ。そこで、単純な装置・・・たとえば「Lチカ回路」・・・をつくり、点滅間隔を入力装置で変えていく。そんなスケッチを開発します。

具体的には、アルデュイーノで、まず、点滅時間を変数にした「LED」点滅スケッチを書き、なお、その時間変数を 変更できればよい。ということです。

 

【LED点滅回路】イラスト

 

250417

【スケッチ】

//LED点滅+0.1秒づつ間隔増減調整装置

#include <LiquidCrystal.h>

#define ledPin  2//ledPinを2番ピンに

#define upButton  4//upButtonを4番ピンに

#define downButton 5//downButtonを5番ピンに

#define clearButton 6//clearButtonを6番ピンに

#define RS 7//RSピンを7番に設定

#define RW 8//RWピンを8番に

#define E 9//Eピンを9番に

#define D4 10//D4ピンを10番

#define D5 11//D5ピンを11番

#define D6 12//D6ピンを12番

#define D7 13//D7ピンを13番

#define delayTime        100//チャタリング防止時間

LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);//LCD設定

int Threshold;//閾値の変数

unsigned long referenceTime=0;//基準時刻の変数

 

void setup(){

  pinMode(ledPin,OUTPUT);//2番 ledPin 出力

  pinMode(upButton,INPUT_PULLUP);//4番 UPボタン 内部プルアップ

  pinMode(downButton,INPUT_PULLUP);//5番 Donwボタン 内部プルアップ

  pinMode(clearButton,INPUT_PULLUP);//6番 クリアボタン 内部プルアップ

  lcd.begin(16,2);//LCD開始16桁2行

  lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("Start");//「スタート」表示

  delay(3000);//表示停止

  lcd.clear();//表示クリア

  Threshold=500;//点灯時間間隔(閾値)の初期値

  lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("500");//初期値(0.5秒間隔)を表示

  playLcd();//自作関数playLcdを実行

}

 

void loop(){

 unsigned long currentTime=millis();//現在時変数に現時刻を取る

 if(currentTime-referenceTime>=Threshold){//現時刻と基準時の差が閾値(間隔)以上なら

  digitalWrite(ledPin,!digitalRead(ledPin));//ledピンを作動。ピン電位とはアベコベに

  playLcd();//自作関数の実行

  referenceTime=currentTime;//基準時間を「使った現時刻」に更新

   }

 if(!digitalRead(upButton)){//UPボタン押せば

   delay(delayTime);//チャタリング防止

       Threshold+=100;//閾値を100(0.1秒)づつ増

  if(Threshold>900){//900を超えれば

    Threshold=900;

  }//Threshold変数は900

    } 

 if(!digitalRead(downButton)){//Downボタン押せば

    delay(delayTime);//チャタリンング防止

  Threshold-=100;//100づつ減

  if(Threshold<100){//100を下回るなら

    Threshold=100;

    }//Thresholdは100

 }

  if (!digitalRead(clearButton)){//クリアボタンで

  delay(delayTime);//チャタリング防止

  lcd.clear();//表示クリア

  }

}

 

//自作関数playLcdとは

void playLcd(){

 switch(Threshold){

 case 100:// Thresholdが100のとき

  lcd.clear();//クリア

      lcd.setCursor(1,0);//位置1桁上段に

      lcd.print("100");//100を表示

  break;

 case 200:// Thresholdが200のとき

      lcd.clear();

      lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("200");//200

  break;

   case 300:// Thresholdが300のとき

  lcd.clear();

    lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("300");//300

  break;

  case 400:// Thresholdが400のとき

  lcd.clear();//

      lcd.setCursor(1,0);//位置1桁上段に

      lcd.print("400");//400表示

  break;

 case 500:// Thresholdが500のとき

     lcd.clear();

     lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("500");//500

  break;

   case 600:// Thresholdが600のとき

  lcd.clear();

     lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("600");//600

  break;

   case 700:// Thresholdが700のとき実行される

l  cd.clear();

       lcd.setCursor(1,0);//位置1桁上段に

       lcd.print("700");//700

  break;

 case 800:// Thresholdが800とき

       lcd.clear();

       lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("800");//800

  break;

 case 900:// Thresholdが900のとき

  lcd.clear();

      lcd.setCursor(1,0);//位置1桁上段に

  lcd.print("900");//900

 break;

    }

}

スケッチ解説

delay()関数を安易に使うな!。

elay()関数は「超・曲モノ」です。使っちゃ「ダメ関数」と言って、云い過ぎではありません。

思い出してみてください。アルデュイーノの入門で、誰しも最初に書くスケッチは「Lチカ」ですね。そのLEDの点滅間隔を操作するのが、このdelay()関数でした。だから、delay()関数は、「基本の基じゃないか」と思いたいところです。事実、単純で使い勝手がいい関数ですから。

もちろん、マイコンの仕事が、単純に1つだけ、例えば「LEDを1だけを点滅させる」ならば、問題は起きません。

ところが、LEDを光らせ、サーボを動かし、なおかつ、その状況をLCDに表示せよ・・・なんて、アルデュイーノに「複数の仕事」を要求すると・・,LEDは点滅しても、その先のスケッチに書かれてる「サーボの挙動」「LCDの表示」が、全く動かない・・・なんて現象がおきます。回路もスケッチも「正常」なのに。・・・です。

まあ、初心者として、素直に「他人の書いたスケッチ」を”そっくりコピペ”しているうちは、問題にならないところでもあります。初心者を抜けて、自分で書き始めて、はじめて"delayの罠"に嵌る(笑)わけです。

原因は、delay()関数が実行されると、そこでマイコン全体が「一時停止」してしまうことにあります。LEDだけを停めるはずが、そこでマイコン全体が一時停止するため、結果として、その後のスケッチに書かれた、サーボにもLCDにも、「停止命令」を受けて、挙動がおかしくなるのです。

 

millis()関数を使う 間隔制御の構文・・・背後にある「変数のスコープ」

それじゃ、delay()を使わないで、どうやって「間隔」を取るのか!それがmillis()「現在時刻の取得」関数です。

➀まず、2つの時刻の変数、「現時刻」と「基準時刻」を設定します。

変数には,一般的にunsinged long という一番大きな箱を使います。0から4,294,967,295(2の32乗 - 1)まで、変数が入ります。4294967295(マイクロ秒)÷1000(秒)÷60(分)÷60(時)÷24(日)=49日(連続稼働可能?)。そこまで連続運転することもないですが。

変数「基準時刻」は グローバル変数として ヘッダー部分に書きます。loop関数の周回しても、変数が0に更新される=解放(解消)されないように するためです(あるいは、スタティクス変数にしてもOK)。なお、初期値として=0を置きます。

unsigned long referenceTime=0;//基準時刻の変数 初期値0

変数「現時刻」は、loop関数内に置きます。=millis();で、これに現在時刻(ループ開始時)を放り込みます。こちらの変数は、ループ周回ごとに「更新」されなきゃ困るので、loop関数内に置きます。

unsigned long currentTime=millis();//現在時変数に現時刻を取る

「変数・現時刻」-「変数・基準時刻(最初は0)」という計算式で 経過時間が計算できます。これを使えば、「もし経過時間がたてば、~せよ」と「if文」を書けます。これで、時間ごとに処理が実行されます。

③「➁のif文」の中で、基準時刻を ➀の時刻に 置き換えます。

if(currentTime-referenceTime>=Threshold){//現時刻と基準時の差が閾値(間隔)以上ならdigitalWrite(ledPin,!digitalRead(ledPin));//ledピンを作動。ピン電位とはアベコベに

referenceTime=currentTime;//基準時間を「使った現時刻」に更新

      }

 

図解すると 

2504271

最初、基準時刻はゼロなので ループごとに新しく習得する「現在時」から、基準時(最初はゼロ)を引いた時間(=即ち「経過時間」です)が、閾値未満なら、if文は実行されません。LEDの動作や、基準時間更新がなく(つまり、ゼロのまま)、図の黒線のループをクルクル回ります。ループごとに、現在時刻からゼロを引いた時間=経過時間が刻まれます。

その経過時間が閾値以上ならば、if文の条件を満たし、「LEDの動作」と「基準時刻」の更新が実行されます。で赤字に転線するのです。ここで、「基準時刻に現在時を入れろ」と命令されてます。

この「現在時刻」とは・・・?。「現在時刻」の変数は、loopk関数内に設定されているので、ループごとに消え、ループのアタマで再設定されています。ですから、if文の条件を満たした時点(経過時間を満たした時点)の最新「時刻」です。これを基準時刻にしろ、と命令されてます。

2504272

結果、条件を満たした点を、基準にして、新しい経過時間をカウントすることになります。今度は、ループごとの最新時刻から、新しい基準時刻(=直近で条件を満たした時刻)を引いた時間、即ち、新しい経過時間で、条件が判定されます。

前述の通り、「現在時刻」の変数は、loop関数内にあるので、ループごとに、変数が消され、ループの最初に最新時刻が、変数に代入されます。一方「基準時刻」の変数は、ヘッダーに設定された「グローバル変数」です。ループ関数をループしても、数値は不変。基準時刻が変わるのは、条件文を満たし、時間更新の命令が実行された場合のみです。つまり、基準時間の更新で、経過時間も更新されることになります。

この新しい経過時間が、閾値を満たさないなら、そのままです(赤字のループ)。満たせば、条件文が実行され、なおかつ、基準時刻が再更新されます(青字に転線)。次からは、青地のループが始まります。

これにより、delay()関数でマイコンを停止させることなく、経過で時間ごと(一定時間ごと)に、条件文が実行する ことがきます。なるほど・・・、でしょ。この根底で、「変数のスコープ=有効範囲」が巧みに利用されていますね。

ですから、ここでは、変数を設定する「場所」が、とっても大切なんです。その場所を間違えても、コンパイルエラーにはなりませんが、それでも、プログラムが動いてくれません。

 

【余談】

マイコンの話にだけではないのですが、日本人は「なんちゃら検定」が大好き。もちろん、アルデュイーノ検定なんてありませんが、電子技術の世界でも、「電検」?なるものあるようです。YOUTUBE動画には「Ⅽ++言語講座」が多数あります。これらを見る限り、明らかに「なんちゃら検定」を意識しているようです。

もちろん、これらの動画は「ウソ」を言っているわけではありません。ただ、講座を正確に暗記し「なんちゃら検定」に合格したとことで、プログラム(スケッチ)が書けるかは、別問題のような気がします。

 

前出の「変数のスコープ」も、「c++講座」にしっかり解説があります。けれども、ビデオ講座で「変数のスコープとは、変数の有効範囲のことでる」と、これを杓子行儀に覚えたとしても、意味が薄く、それが、スケッチでどう使われ、どう使い倒すのか、そこまでたどれて「理解」じゃないですかね。

 

「杓子行儀な知識」の積み重ねより、「millis()関数の使い方って、変数のスコープをうまく使っているな」と感じるほうが、アタマに残るような 気がします。

 

 

 

 

2025年4月13日 (日)

振り返ります。今 やっている工作。

今、なにを工作しているのか?一度、振り返ります。作っているのは,センサー閾値の「入力装置」です。

ディスプレイ付き入力装置の必要性

このスピード・メータは、光センサー(cdsセル)を用い、位置と経過時間を検出し,スピードを計算します。よって、センサーの閾値が不適切だと、設置された部屋の明るさ次第で、センサーが在線を誤検出してしまうことがあり得ます。

スピードメーターを、模型の影がない露光状態ですら、電圧がデジタル値で500にしかならない、少し暗い部屋で使用するとします。このとき、閾値が600に設定されていると、常に(在線のない露光状態であっても)、アルデュイーノは在線の影を認識してしまいます。これでは、在線検知ができず、スピード計測は不可能です。

250412_3

 

では、閾値は少なければよいか?。これも、間違い。模型の影が落ちた時の、デジタル電圧値が150、という場合、閾値が150を下回る値、例えば100に設定されていると、影が落ちても、アルデュイーノは在線を認識しません。

250412_4

 

閾値は、「影を落とした電圧値」を超え、かつ、「露光状態の電圧値」未満にしないといけません。よって、部屋の明るさに合わせて、光センサーの閾値を動かせる仕組み(スイッチとプログラム)が必須なのです。

250412_5

 

もちろん、パソコンがあれば、アルデュイーノのスケッチを書き換えることで、閾値を変更できます。それでは、常にパソコンを持ち歩かねばならず、スピードメータとしては、欠陥品ですね

表示装置と連動しなきゃダメ

難題なのは、閾値の「増減」ではなく、その「値」を、適切なターゲットに設定することです。それには、「値」の現在位置を示す液晶ディスプレイ(LCD)と、その連動が欠かせません。

このような「入力装置」は、日常的な家電製品やおもちゃにも、必ずあります。たとえば、テレビがあれば、画面の明るさや音量を調整する「ボタン」がついています。これらは、単なる増減操作だけではなく、表示画面に「値」が表示され、操作と表示が連動しています。

ごく身近にある「入力装置」ですが、これを1から「アルデュイーノで電子工作せよ」となると、初心者にはむずかしい。

Youtubeには、多くのアルデュイーノ動画があります。参考にしたいのですが、「○○を作ってみた」という動画はあれど、その工作物の一部である「入力装置を作ってみた」という動画は、海外の動画も含めて、ありません。というか、工作物の一部分であるが故に、検索にかかりません。

「ディスプレイつき入力装置」その課題は・・・

課題を具体化します。難題は2つ。閾値を上げ下げする「スイッチ・ボタン」=ハードと、これに家電連動して閾値を動かすプログラム(スケッチ)=ソフトです。

内部プルアップが理解できない

ハード面では、「内部抵抗を使う内部プルアップ回路」が難解でした。たかが「ボタン・スイッチ」どこが難しい?と言われると、その通り。理念としては簡単なのです。だからまあ、「設計図の言う通り」に作れば、なんなく通過できます。

今回は、その「設計図」がありません。1から考えると・・・内部プルアップ回路といううもは、「なんかヘン?」なのです。それで、自分で考えた通りに回路を組むと・・・エラーになる。

24120538

そこには、外見では見えない「内部構造」があり、その読み解きには、”分圧”という中学生レベルの「電子回路の知識」を使いました。詳しくはこちら。

(なお、スイッチの「チャタリング現象」という課題は、残っています。余裕があれば、後述します。)

スケッチを模索する

ソフト面では、スイッチを押すたびに、数値が一定数増加(減少)する、プログラミングが課題でした。同時に、これを液晶(LCD)に反映させなけばなりません。

そこで、このプログラミングにあたり、「LCD Menu(メニュー)」というスケッチを参考にしました。海外の方です。

 

【雑談】

Youtubeの動画を見る限り・・・っですが、アルデュイーノ電子工作の動画は、そのほとんどが「海外発」ですね。日本人が日本語でやってくると、見るほうは「楽」なのですが、あまりオススメに挙がりません。目立つのはヒンドゥ訛りの英語。これが、インド発なのか?インド系アメリカ人なのか?は、読めません。

ひょっとして、かの国では、教育現場で「アルデュイーノ」を活用され、その一部は、アルデュイーノで遊んでいるのかもしれません。そもそも「アルデュイーノ」とは、中等教育用のマイコンとして、開発されたものです。これが、その国の(将来的な)工業力を反映している?と言ったら、大げさな話かもしれませんが・・・。

 

現在地は、スケッチを模索している・・・ところです。その過程の中で、「自作関数」とか「条件分岐」とか、スケッチを「自分で書く」ためのテクニックを吸収しています。

 

2025年2月 3日 (月)

自作関数を使う アルデュイーノ×鉄道模型 14  

実用品ほど、スケッチが長くなる

 

「テキスト本」や「初心者向け動画」で、スケッチをまとめる「自作関数」のテクニックを解説してるものは、あまりありません。このテクニック、けっこう重要なテーマなのです。

 

というのも、初心者向のテキストで、書かれている工作例では、そのスケッチが、ごく短いからです。

このスケッチの短さには、まっとうな理由があります。まず、初心者に向けるのなら、「読みやさ」を重視しなければなりません。また、スケッチ以上に「電子部品の使い方」や「配線方法」を説明しなければなりません。結果として、「テキスト本」のスケッチは、意図的に「必要最低限の長さ」に納られてます。

 

ところが、いざ、自分自身の独力で、「実用的なモノ」をプログラムする(たとえば、このスピードメータがそうです)となると、コマッタことに、スケッチはどんどん長くなります。これは、操作が複雑になるゆえに、その指示や動作条件が複雑になるからです。これは、致し方ありません。

 

「よし、実用品を作ろう」なんてくらいに、アルデュイーノに本気に嵌まって、初めて、初心者は「書いたスケッチの長さ」に意識を向けます。だから、初心者向けテキスト本は、「自作関数」にほとんど触れない、のかもしれません。

 

スケッチを短くまとめる「自作関数」

 

さて「ぐだぐだと長いスケッチを、スッキリと短くする」には、どうするか?

 

スケッチを見直します。こんなスケッチになっていませんか?よく読めば「前段条件が異なるだけで、同じ処理をさせている」。狙いは、こういう部分です。

 

次のスケッチは、前回に示した「上下のボタン操作で、LCD表示を切り替える」スケッチです。スケッチの「青字部分」を見てください。

 

#include <LiquidCrystal.h>
#define upButton 4//upButtonを4番
#define downButton 5//downButtonを5番
#define RS 7//RSピンを7番に設定
#define RW 8//RWピンを8番に
#define E 9//Eピンを9番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);
int page;//
void setup(){
 lcd.begin(16,2);//LCD開始16桁2行
 pinMode(upButton,INPUT_PULLUP);
 pinMode(downButton,INPUT_PULLUP);
 lcd.setCursor(1,0);//位置1桁上段に
 lcd.print("Start");//表示
 delay(2000);//静止
 lcd.clear();//クリア
 page=1;
   switch (page){
  case 1:// pagaが1のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page_1");//表示
   break;
  case 2:// pageが2のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page2");//
   break;
  case 3:// pageが3のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page3");//
    break;
  case 4:// pageが4のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page4");//
    break;
    }
}
void loop(){
 if (!digitalRead(upButton)){
  lcd.clear();//クリア
  page++;
  delay(1000);
 if(page>4){page=4;}//3以上page変数は3
 switch (page){
  case 1:// pagaが1のとき実行される
       lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page_1");//表示
   break;
  case 2:// pageが2のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page2");//
   break;
  case 3:// pageが3のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page3");//
   break;
  case 4:// pageが4のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page4");//
   break;
  }   
  }
 if(!digitalRead(downButton)){
  lcd.clear();//クリア
  page--;
  delay(1000);  
 if(page<1){page=1;}//1未満のpage変数は1
 switch (page) {
  case 1:// pagaが1のとき実行される
       lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page_1");//表示
   break;
  case 2:// pageが2のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page2");//
   break;
  case 3:// pageが3のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page3");//
   break;
  case 4:// pageが3のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page4");//
   break;
  }
 }
}

 

青字のスケッチは、「変数pageの値に応じ、定めた文字列をLCDに表示させる」ものです。が、変数こそ違えど、「LCDを一度クリアして、再表示させる」命令と順序は、似た物同士です。

つまり、似た物スケッチが 3本並んでいる。。しかも、1つあたり17行。トータルで、17×3=51行です。スケッチが、グダグダと長くなるのは、こういう重複があるからです。

 

自作関数を使う

 

ならば、「同じような処理」を、1行まとめられないか?。これが「自作関数※」というテクニックです。

 

文章にたとえるなら、「以下同じ」とか「以下、ここを参照」とか、「すっきりした書き方」は、有りますよね。プログラミングにも、「以下、ここを参照せよ」のような1行まとめ書き」があります。これが自作関数です。

 

※「関数」を、正確に説明するなら・・・

本来、「関数」とは、あるデータ(引数)を入れたら、一定の処理をして、結果となる数値(戻り値)を出してくる、その「一定の処理過程」をいいます。今回扱う「自作関数」は、その「関数」のうちでも、「投入データ(引数)や結果データ(戻り値)がないパターン、つまり、「一定の処理だけ」命令するパターンです。いわば、「関数」の、一番簡単な使い方 かもしれません。

 投入データ(引数)や結果数値(戻り値)のある、関数の使い方は、別の機会とし、まずはこのデータを使わない「自作関数の使い方」を覚えてみてください。

 

これを使うと、ダラダラとした同じ処理命令が、「1行の自作関数」に置き換えられて、断然、スケッチが読みやすくなります。

 

自作関数の書き方

 

次の通り。使う場所で、➀「関数の呼出し」文を記述。スケッチの最後に、➁「関数の定義」文をまとめ書きします。

 

①関数の呼び出し文

 関数を使う「その場所」に記述します 関数名();と記述するだけです。

                ※ここではvoidは要りません

 なお、関数名は自分で自由に決められます。一般に英語表現です。「ボタン選択」であれば

 selectButton 

小文字で書きはじめて、単語の変わり目で大文字。(スペースを使わな)というのが、不文律になってます。

 

②関数の定義

 関数で行う「一連の処理過程」の 具体的な命令です。

 

 void 関数名(){

  処理命令①;

  処理命令②;

  ・・・・・・

  } 

 

関数の定義は、ループ関数の内側に書くとエラーになります。ループ関数に続けて自作関数を記述する場合、その前に”}”を入れ ループ関数を閉じて下さい。

なお、ループ関数の下側に書いても、ヘッダー部分に書いても、アルデュイーノなら大丈夫。スケッチの全文から、関数定義を探し出して、読んでくれます。とても親切です。

 

読みやすいスケッチを目指すなら、関数の定義は、ループ関数の下に、まとめて付記するのが、ベターです。なお、本家「C++言語」では、「関数の定義」を上に、「関数の呼び出し」を下に、書かかないと、関数が動かない そうです。

 

自作関数を使ったスケッチ

17行もある「似たスケッチ(青字)」を、selectPage という1行の自作関数(赤字部分)に集約しました。使う場所に「呼び出し」を記述、最後にその「定義」を記述してます。
#include <LiquidCrystal.h>
#define upButton 4//upButtonを4番
#define downButton 5//downButtonを5番
#define RS 7//RSピンを7番に設定
#define RW 8//RWピンを8番に
#define E 9//Eピンを9番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);
int page;//
void setup(){
 lcd.begin(16,2);//LCD開始16桁2行
 pinMode(upButton,INPUT_PULLUP);
 pinMode(downButton,INPUT_PULLUP);
 lcd.setCursor(1,0);//位置1桁上段に
 lcd.print("Start");//表示
 delay(2000);//静止
 lcd.clear();//クリア
 page=1;//変数pageの初期値
 selectPage();//selectPage 自作関数
}
void loop(){
 if (!digitalRead(upButton)){
  lcd.clear();//クリア
  page++;
  delay(1000);
  if(page>4){page=4;}//3以上page変数は3
    selectPage();// selectPage 自作関数 
 }
  if(!digitalRead(downButton)){
    lcd.clear();//クリア
    page--;
    delay(1000);  
    if(page<1){page=1;}//1未満のpage変数は1
    selectPage();//selectPage 自作関数
  }
 //selectPage関数の詳細
  void selectPage(){
    switch (page) {
      case 1:// pagaが1のとき実行される
        lcd.setCursor(1,0);//位置1桁上段に
        lcd.print("Page_1");//表示
      break;
      case 2:// pageが2のとき実行される
        lcd.setCursor(1,0);//位置1桁上段に
        lcd.print("Page2");//
      break;
      case 3:// pageが3のとき実行される
        lcd.setCursor(1,0);//位置1桁上段に
        lcd.print("Page3");//
      break;
      case 4:// pageが3のとき実行される
        lcd.setCursor(1,0);//位置1桁上段に
        lcd.print("Page4");//
      break;
      }
}

 

どうでしょう。

 

【雑談】スケッチの中の 不幸の一文 自作関数

 

自作関数は、プログラミングに長けた人なら、ごく当たり前に使います。一方で、「やっとプログラムの筋が見えた」アルデュイーノの初心者にとって、自作関数は困りもモノ。いきなり、xxxxxx( ) と書かれても、「なんだこれ?」と当惑するしかありません

 

自作関数を「アルデュイーノ・公式レファレンス・サイト」で検索しても、何もヒットすることはありません。それもそのはず、自作関数の「命名」は、スケッチの書き手が、自分勝手にできるからです。

 

自作関数のことを知らない初心者は「そんな命令語あるのか?」と一所懸命に、公式レファレンスで、検索をかけるわけです。まあ、自作関数は「不幸の一文」ですね。

 

 

 

2024年12月16日 (月)

入力装置のスケッチを考える アルデュイーノ×鉄道模型13

構想として、こんなスケッチをつくりたい と考えています。

 

⓪「割り込み」ボタンで設定開始

➀基本画面

➁上ボタンで、押すごとに「閾値」の数値が、100ないし50ずつ上がり、

③下ボタンで、数値が下がる。

④選択ボタンで 数値点滅

⑤決定ボタンで、閾値の変数の変更、割込み終了。

 

一気にやると・・・複雑です。困難は分割しましょう。ひとつづつ、シュミレーターで試行錯誤します。

 

1 プログラムへの「割込み」。

 

スピードメータのスケッチで、アルデュイーノマイコンには、原則的に、「センサー通過(経過)時間を監視して、スピードを計算する」ということやらせています。この仕事を中断させて、「センサーの閾値を入力する」という、別の仕事をさせるには、「割込み」というプログラムを書きます。

 

この割込みの実行には「割込み関数」を用いれば、可能です。

 

ただし、「割込み中」は,マイコンの時間に関連する機能が止まります。よって、スピード測定中(スタート・センサーを踏んで、ゴールセンサーを踏むまで)に、「割り込み」をかけると、正確な計測ができません。これは大前提として、容認します。なぜなら、「閾値の設定」は、測定前か、あるいは、測定を中断して、設定ないし再設定するからです。

 

一方、こちらは懸念事項。

時間に関わる機能が停止するので、割込み関数内では、delay関数が使えません。こうなると、スイッチを押す際、チャタリング(信号の重複反応)が懸念されます。まあ、やってみて、・・・対策を考えます。

 

というわけで、先に後回し

 

2 「基本の画面」をLCDに表示する。(復習)

 

 単に、16字×2行の「LCDの表示」が課題です。これができないと、はじまりません。以前の復習がてら・・・Tinkercadのアルデュイーノ・シュミレータにやらせます。作製途上なので「Page_1」と暫定表示させます。

【回路】

2412140

【スケッチ】

#include <LiquidCrystal.h>
#define RS 7//RSピンを4番に設定
#define RW 8//RWピンを5番に
#define E 9//Eピンを6番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);

void setup(){
 lcd.begin(16,2);// LCD開始16桁2行
 }


void loop(){
 lcd.setCursor(1,0);//位置1桁上段に
 lcd.print("Page_1");//表示
 delay(3000);//静止
 lcd.clear();//クリア
 delay(3000);//静止
 }

【結果】3秒ごと点滅すればOK

2412141

【解説】

➀ライブラリーから

「LCDのヘッダーファイル」を、ヘッダーにインクルード

➁ヘッダーに

 RS RW E D4 D5 D6 D7のピン番号を定義し

 LiquidCrystal lcd (RS,RW,E,D4,D5,D6,D7)

 クラス、オブジェクト名、インタンスを記載

③セットアップ関数に 開始命令  

 lcd.begin(16,2)

④ループ関数内の命令

  lcd.setCursor(1,0);//開始位置 左端0桁とし1桁目、上段から

 lcd.print("・・・");//文字列の表示

 lcd.print(変数名);//変数値の表示

  lcd.clear();//表示クリア

 

3 条件分岐文 Swich cace

 

LCD画面を「Page1」の1つでなく、「Page2」「Page3」と複数作製して、一定条件で切替をできたら・・・よさそうです。

 

一定条件の詳細は、先に回すとして、ここは単純に、条件変数が”1”ならば1ページを、”2”ならば2ページを・・・表示する。これをスケッチします。これも「条件分岐」文で、プログラムできます。

 

条件文、if(…){…}の形式を応用して、if(A){~}文の後に、elseif(B){~で、つなげます。翻訳すると、「もしAなら~、もしBなら~、もしC・・・」と。この書き方で できるのですが・・・

 

この”elseif”ではなく、おなじ「条件分岐」効用を持つ"Swich cace"という構文があります。条件のもたらす結果が、3つ以上になると、こちらのほうが、スッキリかけて読みやすい。

【構文】

 int 変数名;//変数の設定

 switch (変数名) {

case 変数値:

   処理~

     break;

case 変数値:

   処理~

     break;

default;//どれにも該当しないとき、そのままにする

 Break;

 

実例のスケッチを置きます。アタマで考えず、1回操作することをオススメ。

 

【スケッチ】

include <LiquidCrystal.h>
#define RS 7//RSピンを4番に設定
#define RW 8//RWピンを5番に
#define E 9//Eピンを6番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);
int page=1;//ページ変数
void setup(){
  lcd.begin(16,2);//LCD開始16桁2行
  lcd.setCursor(1,0);//位置1桁上段に
  lcd.print("Start");//表示
  delay(3000);//静止
  lcd.clear();//クリア
}
void loop(){
  switch (page){
  case 1:// pagaが1のとき実行される
  lcd.setCursor(1,0);//位置1桁上段に
  lcd.print("Page_1");//表示
  delay(3000);//静止
  lcd.clear();//クリア
  break;
  case 2:// pageが2のとき実行される
  lcd.setCursor(1,0);//位置1桁上段に
  lcd.print("Page2");//表示
  delay(3000);//静止
  lcd.clear();//クリア
  break;
  case 3:// pageが3のとき実行される
  lcd.setCursor(1,0);//位置1桁上段に
  lcd.print("Page3");//表示
  delay(3000);//静止
  lcd.clear();//クリア
  break;
  }
}

【表示】

2412142

【使いかた】

 ヘッダーの変数 int page=1 を、=2 再プログラムして書き換えます。

 LCDは、「Page2」に

2412143

 

int page=1; を page=3; 書き換えると 「Page3」に表示が変わります。

2412144

 次は、ボタン操作で、変数page1、2、3と逓増する、あるいは、3、2、1と逓減することができれば、・・・

 

4 ボタン操作で「画面」を変える

 

 3のスケッチで、「変数page」の設定を書き換えれば、LCD画面が「Page2」「Page3」と書き換えられました。ボタン操作で、「変数page」を1、2、3と逓増する、あるいは、3、2、1と逓減することができれば、、スケッチを書き換えることなく、「変数page」の変化に応じ、LCD画面を操作することができます。

 これには、if文を使います。「もし、ボタンを押せば、~せよ」です。マイコンでは、「ボタン押されて=デジタルポートが0Vになれば、~実効せよ」。このように記述します。赤色の部分です。

【スケッチ】

#include <LiquidCrystal.h>
#define upButton 4//4をupButtonに
#define downButton 5//5をdownButtonに
#define RS 7//RSピンを7番に設定
#define RW 8//RWピンを8番に
#define E 9//Eピンを9番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);
int page;//ページ変数
void setup(){
 lcd.begin(16,2);//LCD開始16桁2行
 pinMode(upButton,INPUT_PULLUP);//4ピン設定、内部プル
 pinMode(downButton,INPUT_PULLUP);//」5ピン設定、内部7ル
 lcd.setCursor(1,0);//位置どり:1桁上段に
 lcd.print("Start");//表示
 delay(2000);//静止
 lcd.clear();//クリア
 page=1;//ページ変数の初期値
 switch (page){
  case 1:// pagaが1のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
     lcd.print("Page_1");//表示
  break;
   case 2:// pageが2のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page2");//
  break;
  case 3:// pageが3のとき実行される
   lcd.setCursor(1,0);//位置1桁上段に
   lcd.print("Page3");//
  break;
     }
}
void loop(){
 if (!digitalRead(upButton)){
  lcd.clear();//クリア
  page++;//ページ逓増
  delay(1000);//チャタリング対策
  if(page>3){page=3;}//3超過のpage変数は3
  switch (page){
   case 1:// pagaが1のとき実行される
    lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page1");//表示
   break;
   case 2:// pageが2のとき実行される
    lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page2");//
   break;
   case 3:// pageが3のとき実行される
    lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page3");//
    break;
   }   
  }
 if(!digitalRead(downButton)){
  lcd.clear();//クリア
  page--;
  delay(1000);  
  if(page<1){page=1;}//1未満のpage変数は1
  switch (page) {
   case 1:// pagaが1のとき実行される
        lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page1");//表示
   break;
    case 2:// pageが2のとき実行される
    lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page2");//
   break;
   case 3:// pageが3のとき実行される
    lcd.setCursor(1,0);//位置1桁上段に
    lcd.print("Page3");//
   break;
   }
 }
}
【結果】
➀最初に「Start」と表示され、初期値「Page1」がでます。
2412160
➁アップボタンで、「Page2」
2412164
「Page3」となり
2412165
③ダウンボタンで、「Page2」
2412166
「Page1」。
2412167

 

【解説】なんで”!”否定論理演算がつくの?

 

if(!digitalRead(upButton)){//「アップボタンピン=5V」の否定=ボタン押され0Vになるなら

  page++;//ページ変数を1つ増やす。

  ~処理スケッチ 

 }

➀前半は、とても読みにくいスケッチです。なぜ、”!”(否定論理演算)がつくのか?・・・だから、プルアップはキライです。

 

if (!digitalRead(upButton)){~処理

 

”!”は、否定論理演算です。直訳すると、「上げボタンのピンが5Vを読む」でないならば・・・。すなわち、(上げボタンに繋がる)ピンが、5Vでない=ピンが0V  ならば ~しろ ということです。

 

「ピンが0Vになる」状態とは?、 ボタンが「押されてる?」「離されてる?」

24120540

 

感覚的には、「押して5V」、「離して0V」です。でもこの回路、プルアップ抵抗のスイッチです。スイッチを押して=0Vになる回路でした。

24120539

24120540_20241205201001

思考判断が、混乱しますね。スタートは「ボタンを押す」こと。ゴールは「押すこと」で「マイコンが動く」ことです。アルデュイーノには、ボタンを押す人は見えません。5Vか0Vか、ピンの電圧で判断します。

 

スイッチを押すことを、ピンの状態から読むと、ピンがGNDとつながり、同じ0Vになることです。

24120540_20241205201001

したがって、「スイッチを押してマイコンを動かす」には、「(スイッチが押され)ピンが0Vになればマイコン作動」とプログラムしないといけません。

だから、スケッチで「digitalRead=読んでいない、なら~せよ」と書きます

これで筋が通ります。

 

まだ,アタマが混乱するようでしたら、「プルアップ・スイッチ」は「スケッチに”!”否定論理演算を置く」と「バカの1つ覚え」でいいと思います。(プルアップだから、!Readと書く)と。

 

➁後半は簡単です。インクリメント。

page++//pageという変数を、1つづつ増やせ。

スケッチに書くと page=page+1 これでもいいのですが、

 

変数名++ (インクリメント)という書式 で書きます。

 

たとえば 変数pageの数値を、1つづつ上げるには、”変数++”。たとえば、page++ と。

また、「1つづつ減らせ」は、デクリメント。”変数--”。たとえば、page-- です。

 

【もうひとつの課題】

 

 もうひとつの課題です。同じプログラムが 重複して並んでいます(青字分部です)これには、重複部分を1行で書く「自作の関数」という対策があります。これを使うと、スケッチを短くできます。次回に説明します。

 

 

 

 

 

 

2024年12月10日 (火)

アルデュイーノ・シュミレータ:アルデュイーノ×鉄道模型12

回路設計

「内部プルップ」の謎が解決したので、「入力装置」の作製に入ります。

回路構成はこの通り。

24120900

主要部分のピン接続

2412070_20241210182501

押しボタン(タクト・スイッチ)を5つ追加しました。最終的に「割込→D2」「上移動→D4」「下移動→D5」「選択→D3」「決定→D6」のスイッチを予定しています。そのため、LCDの関連ピンを右に寄せました。すべて、抵抗を要しない「内部プルアップ」を使います。

残念ながら、パラレル接続のLCDは、配線数が多いため、デジタル・ピンをすべて埋め尽くしています。参考までに、アイスクウェアドツー(I2C)接続のLCDであれば、4本で済みます。違いは、インクルードするヘッダーファイルが異なるだけです。

 

Tinkercad(アルデュイーノ・シュミレーター)を活用する。

ところで、アルデュイーノには、ネット上に無料シュミレータがあるのをご存知でしょうか?この画像も、シュミレータ「Tinkercad」スクリーン・ショットしたものです。

 

このTinkercad、3D_CAD「フュージョン360」で有名なオートディスク社が無償公開しているサイトです。その目的は、子供向け「教育3D_CAD」のサイトです。その3D_CADの拡張に、アルデュイーノ・シュミレータが置いてある、といったところです。

主目的は「小中高の学校教育」ですが、メールアドレスの登録だけで、不器用な大人も個人利用できます。専門の記号ではなく、イラストなので、電子音痴にはうれしい仕様です。

2412092

もちろん、シュミレーターなので、シュミレーションを実行すれば、イラスト上で、LEDが光る、LCDに文字表示する、なんてことができます。

 

ここで組んだスケッチは、パソコンを通じて、実物のアルデュイーノに転送できます。つまり、スケッチを検証するのに、実物の電子部品を組む必要がなく、パソコンとネット環境があれば、カフェでもできる・・・そんな使いかたもできます。

当然ですが、スケッチを間違えれば、プログラムのミスを警告され、回路設計を間違えると、ちゃんと「爆発イラスト」がでてきます。

2412094

なお、Tinkercadは、子供に向けた「デジタル教育のサポート」が主目的ですから、電子部品が豊富にあるわけではありません。また、トランジスタなど、実際の部品選びには、電流や電圧の限度(定格)や、部品の品質を考慮しなければなりませんが、そういう細かい設定になっておらず、これを無視しても、通ってしまいます。

1つ、具体的に指摘すると、トランジスタのHFE倍率の設定がない。これじゃ、実物でトランジスタを選べません。シュミレータが動いたから、トランジスタなんて「なんでもいいや」なんて、大きな誤解を与えかねません。これは、教育上、よろしくない。

まあ、「LEDを点灯」は、電子工作の最初の課題なので、これに必要な「抵抗値の設定」ぐらいは、できるようになっています。それ以上は、「あまり難しい計算をさせない」方針なのかもしれません。といっても、これ、「算数」なんですけどね。

 

それでも、アルデュイーノのプログラム言語(C++)を学習し始めるのに、2~3千円する分厚い教則本を買うよりは、ずっと有益です。弄って覚える、これに勝る学習法はありません。なにより、無料はうれしいじゃないですか。

このブログを検証する人なんて、いるかわかりせんが、私は、「入力措置」のスケッチ開発に、このバーチャル・アルデュイーノを活用し、これを使って解説します。

【注意】

このシュミレータ、ところどころ、実物のアルデュイーノでは「ありえないクセ」がある。これも事実です。Tinkercadで LCDをシュミレートする際には、次の2点は要注意です。

2412093

バックライトのGND側に、1KΩの抵抗を噛ませる。でないと爆発します。(実物では不要)

可変抵抗は、GND側に全振りする。でないと文字が浮かばない。(実物は、いじって調整する)

 

【もうひとつ】

もうひとつ、、もっとレベル高いシュミレーターに Wokwi (ウォクイ)があります。鉄模にたとえると、Tinkercadが「プラレール」なら、Wokwiは「Nゲージ」ですかね(笑)こちらは、有料版、無償版2つあります。有料版では、標準外のライブラリーが使えるようです。

 

【雑談】

21世紀を生きる子供は、こんなふうに、3D_CADやマイコン・プログラムを学ぶんですねぇ。感慨深いです。しかも、Tinkercadはネット上にあるので、国境がありません。20世紀生まれのIT実業家(ビルゲイツ、ジェンスンファンなど)は、みんな先進国出身者(というかアメリカ人)だったけど、・・・今後は、そうでもない のかもしれません。

 

さて、いきなり「完成スケッチ」を公開して、あれこれ説明できれば、てっとりばやいのですが、実は、まだスケッチが完成してません。私自身、つくりながらブログを書き残しています。その点、ご了承ください。まあ、読むような人は少ないので、気楽にすすめます。

 

構想として、

⓪「割り込み」ボタンで設定開始

➀基本画面

➁上ボタンで、押すごとに「閾値」の数値が、100ないし50ずつ上がり、

③下ボタンで、数値が下がる。

④選択ボタンで 数値点滅

⑤決定ボタンで、閾値の変数の変更、割込み終了。

 

一気にやると・・・複雑です。困難は分割しましょう。次回以降、ひとつずつ、シュミレーターで試行錯誤します。

 

2024年12月 6日 (金)

内部プルアップの謎 アルデュイーノ×鉄道模型11

 スピードメーターの閾値入力装置

 

スピードメーターを使うために、常に「パソコンが必要」というのでは、使い勝手が悪すぎます。「パソコン不要」とするためには、「スピード表示装置=LCD」と、「閾値の入力装置」が必要です。前回まで、「表示装置=LCD」の作製を解説しました。今回からは、「入力装置」の作製を、解説します。

 

アルデュイーノ・マイコンの「入力装置」を、電子工作をするとしたなら、思い浮かぶ装置は「テンキーボード」あるいは「ロータリーエンコーダー」です。これらの部品は、入門用アルデュイーノ・スターターキットでも、高価なバージョンには、同梱されています。しかしながら、エコノミー版スタータキットには、同梱されてませんでした。エコノミー版にあるのは、ボタンスイッチだけ。

まあ「ないのなら、作る」しかありません。

そこで、

➀スケッチ(プログラミング)を工夫して、LCDに「閾値数の選択画面=メニュー」を作ります。

➁LCDは、2段表示です。メニュー画面は、スクロールで表示させます。

③表示数値を「ボタン操作して」で、選択できるようにします。

④この選択数字が、閾値になるように、スピードメータのスケッチを書き換えます。

 

これなら、部品として、ボタンスイッチとLCDがあれば、装置ができます。回路設計は単純ですが、スケッチの作製は、複雑です

だけれども、この手の表示画面は、模型コントラーラのみならず、テレビ、オーディオ、電子レンジ、ありとあらゆる家電製品についてます。そういうモノを「電子工作」や「プログラミング」することは、とても「教育的」です。

 

内部プルアップという謎

 

この表示装置、LCDの接続を除けば、回路設計は、単純です。ボタン・スイッチ3つ。それに繋がるジャンパーワイヤー。新たな使用ポートが、3つ増えるだけ。

単純にできた理由。それは、回路設計で、「内部プルアップ」という機能を用いたからです。これで、プルダウンに使う抵抗部品が不要になり、プルダウン回路も作りません。半面、この「内部プルアップ」回路は、外見だけで判断すると、「意味不明」「理解不能」なシロモノです。

 

まあ、騙されたつもりで、その通りに組み込めば、動きますけど。それでは、どうにもスッキリしません。STEAM教育には、「ものつくりニッポンのミライ」がかかっている(笑)ので、本題のの前に、「内部プルアップ」の謎解き、から、始めます。

 

よく見れば・・・ヘンな回路

 

これが「内部プルアップ」回路図です。

241205pullup0        

単純です。が、よーく見ると・・・コレ へんだよ!

 

スケッチでは,ピンモードがINPUT(入り)=電気が入るピン設定 です。でも、スイッチを挟んで、ジャンパー線がつながる先は「GND」。だから・・・

ボタンを入れると、D10ピンは「0V」。これは見ての通り。直接、GNDと線がつながるので「0V」。

241205pullup1

じゃあ、「5Vをどう読むの?」。5V電源に繋がるわけでなく、ボタンを離しても、中途半端に線が浮くだけ。

241205pullup2

さっぱりとわかりません。

 

そもそも「プル・アップ」とは?

 

1つ戻ります。そもそも、内部でない「プルアップ」とは、どんな回路だったのか?

241205pullup10

➀スイッチを入れる。

241205pullup11

  

これで、抵抗を通過した電気は、まっすぐにGND(グラウンド)に落ちます。グランドに落ちても、抵抗を噛んでいるので、無限大に電気が流れる=ショートする ことはありません。D10ピンの場所は、GNDと直接つながるので、その電位は同じく0Vなっているはず。よって、D10ピンの場所は「0V」です。

 

では「スイッチを切る」。これで、電気はグランドに落ちず、すべてアルデュイーノに流れます。

よって、D10ピンの場所は 5V・・・になりますかぁ?

241205pullup12

 

素朴な疑問。5V電源から、抵抗を通過して、5Vのまま?。

 

なお、私自身、電子工作は素人の域で、アルデュイーノの分解して調べたわけではありません。間違えていたらゴメンナサイです。

 

プルダウン回路の復習

 

プルアップ前に、分かり易い「プル・ダウン回路」と意味を復習します。

そもそも「プルダウン」なんて考えは、大学受験にも高校の物理学にも、出てきません。たぶん、工業系高校や高専の電子工学系の生徒でなければ、知りえないと思います。

プルダウンのない回路から考えます。

24120520

➀ボタンを入れると、アルデュイーノに電気が流れ、ピンの位置で、電圧は5Vになります。

24120521

➁ボタンを切れば、アルデュイーノに電気が途絶え、ピンの位置で、電圧は0V・・・

 なのですが、実際には、電位が不安定になる。(電子工作の界隈では、「浮く」というそうです。)

24120522

③これを防ぐため、切りの状態で、GNDに繋げる。これで、「切」であれば、D10は「0V」

241205231

④ もし、③の状態でボタン入れると、電流は、すべて直接GNDに落ち、ショートとなる。

24120523

⑤ショートを防ぐため 抵抗を入れる。スイッチが入ると、D10ピンの電圧は、電源電圧の5V.

241205241

➅ボタンを離す(放置する)と、ピンの電圧は、繋がっているGNDの電位と同じ「0V」。

241205242

結論。アルデュイーノ(マイコン)を動かすには、読ませる「電圧」を、0Vか5Vかハッキリさせる必要がある。その算段が「プルダウン回路」でした

 

では、プルアップ回路。

これも、目的はプルダウンと同じ。マイコンが読む電気を、「0V」か「5V」か、はっきりさせることにあります。そのための「回路」です。

24120531

 

プルダウンとの違いは、

24120530

 

「スイッチ」「抵抗」の、位置があべこべになっていること、そこに注目!

 

➀「0V」を読ませるには・・・ボタンを入れる

24120532

プルダウンとは逆。スイッチが押す。これで、抵抗が少ないGND側に、電気がすべて抜ける。ただし、抵抗を通過しているので、ショートにはならない。アルデュイーノの側は、GNDと直接つながるので、0Vとなる。これはよし。

 

➁「5V」を読ませるには、・・・ボタンを離す(放置する)

スイッチを切る。これで、電気はすべてアルデュイーノ側に流れる。

24120533

  けど、10KΩ抵抗を通過して 5Vになるか?へんでしょ・・・。

 

ほぼ、5Vになる理由

 

アルデュイーノの内部に「隠し抵抗」があるためです。それも、抵抗値が大きなモノ。アルデュイーノの内部にあるので、回路図やイラストには描かれません。これが「誤解の元凶」なんです。

24120535

 

試しに、外部抵抗を10KΩ=10,000Ω、内部の「隠し抵抗」を100MΩ=100,000,000Ωと推定すれば、入力ピンの位置の電圧は、分圧の公式で、このように求まります。

241204270

 

分圧=電源電圧×後の抵抗値/(前の抵抗値+後の抵抗値)

    5  ×100,000,000/(10,000+100,000,000)

  =4.999・・・

たしかに、ほぼ、5Vになります。

24120536

 

外から見ただけでは、分かるわけありません!なーんだ!・・・そういうこと なのね。

 

では、「内部抵抗によるプルアップ」

 

外見は・・・

24120538

その中身は、次のイラストの通りです。

➀ボタンを離す(放置する)。分圧の公式から4.999V

24120539

➁ボタンを入れる。GNDとD10が直接つながるので、電気の流入があっても、D10は0V。

24120540_20241205201001

よく解説にある「内部抵抗を使い・・・」の「内部抵抗」とは、プルアップ回路の「外部抵抗」を飲み込んでいるだけのこと。これと別に、巨大な「隠し抵抗」が、内部に存在してます。

つまり、内部には、2つの抵抗があるんです。「飲み込み抵抗」と「隠し抵抗」。こんな仕組みなら、話の辻褄があいます。そして、表面を見ていては、絶対に理解できません!

 

スケッチの書き方。

プルアップの謎。解けたところで、内部プルアップ機能を使っていきます。

単純なLED点灯回路で、実習します。ささいな結果ですが、「独学」において、自信の積み上げは「大切」です。

【回路】

24120550

【スケッチ】

// 内部プルアップ
#define LEDpin 3//LEDピンをD3に
#define BUTTONpin 10//ボタンピンをD10に
void setup()
{
  pinMode(LEDpin,OUTPUT);//D3ピンは出力
  pinMode(BUTTONpin,INPUT_PULLUP);//D10ピン内部プル
}
void loop()
{
 int volume=digitalRead(BUTTONpin);//D10ピン読取
 if(volume==HIGH){
     digitalWrite(LEDpin,HIGH);}//D10ハイなら点灯
 if(volume==LOW){
     digitalWrite(LEDpin,LOW);}//D10ローなら消灯
}

 

【結果】

LEDは最初から点灯し、

2412061

ボタンを押すと消灯。

2412062

なぜなら、

①「押す」と、電圧がグランドに落ちて、D10は0V(LOW)。D10の電圧がLOWならば、消灯

②「離す(放置する)」と、分圧をとって、D10は約5V(HIGH)。電圧がHGHTならば、点灯

フルアップ回路では、操作感覚と、その結果が「真逆」になります。

 

【スケッチの修正】

離して→消灯、押して→点灯。これが「まっとうな操作感覚」です。ただし、回路設計上、押すと電圧はローに、離すと電圧はハイに、これは固定されます。そこで、スケッチを書き換え、LED点灯が「真逆の結果」になるように、次のように書き換えます。

if(volume==LOW){

    digitalWrite(LEDpin,HIGH);}

 //(ボタンを押して)電圧がロー ならば LEDはハイ(点灯)

if(volume==HIGH){

 digitalWrite(LEDpin,LOW);}

 //(ボタンを離し)電圧がハイ ならば LEDはロー(消灯)

 

でも・・・ローならばハイ、という 言い回しで混乱する可能性がありそうです。

 

【別のやりかた】

 

”!”という論理演算子を使うと、このように書くこと も できます。

 

(ボタンを押して)電圧が『ハイ」でない ならば LEDはハイ(点灯)」

・・・「ハイ」でない(すなわちロー) ならば LEDはハイ

 

if(volume==!HIGH){

    digitalWrite(LEDpin,HIGH);

 }

if(volume==!LOW){

 digitalWrite(LEDpin,LOW);

 }

 

ロジックは同じです。「ロー」ならば「ハイ」=「ハイでない」ならば「ハイ」。後者は、同じ「ハイ」という単語を2回使っただけです。

 

【スケッチ】

// 内部プルアップ
#define LEDpin 3//LEDピンをD3に
#define BUTTONpin 10//ボタンピンをD10に
void setup()
{
  pinMode(LEDpin,OUTPUT);//D3ピンは出力
  pinMode(BUTTONpin,INPUT_PULLUP);//D10ピン内部プル
}
void loop()
{
int volume=digitalRead(BUTTONpin);//D10ピン読取
if(volume==!HIGH){
    digitalWrite(LEDpin,HIGH);}//D10ハイなら点灯
if(volume==!LOW){
    digitalWrite(LEDpin,LOW);}//D10ローなら消灯
}

 

2024年11月26日 (火)

液晶表示器(LCD):アルデュイーノ×鉄道模型10

 液晶表示器(LCD)

2411213

冒頭の「液晶表示器(LCD)の使いかた」などというタイトル。これは「鉄道模型趣味」か?。正直に言えば、その疑問は確かにあります。

けど、「ワパーパックを作る」というテーマ。 ありますよね。これは、純粋に言えば、鉄道の鉄のも字出てこない「電子工作」です。それでも、正真正銘「鉄道模型」の工作分野です。自作パワーパックの記事は、時折り、鉄道模型雑誌に掲載されることがもあります。

ならば、「スピードメータを作る」も、鉄道模型工作の範疇でいいはず。考えてみれば、スピードメータのない鉄道車両は、ありません。事実として、模型メーカーであるIMON社から「鉄道模型用スピードメータ」が、製品化されているのです。ユーザ-にだって、「スピードメーター」のニーズはある はすです。LCDは、スピードメータの重要なパーツです。避けて通れません。

自立した「スピードメーター」に必要なモノ

前回まで、スピードメータの結果は、ノートパソコンに表示していました。それで、機能はします。が、「表示のためにパソコンに繋がなければならない」というのでは、不便です。できれば、パソコン無用にして、独立した製品としての「スピードメータ」に仕上げたいところです。

その課題は2つ。パソコンを使わない「表示器」。それと、センサーの判定基準(閾値)を変更するための「入力装置」。これらが必須アイテムです。

今回のテーマは「表示器」の工作です。これには、プログラムが容易で、どんな文字でも、制約なく表現できる「液晶表示器(LCD)」を使います。

実は、IMON製品のような「7セグメント表示器=通称7セグ」も、検討しました。しかしながら、7セグ表示器では、数字表現しかできません。加えて、多桁表示には「ダイナミック点灯」が必須。これは、回路もプログラムも、初心者には「難題」です。というわけで、「LCD」です。

【雑談】表現不足の7セグ、鉄模メーカーは なぜか大好き?(笑)

「7セグ」とは、こんなモノです。見ての通り「数字と英字a~h」しか表現できません。文字数も最小限です。その表現は、ある種の「暗号」でしかありません。

2411212

そういえば、模型メーカTomixから「ティーノス」なる「自動運転制御機器」があります。この、表示装置が「7セグ」なんです。この製品、「ここに、1文字ずつ暗号コードを入れて使え」・・・というらしい(笑)。前代未聞の迷機 だと思います。

この表示機器(「インターフェイス」)で、ここに複雑な設定コードを入れるとしたら、ユーザーは、強いストレスを受けます。たとえば、もしユーザーが「入力ミスをした」としたら、そのユーザー「自分はどこでミスしているのか」わかりません。なぜ?。7セグでは、入れたコード列が、表示機器に残らないからです。

2411211

ただ、Tomixだけを笑えません。デジトラックスのDCCコントローラも、前のバージョンは7セグでした。

1810031

こちらの問題も、7セグの表現不足にあります。DCC工作をやってる人なら、切実なんだけど、デコーダーの応答をもって、「工作の成否」を慎重に判断し、このチェック作業を繰り返してるんです。ここで、コントローラーから「否」のメッセージを受けることは、1万円する高価なデコーダーを、一瞬で燃やしかねない「危険で重要なサイン」なんです。

1810033 

 ↑ これが、「デコーダー応答なし」のDCC危険サイン。”do not answer”の略か?。って、日本人にはピンとこない。応答がないのは、DCC工作に失敗してるか、すでにデコーダーが死亡してるか、いずれか。このまま、DCC運転してしまうと、デコーダーの焼損事故になる。

そんな危険なサインなら「赤点滅に、大音量ブザー音」ぐらい、親切な表現にすべきです。考えてみてほしいです。1万円のパーツが、「一瞬でぱぁ」ですよ!。なのに・・・です。デジトラは「7セグ表示」だったんです。「7セグ」では、暗号サインでしか表現できません。もし、ユーザーが、「サインの意味」を知らなければ、危機を素通りしてしまいます。

Tomixに、デジトラックスまでも・・・、どうやら、鉄模メーカの7セグ好きは、日米共通の懸念事項かもしれません。

いまどき、スマホやパソコンを所有していないユーザは皆無です。機器を、これらに繋いで、操作することも、当たり前になってます。まして、「複雑な入力」や「多様なサイン」が求めらる機器なら、スマホやパソコンにつないで「画面で操作させる」。スマホやパソコンの存在を、前提に置いた製品で、全く問題ないんです。

時代錯誤の7セグインターフェイスでは、ホント困ります。AIが騒がれる令和の世に、鉄模メーカーのアタマの中だけは、いつまで「昭和のまま」なんですかねぇ?

回路設計

液晶表示器には、➀パラレル接続(安いけど、リード線の数がやたら多い)と、➁I2C=アイスクウェアドツー接続(お値段チョット高め、リード線4本だけ)の、2タイプあります。アルデュイーノのスターターキットには、安価(だけど接続複雑な)パラレル・タイプが入ってるので、そちらの解説とします。

接続は、つぎの通り、

2411241

要部拡大図・・・複雑な配線です

2411202_20241120131301  

RS(ラッチ)、RW(リードライト)、E(エネイブル)。通信の制御に関わる線です。・・・専門用語の意味はあと回しにして、これらは、デジタルピン2~13(番号は任意)に接続します。今回は、RSを4番、RWを5番、Eを6番に接続しました。

D4~D7は、通信内容に関わる線です。こちらもデジタルピン2~13(番号は任意)に接続します。今回は、D4を10番,D5を11番、D6を12番、D7を13番に、に接続しました。

Aは、5V電源、KはGND。これらは、バックライト電源です。

GNDはGND.VCCは電源、VOは可変抵抗の真ん中。これらは本体電源です。可変抵抗は、回すことで、文字の明るさをコントロールできます。

ブレットボード、ジャンパーワイヤー(線)は、いずれも、アルデュイーノのスターターキットに付属されてます。

2411251

実際に組んでみました。一部をピンに替えて、ワイヤー数を減らしたのですが、それでも何本もワイヤーが立て込んで、ちょっと複雑に見えます。

スケッチ

スピードメーターに組み込む前に、簡単な練習スケッチで LCD表示だけを動かしてみます。

(1)ヘッダーファイルを ライブラリーから引き出す

スケッチをつくります。

まず、ライブラリー(書庫)から、LCDを動かす「ヘッダーファイル」を引っ張り出します。ライブラリーとは、LCDをはじめ、さまざまな「部品」を動かす「専用ソフトウエア=ヘッダーファイル」が詰まった「書棚」です。「ヘッダーファイル」とは、LCDを動かす専用ソフトです。

本来、LCDなどの部品を使うには、動かすためのプログラムを書き込まなければなりません。が、これをいちいち書いていては、タイヘン。プログラムが冗長になり、読取りができません。まして、専門知識のない初心者には、難解すぎます。そこで、部品操作だけを1行でまとめた専用ソフトが、この、「ヘッダーファイル」です。

 ヘッダーファイルの引っ張り出し方は、①-④の手順です。

➀スケッチ・タブから、「ライブラリーからインクルード」

2411203

➁インクルード ドロップダウン・リストから、LidqidCrysitalをクリック

24112432

③スケッチの先頭「ヘッダー部分」に、LCDヘッダーファイルが、次のように入ります。

2411204

④インクルードしたヘッダーファイルの下に 次の記載をいれます。

2411206_20241123174101

【解説】

LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7)

意味:(クラス=分類(オブジェクト=物)インスタンス=生成)

専門用語は、クラスオブジェクトインスタンス、などとカッコ呼ばれます。が、要するに「動かす部品種LiquidCrysial」がクラス、「このスケッチ上の名称lcdオブジェクト、「その詳細設定」がインスタンスで、ここでは「アルデュイーノ側のピン番号」とされてます。

ですから、インスタンス分部に

LiquidCrysital lcd(4,5,6,10,11,12,13)

と 直接、ピン番号の数字を入れても、ちゃんと動きます。が、これでは「数字の意味」がわからないですよね。よって、その書き方は好ましいものではありません。

よって 定数の機能を使い,前段で#define RS 4//RSピンは4番ピン・・・と、定数機能で数字を定義しておき、インスタンス分部には、(RS,RW,E,D4,D5,D6,D7)と定数を入れる ピン番号の変更を考慮すれば、こちらがベターなスケッチです。 

(2)セットアップ関数に 開始命令を入れる

  次のオブジェクトの制御=「開始の命令」を入れます。

2411207

【解説】セットアップ関数に、次のスケッチを入れます 

lcd.begin(16,2)

オブジェクト名.メソッド詳細設定)・・・ドットを忘れないように。

オブジェクト=lcdと名付けた物を、メソッド(命令)begin=開始せよ、詳細は16文字、2段

(3)ループ関数に 制御命令を入れる

 さまざまな「オブジェクトの制御命令」を使うことで、LCD表示をコントロールします。各、制御命令について、詳しくは アルデュイーノリファレンスを参考に

➀lcd.setCursor(〇,▲);//文字の開始位置指定,【注意】左端が0桁とし、上段を0下段は1

➁lcd.clear();//表示を消去

③lcd.blink();//文字を点滅

(4)テスト・スケッチ

動作確認のためのスケッチです。

//LCD動作チェック
#include <LiquidCrystal.h>
#define RS 4//RSピンを4番に設定
#define RW 5//RWピンを5番に
#define E 6//Eピンを6番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);

void setup(){
lcd.begin(16,2);// LCD開始16桁2行
}

void loop(){
  lcd.setCursor(1,0);//左端0桁とし1桁目、上段から
  lcd.print("Hello world(^^)/");
  delay(3000);//3秒静止
  lcd.clear();//表示クリア
  lcd.setCursor(1,0);//1桁目、上段から
  lcd.print("\(^^)Hi!");
  delay(3000);
  lcd.clear();
}

➀最初の表示

2411261

➁3秒後の表示

2411262

【雑談】電子立国ニッポンの名残・・・

どうでしょう?鉄道模型に限らず、LCD表示器はあらゆる家電製品に組み込まれています。自分の手で、工作して、自分勝手な表示をしてみる。おもしろいでしょ。「こんな仕組みだったのか」と。これ「電子工作の醍醐味」です。これは、しょせん初心者工作キットなんで、アルファベットと数字ですが。

実は、日本語のカタカナ表記もできます。日本語は、世界的に見れば、利用人口が少ないマイナーな言語で、かつ、一番難解な言語です。それなのに、ここに用意されているのは、なぜでしょう?。

これは、LCDの基本ソフトを開発した時代、日本がまだ「家電王国」「電子立国」を欲しいままにしていた、その「時代の名残」ですね。たぶん。「参考スケッチ」と「50音」を残しておきます。遊んでください。

その後の、この電子立国の凋落ぶりは、言うまでもありません。これも、日本的に言うなら「諸行無常」ですか・・・。

【参考】

//LCD動作チェック(カタカナ併記)
#include <LiquidCrystal.h>
#define RS 4//RSピンを4番に設定
#define RW 5//RWピンを5番に
#define E 6//Eピンを6番に
#define D4 10//D4ピンを10番
#define D5 11//D5ピンを11番
#define D6 12//D6ピンを12番
#define D7 13//D7ピンを13番
LiquidCrystal lcd(RS,RW,E,D4,D5,D6,D7);

void setup(){
  lcd.begin(16,2);// LCD開始16桁2行
  }

void loop(){
  lcd.setCursor(1,0);
  lcd.print("Hello world");
  lcd.setCursor(1,1
);
  lcd.print("\xba\xdd\xc6\xc1\xca \xd0\xc5\xbb\xdd");
  delay(3000);
  lcd.clear();
  lcd.setCursor(1
,0);
  lcd.print("Hi (^^)/");
  lcd.setCursor(1,1);
  lcd.print("\xca--\xb2");
  delay(3000);
  lcd.clear();
}

【追記】スケッチ上 バックスラッシュ”\”マークが、”¥”になってます。記載時の入力は”\”なのですが、プレビューで”¥”に勝手に変換されてしまいます。原因不明です。

正しくは、半角の”\”です。コピーペーストするなら、その際、修正してください。

2411263

 

2411264

【日本語コード】


 



\xb1



\xb2



\xb3



\xb4



\xb5



\xb6



\xb7



\xb8



\xb9



\xba



\xbb



\xbc



\xbd



\xbe



\xbf



\xc0



\xc1



\xc2



\xc3



\xc4



\xc5



\xc6



\xc7



\xc8



\xc9



\xca



\xcb



\xcc



\xcd



\xce



\xcf



\xd0



\xd1



\xd2



\xd3



\xd4


 


 



\xd5


 


 



\xd6



\xd7



\xd8



\xd9



\xda



\xdb



\xca



\xa6



\xdd


 


 


 


 

 




\xa7



\xa8



\xa9



\xaa



\xab



\xac


 


 



\xad


 


 



\xae



\xaf



\xa1



\xa4



\xde



\xdf

 

 

 

 

2024年11月16日 (土)

双方向スピードメータ アルデュイーノ×鉄道模型⑨

双方向スピードメータ

回路設計

前回の「指定方向スピードメータ」を、そのまま使います。

24101210

アルゴリズムを考える

前回までは、センサーAからセンサーBへ、走行方向を指定するスピードメータでした。これは、速度計算上、ABの経過時間が必要で、ならば、走行方法を限定たほうが、短時間でアルゴリズムがまとまるためです。実際、最初からAからB、BからAの双方向を考えていては、頭が混乱します。

スピードメータのアルゴリズムは、2つの条件文を繋ぐこと すなわち

「ある条件で、①センサーAの時間を取得」

「別の条件で、②センサーBの時刻を取得、③時刻の差から経過時間を求め、④距離を経過時間で割り、速度を求める」

というものです。

この条件とは、Cdsセンサーに模型の影が差すことで、電圧降下が起き、これを観測することでした。

ただし、単純に条件文を繋げただけでは、経過時間の測定が正確にできない(5回「不都合なアルゴリズム」参照)。そこで、条件文に、さらなる条件を追加する、策をとりました(6回「アルゴリズムを考える」参照)。「~かつ~、ならば~する」という論理構成です。では、この基本的なアルゴリズムを維持したうえで、双方向スピードメータに仕立てるには・・・

2411080

意外かもしれませが、これがカンタンなんです。

条件に「赤字部分」を加えて「~かつ~かつ~」なら、3条件にします。逆に言うと「3条件の1つでも満たさなければ、処理をスルー」という論理です。

2411081

紙の上で シュミレートします。

まず、AからBへのスピード(経過時間)を測るとき、その条件上、BからAへのアルゴリズムには、入れません。

2411121

次に、BからAへのスピード(経過時間)を測るとき、その条件上、AからBへのアルゴリズムには、入れません。紙の上で、シュミレートします。

2411122

フローは上から下に見てしまいますが、B→Aを測るとき、最初に踏むのはBセンサーで、Bを踏んだ時点では、Aの反応は起きてない、よって、最初1番分岐はスルーです。2番分岐は、センサA-の時刻を持たないので、これもスルーです。よって、関与するのは3番(1回だけ)、又は4番(Aを踏んだら)です。

もし、4番をスルー(Aセンサーをまだ踏んでないとき)、ループして1番に戻りますが、この時点では、3番を1回だけ処理しており、「センサーB時刻」を持ってます。以後、1番2番は、Aを踏んで4番でBAのスピード計算が終わるまで、ずっとスルーです。

双方向スピードメータ スケッチ

//双方向スピードメーター
//定数設定
#define AnalogPort_A 0//定数:cdsセル「センサーA」の入力ポート設定
#define AnalogPort_B 1//定数:cdsセル「センサーB」の入力ポート設定
#define DISTANCE 0.115//定数:センサー間距離「m単位」で入れること
#define THRESHOLD 400//定数:cdsセルの反応閾値
#define WAIT 5000//定数:計測終了後の待機時間「ミリ秒単位」で入れること

//変数設定
unsigned long timeA;//変数:センサAの通過時刻
unsigned long timeB;//変数:センサBの通過時刻
//セットアップ関数
void setup(){
 Serial.begin(9600);
}

//ループ関数
void loop(){
 //AからBへ速度計測 
 //計測開始
 int sensorA=analogRead(AnalogPort_A);//センサーA電圧読取り
 //センサAに影(電圧閾値未満、かつA時刻なし、かつB時刻なしなら、
 if(sensorA<THRESHOLD && timeA==0 && timeB==0){
  timeA =millis();//Aの通過時刻
 //パソコン表示
  Serial.println("<--計測開始--");
  Serial.print("センサA電圧は ");
  Serial.print(sensorA);
  Serial.println("/1023でした。");
 }
 //センサBを踏んで、かつA時刻あり、かつB時刻なし なら 計測終了
 int sensorB=analogRead(AnalogPort_B);//センサーB電圧読取り
 if(sensorB<THRESHOLD && timeA>0 && timeB==0){
  timeB =millis();//Bの通過時刻
  float elapsAB=timeB-timeA;//経過時刻
  float speedAB=(DISTANCE/1000*150)/(elapsAB/1000)*60*60;//速度
  //パソコン表示
  Serial.println("<--計測終了--");
  Serial.print("センサB電圧は ");
  Serial.print(sensorB);
  Serial.println("/1023でした。");
  Serial.print("センサBの時刻は ");
  Serial.print(timeB);
  Serial.print("差引 経過時間は ");
  Serial.print(elapsAB/1000);
  Serial.println("秒でした");
  Serial.print("通過速度は ");
  Serial.print(speedAB);
  Serial.println("km/hでした。");
  //データ消去
  timeA=0;//通過時刻A データ消去
  timeB=0;//データ消去
  elapsAB=0;//経過時間データ消去
  speedAB=0;//スピードデータ消去
  sensorA=0;//センサーAデータ消去
  sensorB=0;//センサーBデータ消去
  delay(WAIT);//静止
  Serial.println("---リセット---");//
 }
 //BからAへ速度計算 
 //計測開始
 sensorB=analogRead(AnalogPort_B);//センサーB電圧読取り
 //センサBに影(電圧閾値未満、かつB時刻なし、かつA時刻なしなら、Bの時刻取得)
 if(sensorB<THRESHOLD && timeB==0 && timeA==0){
  timeB =millis();
 //パソコン表示
  Serial.println("--計測開始-->");
  Serial.print("センサB電圧は ");
  Serial.print(sensorB);
  Serial.println("/1023です");
 }
 //Aセンサー読取
 sensorA=analogRead(AnalogPort_A);//センサーA電圧読取り
 //センサAを踏んで、かつB時刻あり、かつA時刻なし なら計測終了
 if(sensorA<THRESHOLD && timeB>0 && timeA==0){
  timeA=millis();//
  float elapsBA=timeA-timeB;//
  float speedBA=(DISTANCE/1000*150)/(elapsBA/1000)*60*60;//
  //パソコン表示
  Serial.println("--計測終了-->");
  Serial.print("センサーAの電圧は");
  Serial.print(sensorA);
  Serial.println("/1023です");
  Serial.print("センサAの時刻は");
  Serial.println(timeA);
  Serial.print("BAの差引経過時間は ");
  Serial.print(elapsBA/1000);
  Serial.println("秒でした");
  Serial.print("通過速度は");
  Serial.print(speedBA);
  Serial.println("km/hでした");
  //データ消去
  timeA=0;//通過時刻A データ消去
  timeB=0;//通過時刻Bデータ消去
  elapsBA=0;//
  speedBA=0;//スピードデータ消去
  sensorA=0;//センサーAデータ消去
  sensorB=0;//センサーBデータ消去
  delay(WAIT);//
  Serial.println("---リセット---");
 }
}

 

モニター表示

①定数 DISTANCEには、ABのセンサー間の距離をm単位で(115mmなら0.115m

 定数 THRESHOLDは、センサーが反応する閾値(基準)。

 定数 WAITは、速度算出後の待機時間です。ミリ秒単位(5秒=5,000ミリ秒)

 なお センサーAが、模型で遮光されると 次の画面(赤枠)がでます。

  241141

②センサーBが、模型により遮光されると、AからBへの速度が計算されます(赤枠)

2411142

③「--リセット--」がでたら、待機時間終わり。

  次は BからAへ 速度計測

  模型でBセンサー側が遮光されると 計測開始(赤枠)

2411143

④模型がAセンサーを遮光すると、BA間の速度を計算します。

241144_20241114211301

次回は「パソコン」ではなく、液晶パネル(LCD)に表示させます。

2411151

2024年11月11日 (月)

指定方向スピードメータ スケッチ:アルデュイーノ×鉄道模型⑧

スピードメータ スケッチ(方向指定タイプ)

 

回路イラスト

夜行運転に対応せず、かつ、部屋の照度に応じたCdsセンサーの閾値を入れる、という前提つきですが、スピードメータとしては、世界一 単純で激安な回路です(たぶん)。IMON製スピードメーター 2万7千円也 へっ?。でしょ。(うまくいけば・・・ですが。)どうですか?「電子工作」。難しくないですよね。「なさぬは、人のなさぬなりけり。」上杉鷹山。

24101210

アルデュイーノの本体は、入門機のアルデュイーノUnoR3であれば、4000円弱。これに、Cdsセンサーと抵抗数個で、数百円。でも、初めての人には、スターターキット(5000円~)をお勧めします。光センサー以外に、いろいろ部品の詰め合わせになって、間違いなくお得です。

24111010

復習:スケッチの読みかた

➀基本構造

 アルデュイーノのスケッチ(プログラム)は、次のような構造になっています。

2411086

➁コメント欄

  ”//”で区切られた部分 以後は、プログラムではなく、他人がプログラムを読むための「コメント」です。削除しても、動きます。

③(スペース欄)は、原則的に読み込まれない。だから・・・

  スケッチ上の空欄は、マイコンに読み込まれません。それゆえ、スケッチは、他人(将来の自分)が見て読みやすいレイアウト(インテンドによる整理)にすべきです。

「左詰め」は、それでも動きますが、好まれません。ただし、”void Ioop()”を”voidIoop()”と書いてはいけません。void loopで一語です。

スケッチ

//指定方向スピードメーター

//定数設定

#define AnalogPort_A  0//定数:cdsセル「センサーA」の入力ポート設定

#define AnalogPort_B 1//定数:cdsセル「センサーB」の入力ポート設定

#define DISTANCE 0.141//定数:センサー間距離「m単位」で入れること

#define THRESHOLD 300//定数:cdsセルの反応閾値

#define WAIT 3000//定数:計測終了後の待機時間「マイクロ秒単位」で入れること

 

//変数設定

int sensorA;//変数:センサAの電圧

int sensorB;//変数:センサBの電圧

unsigned long timeA;//変数:センサAの通過時刻

unsigned long timeB;//変数:センサBの通過時刻

 

//セットアップ関数

void setup() {

  Serial.begin(9600);

 

//ループ関数

void setup() {

     sensorA=AnalogRead(AnalogPort_A);//センサーA電圧読取り

     sensorB=AnalogRead(AnalogPort_B);//センサーB電圧読取り

 //センサAに影(電圧閾値未満かつA通過時刻なし なら、Aの通過時刻)

  if(sensorA<THRESHOLD && timeA==0){

         timeA =millis();

  //パソコン表示

     Serial.println("<--進行--");

     Serial.print("センサA電圧は ");

    Serial.print(sensorA);

     Serial.println("/1023 ");

  }

 //センサBを踏んで、A通過時刻あり、なら計測終了

   if(sensorB<TTHRESHOLD && timeA>0 ){

   timeB =millis();//Bの通過時刻

   float elapsAB = timeB - timeA;//AB経過時間

   float speedAB=(DISTANCE/1000*150)/(elapsAB/1000)*60*60;  //速度計算

  //パソコン表示

     Serial.println("<--進行--");

     Serial.print("センサAからセンサBへ計測終了 なお センサB電圧は ");

     Serial.print(sensorB);

     Serial.print("/1023 ");

     Serial.println("です。");

     Serial.print("センサ0の終了時間は ");

     Serial.print(timeB);

     Serial.print("差引 経過時間は ");

     Serial.print(elapsAB);

     Serial.print("通過速度は ");

     Serial.print(speedAB);

     Serial.println("km/hでした。");

 //終了

   delay(WAIT);//静止

      Serial.println("------リセット-----------");//行間

      timeA=0;//通過時刻A データ消去

      timeB=0;//データ消去

   elapsAB =0;//経過時間データ消去

      speedAB=0;//スピードデータ消去

      }

コンパイル

アルデュイーノにダウンロードする前に、パソコン上で「スケッチ上の問題」がないか、コンパイルをクリックします。

2411001

ここでチェックできるのは、

  ➀全角文字の混入

  ➁単語のスベリングのミス

  ③”}”や”;”付け忘れと付け過ぎ、変数や定数の宣言もれ です。今回は 意図的に「間違い」を組み込んでいますが、自分で書いたスケッチであれば、もっとごっそりとエラーが出てきます。

24111003

プログラムは、上から下に進むので、エラーも、上から順次修正すべき(なんだろう)と思います。エラーには「メッセージ番号」がつくことがありますが、その番号の意味、私にはわかりません。

24111003_20241110015301

エラー表示が出なくるまで、修正作業とコンパイルを繰り返します。次のメッセージがでたら、合格です。

2411105

実装テスト

24110101_20241110144701

 

ブレットボードに仮想回路を組み立てます。ボールペンのキャップで、➀まずCdsセンサーA,➁次にセンサーB、必ずこの順序で、遮光します。結果は、パソコンに通信され、次の手順で、パソコン画面上で読むことができます。

➀「シリアルモニター」をクリック。

2411102

➁センサーAを遮光すれば、このメッセージが出ます。

2411103

③センサーBを遮光すれば、このメッセージがでます

2411104

 センサーの値は 0~01023の値。ですが「500を切ったらその時刻を取得」とプログラムしているので、センサーの値は、必ず499にまります。通過時刻は、アルデュイーノの起動時点(リセット時点)から、500を切るまでの時間(マイクロ秒)です。数字があれば、時間記録ができている、それだけのことです。数字の意味はありません。経過時間は、その差です。こちらは重要で、速度計算の基礎にまります。

※重要!表示されない場合

➀まず、回路を疑え

24110101_20241110144701

  アルデュイーノやブレッドボードの「差し間違い」「ワイヤーのグラつき」。これで、通電していない可能性があります。

➁スケッチの論理演算、計算演算が違う。真逆にしているケース

  たとえば、”>”と”<”の取違いです。これは、どんなにコンパイルを合格しても、見つかりません。スケッチを読み直してください。

③アルゴリズムが間違っているケース。

  トホホ としか言えませんね(笑)その日は寝ましょう。

次に、Cdsセンサーを線路に組み込み、

24111011

模型を通過(方向注意)させて、シリアルモニターを見ます。このメッセージが出れば OK.

24111012

 

次回は、「双方向スピードメータ」を開発します。

 

 

 

 

 

2024年11月 2日 (土)

定数と変数の使い方(型・変数名・有効範囲):アルデュイーノ×鉄道模型⑦

アルデュイーノのスケッチを、自分のチカラで書くには、どうしても「定数」「変数」の基礎知識が必要です。小難しいのですが、お付き合いください。スケッチを描きながら、困りながら「変数」学ぶと、その意味がよ-く分かります。

変数とは、

 

いきな漢語で「変数」と言えわれても、ねぇ・・・数学ギライには、じん麻疹がでるほど、やーな感じ かもしれません(笑)。

 

平たく言えば、アルデュイーノで扱う「データの箱」のことです。アルデュイーノに、数値データを計算させるは、「数字をいれる箱」=変数を設定して、その中に数値データを入れ(代入)ます。

2411021_20241102141101

 

このスピードメータでは、まず、2つの地点で、➀Cdsセンサーで模型の影による電圧変化(データ)を測定、➁その時刻を通過時刻(データ)として記録し、次に、③その通過時刻(データ)の差を、経過時間とし新たなデータを作り、さらに、④経過時間(データ)から、算式を使いスピード(データ)を計算し、最後にスピード(データ)をパソコンに表示させます。

 

ですから、このスケッチで「変数」として用意するデータの箱は、計6つ。➀Cdsセンサーによる各「電圧」×2、➁2地点ABの各「通過時刻」×2、③通過時刻の差で求める「経過時間」、④経過時間から計算する「スピード」です。

 

変数の設定(宣言)

 

変数を使うには、あらかじめ、変数の設定(=変数宣言といいます)をしなければなりません。

 

変数は、数値データを入れる箱です。ですから、その箱は、そのデータ量(メモリ)にも見合う「大きさ」がなければなりません。また、その箱には「ラベル=変数名」をつけなければなりません。

 

2411041

たとえば、Aポイントの通過時刻(データ)は 変数として、次のように設定(宣言)します・・

 

 変数型 変数名;

 

 具体例

 unsigned long  timeA;//Aポイントの通過時刻 変数

 

 

ここで、その変数の頭のにつける、"int"や"unsigned long" が 変数型=「箱のサイズ」です。その後"timeA"が「変数名」。つまり「箱のラベル」です。

なお、ほとんどデータは、数値ですが、文字列もまた「変数=データ」として扱うことができます。

 

変数名(ラベル)

 

英字であれば、アルデュイーノは動きますが、変数や定数には「命名規則」があるようです。詳しくはこちらを参照。個人的なスケッチで、他人と共有したり公開するもの、でなければ、「命名規則」に神経質になる必要は、ありません。

 

変数の記名は、ローワーキャメルケース記法が慣例らしい。(最初の単語文字は小文字で、意味の切れ目で大文字にする。(時間Aなら、timeA かな?)。これは、アルデュイーノの母体であるC++言語に準じているそうです。

 

定数の記名には、すべて大文字のスネーク記法(単語の意味区切りで、半角アンダーバー”_”で繋ぐ)。同じく、C++の作法から。あえて大文字にすることで、定数と変数の識別ができます。

 

 

「変数の型」と「使い分け

 

変数には、int、float,unsigned long, と様々なものがあります。これらは、使用メモリー量(データの箱の大きさ)で使い分けます。大は小を兼ねますが、その分 マイコンに備えられたメモリー容量を、余計に消費します。詳しくは、アルデュイーノのリファレンスを参照してください。

 

intは、一番使われる変数です。整数のデータを入れる箱です。消費メモリーは少ないですが、数に-32676から、+32678までの、限りがあります。

【具体例】

➀電圧値の変数はint(整数型)を用います。

 電圧値は、正の0~1023のデジタル値で現れるので、32678に収まります。従って、変数はint。

  int sensorA;

  int sensorB;

➁時刻の変数は、intではなく、unsigned long(正負符号なし・大きな整数型)を用います。

時刻のカウントは、アルデュイーノの起動させてから、2日ぐらい、しかも、マイクロ秒単位でカウントします。ですから、膨大な桁数が収まる箱(但しマイナス数は無用)が必要なのです。

  unsigned long timeA;

  unsigned long timeB;

  unsigned long elapsAB;

③スピードの変数小数点以下を計算させたいので、intではなく、floatを用います。

  float speedAB;

 

 

変数にデータを入れる方法(代入)

 

 変数名=値(データ);

 

 と 書きます。

・・・”=”は、数学では「等しい」ですが アルデュイーノでは、「変数にデータ(右辺)を入れる」という意味です。

 

【具体例】

 timeA=millis();// 変数"TIME_A"に、現在時刻を入れる

 timeA=0;// 変数の値をゼロにクリアする。

「宣言+代入」

 宣言と代入は、同時に行うことができます。

 unsigned long timeA;

  //時刻変数として timeA 設定

 timeA=millis();

  //TIME_Aに現在時刻を代入

 と 2行書きしなくとも。 

 unsigned long timeA=millis();

 これで十分です。

変数宣言の有効範囲(スコープ)

 

変数の中にある数値データのは、用途に応じ「使い捨てデータ」「保持するデータ」が、出てきます。

 

例えば、スピードメータのスケッチで通過時刻データ」は、センサーAから、Bを踏んで経過時間を算定するまで、つまり、処理をループさせている間、データを保持しいないといけません。このデータは、勝手に消えては困ります。

一方、スケッチによっては、「使い捨てデータ」も出てきます。例えば、forループ制御=指定回数だけ繰り返す処理、という命令がありますが、この指定回数の”i”も、変数です。1回目2回目・・・”i”回目という形です。指定回数の変数 ”i” は、処理が終われば、さっさと使い捨てます。

変数の有効範囲(保持と解消)については、2つの基本ルールがあります。これは「変数のスコープ」と呼ばれます。

 

ルール「変数はその関数の中、{…}中でのみ有効」。

「変数は、その関数の中、{…}中でのみ有効」です。{…}の範囲を超えれば、変数=データは、マイコンのメモリーから消えます。

 

➁ルール「変数は、その行から下に有効」

変数は、その定義を書き込んだ場所(「変数の宣言」といいます。)から、下の行に有効です。1

 

ですから、変数を「設定(宣言)する場所」とその「変数の有効範囲」には、おおきな関連があります。

 

変数の「置き場所」と有効範囲

 

➀関数内での宣言(狭いローカル変数)

とえば、forループ文=指定回数の繰り返し、では、くり返し回数(カウント)に「変数i」が多用されます。「変数”i”は、そのforループ関数の中で有効=そこで解消」するので、for関数が終われば、カウント”i”は、都合よく、メモリーから消去されます。

2411014

ですから、同じ変数”i”を用いても、もとに戻って、再び1回目、2回目・・・となります。決して、i+1,i+2・・・回目とはなりません

 

②ループ関数の中での宣言(広いローカル変数

void loop()関数の中で、ある変数=たとえば、経過時刻データ変数"timeA"を設定(宣言)します。

2411012_20241105021101  

 

すると、ループの底=処理の最後 で、通過時刻データが消えます。なぜなら、「変数は、その関数の中、ループ関数の{…}中 でのみ有効=そこで消去される」からです。

2411021 

 

よって、関数の処理は、ループして、再び同じ計算をしますが、1巡目で計算された数値データ=「通過時刻」は、2巡目に持ち越しできません。スピードメータ・スケッチでは、2巡目以後も、巡回の都度、再度「通過時刻」上書きすることなり、正確な経過時間 ひいては、スピードの計算ができません。

 

③ヘッダー部分での宣言(グローバル変数)

ここで宣言された変数(の数値データ)は、処理がループしても、アルデュイーノが動いている限り、保持されます。

2411015_20241105021101

「消えない変数」を作るには。

 

では「ループの都度消えない変数」を作るには、どうするか、2つあります。

 

➀ひとつは、ループ関数の外、スケッチの最初(=ヘッダー部分)に、変数宣言を置く方法です。

➁他方は、変数の前に statics を置き「スタティクス変数=消えない変数」とする方法です。

 

単機能、単純なスケッチでれば、ヘッダーに置けば十分です。

複雑長大なスケッチになる場合、あるいは、他人と共同作業をする場合、ヘッダーが巨大になったり、変数が「かちあう」トラブルがありえまます。この場合、スタティクス変数を使います。

 

定数とは

 

「変数」も「定数」も、数字を入れる箱、です。が、「定数」は「変数」と似て非なるものです。「変数」は「変化するデータ」を入れる箱、に対して、「定数」は「定められた数値」を入れる箱です。数学でいう円周率は、どんな問題を解くときも、3.14…を用いますよね。アルデュイーノ・スケッチ(だけではなく、プログラミングの世界共通)で、「定数」を次のように用います。

 

スケッチ上では、極力「数字」を使わない。

 

スケッチ(プログラム)は、動けばヨシ、ではなく、人に読みやすく、なおかつ、修正が「1発で可能!」というのが、理想です。しばらく放置したスケッチは、他人様でなくとも、作製した本人でさえ「あれ?なんだっけ」と、読めなくなることもあります。また、プログラムが長くなると、その修正作業は、労力を要するものです。

 

たとえば、センサーAの命令で、センサーを通した電圧値が、閾値(基準)=400 以下なら、(模型の影があるので)時刻を記録せよ、という条件文を書くと。

  if(sensorA<400){timeA=millis();}

これでも、アルデュイーノは正常に動きます。ですが、スピードメータースケッチでは、経過時間を算定するために、センサーBにも、同じく

  if(sensorB<400){timeB=millis();}

という命令があります。

 

もし、部屋の照明が暗くて、閾値(基準)を400から、300に変更したいとする。と、プログラムを延々と読み込んだ上で、いちいち300に書き換える・・・これって面倒ですよね。

 

定数を使って、一発修正

 

ですから、400という閾値は、”Threshold”(英語で閾値)という「単語」で書くののです。そのうえで、ヘッダー部分に、このように、定数を宣言します。
  
#define THRESOLD  400

  注意 ここだけは、C言語の文法です

    #define THRESHOLD=300; とはしないでください。「=」と「;」は不要です。

 あるいは

  const int THRESHOLD=400;

  注意 こちらには 「=」と「;」が必要です。

 

そのうえで、400と数字で書いた閾値は、THRESHOLDという「定数」で書きます。

void Ioop(){

  if(sensorA<THRESHOLD){

   ・・・}

  if(sensorB<THRESHOLD){

   ・・・}

 

もし、閾値を300に変更するなら・・・ヘッダーをだけ

#define THRESHOD 300 

とするだけで、スケッチ上のすべての”THRESHOD”は、300となります。これで、一発修正ができます。 

 

アルゴリズムを考える:アルデュイーノ×鉄道模型➅

条件文に「条件を追加」する

 

前回、条件文をつなげただけのアルゴリズムでは、正確な経過時間を測定できない、と説明しました。理由は、アルデュイーノが高速で処理をループさせて、その都度、時刻を上書きしてしまう、ことにありました。

 

解決策は 「ループの1巡目、センサーAに影が落ちて、処理を行ったら、ループの2巡目以後は、影が落ちても、処理はブロック、あるいはスルーする」そんな都合のいいアルゴリズムを組むことです。

これで、アルデュイーノには、「最初に影が落ちた時点=先頭通過時」の時刻が記載され、それ以後「時間の上書き」はされません。

 

たとえば、こんな感じの制御。

2410251

策は1つではない、とは思います。私の策は「条件文の追加」です。

 

2410252

➀処理A条件文に、センサーの影あり、かつ、センサーAの時刻データを持たない、と追加します。

 

初回のループでは、アルデュイーノは、センサーA に影あり、かつ、時刻データを保有していません。判定は真で、Aの処理を実行し、時刻データを取得します。

 

2巡以降、アルデュイーノはすでに時刻データを保有しています。よって、影があっても、条件文は偽となり、Aの処理をスルーします。

 

スケッチの書き方

 

 ほとんどの条件文は、条件が1つです。この場合

 if(sensorA<THRESHOLD){・・・

 //変数”sensorA”が,定数”THRESHOLD”に 満たない=影が落ちてる なら・・・

  ※THRESHOLD=閾値

 

 ~かつ~で 条件文を追加するには && で繋げます(幾つでも繋げます)

 if(SENSOR_A<threshold &&  TIME_A==0 ){・・・

 //変数”sensorA”が定数”THRESHOLD"に満たない かつ 時刻変数がゼロ=センサーAの時刻を持たない初めて踏んだ ら・・センサーAの時間データを取る。

 

 「~又は~」など、他の条件文のつなぎ方は、アルデュイーノのリファレンス「ブール演算子」を参照してください。定数や変数の使い方は、次回で解説します。

 

➁処理 B で、速度を計算したら、最後に、時刻データを削除する(ゼロにする)処理を加えます。

これがないと、時刻データが残っているため、いつまでも、処理Aに入ることが   できません。結果、次のスピード測定ができなくなります。

 

考えることって、オモシロイ と思いませんか?

誰かのスケッチをコピペしたり、そもそも、メーカーの作った製品を購入したりしてるのでは、この「開発のオモシロさ」って味わえません。

しかも、自分のアタマを使う分は、コストはゼロです。鉄模を買えない貧乏モデラーの「勝利の方程式」かも(笑)。

 

2024年10月17日 (木)

不都合なアルゴリズム::アルデュイーノ×鉄道模型⑤

2つの条件文をつなげれば いい?

 

1 概要

速度を測るには、「センサー間の距離」と「通過時間」が必要です。このうち、距離は固定されています。ここで、アルデュイーノの仕事、すなわち、測定対象は、経過時間です。経過時間は、それぞれのセンサーの通過時刻を記録し、その差をとることで計算できます。あとは、距離÷経過時間を計算し、これをスケール換算することで、速度は算定されます。

まず、プログラムを組む前に、それぞれの「模型の位置どり」での、「アルデュイーノの仕事」をハッキリさせます。

 

なお、アルデュイーノ独特の言い方ですが プログラムのことを「スケッチ」と言います。

 

➀センサーA通過時の 模型動作とスケッチ

2410141_20241017164401 

➁センサーB通過時の 模型動作とスケッチ

2410142_20241017164401

そのアルゴリズムのは、こんな流れ。

24101600

2 条件文

「~をすれば、~せよ」。アルデュイーノ(c++)に限らず、このような場合、マイコン・プログラミングでは「条件文」を用います。ここでいうなら、「センサーに影が差して、電圧が閾値を下回れば、その時間を記録せよ」となります。条件文のアルゴリズムで図解すると、つぎの通り。

2410163

 

条件(センサーAの模型の影あり=電圧降下)を満たせば真(true)、処理を実行、満たさなければ偽(false)、処理スルーします。センサーAの条件(模型の影=電圧降下)を満たしているので、処理(時刻の記録)を実行します。

 

この後、Aの処理が終われば、アルデュイーノは、次の条件(センサーBの影を認知する)まで、待機している・・・なんてことはありません。アルデュイーノは、スケッチのどんどん先(下)に進みます。

2410161

アルゴリズムを先に進んでも、センサーBの条件(模型の影)を満たしてません。Bの条件文は偽です。処理をスルーします。これで、一連のアルゴリズムはすべて終了。ですが・・・

 

3 スケッチは永遠にループする

アルデュイーノのスケッチでは、この一連のアルゴリズムを「void Ioop(){・・・」という大きな関数(ループ関数=~を繰り返す処理命令)の中に書きます。

このvoid Ioop()関数は、「{・・・}で囲われた処理が、最後までたどり着いたら、処理の先頭に戻して、処理を繰り返せ」という命令です。

24101601

 

したがって、命令通り、「voidloop(){}で囲われた処理」の 先頭に戻ります。

 

4 アルゴリズムの経路が変わる

この後、模型が移動し、センサーAを抜け、センサーBに影が差せば。アルゴリズムの経路は変わります。

2410142_20241017164401

今度は、センサーAは、条件を満たさず、スルー。センサーBは、条件を満たして、Bの処理を実行。

 

2410162

処理Bで、速度が計算できるはず です・・・が、

ここで問題が起きます。この「条件文を単純に2つ並べるアルゴリズム」では、速度計算はできません。

 

不都合なアルゴリズムだった

 

問題はここです。

24101610

アルデュイーノは、(少なくとも)マイクロ秒以下の速度で処理しています。ですから、アルゴリズムが、最初に戻っても、センサーには、模型の影が差したまま、という事態が生じます。

2410164

このとき、センサーAには影があるために、A処理が実行されます。その結果、時間データは、上書きされてしまいます。

2410179

影がセンサーAを抜ければ、

241016122

アルゴリズムのルートが変わることで、時刻データーの上書きは止まりますが、その結果、アルデュイーノに記録される時刻データは、

241017102

条件を満たさなくなる直前=模型の後端の通過時刻です。

24101612_20241017190501

これと、模型の先端がBに到達する時刻の 差をとっても

24101713_20241017190501

 経過時間には なりえません。

極端な話

では、極端な話です。センサー間隔を超える長編成が通過すれば、どうなるでしょう。

24101611 

この長編成は、2つのセンサーを同時に踏みます。(それでも、アルデュイーノは壊れませんが・・・

24101715

アルゴリズムをたどれば、センサーABとも同時刻となり、時間差はゼロ。

これでは、速度を計算できません。さ-て、困った。「ブログラムの文法」云々・・・以前の、アルゴリズムの難です。

 

解決策は また次回。

2024年10月15日 (火)

スピードメーター:アルデュイーノ×鉄道模型④

スピード・メーター

24101210

鉄道模型スピードメーターの、模型スピードの計測法は、複数あります。

 

1 電圧測定方式

以前、KATOやTomixは、スピードメータ付きコントローラーを、販売しtました。が、現在では、これらの商品は、市場在庫はおろか、カタログ落ち後何十年も経っています。入手は、ネットオークションに参加するしかありません。最近、KATOは「ワンハンドル運転台・コントローラー」を新発売するようですが、これにも、スピードメーターは、ありません。

 ➀KATO:ESC-1。一部のマニアの間で、伝説化しているようです。

2410122ecs1 

 ➁Tomix。コントローラ発生のサウンド付き N-S2-CL

2410123tomix 

 ③台湾製 PWMによる車載サウンド+駅ホーム実音

2410121

 

 ④Esu(ドイツ):DCC制御

2410124

私は、これらの製品の実物を所有していません。よって断言はできません。が、おそらく、これらのコントローラーは、模型の速度を測っている、のではなく、コントローラー(デコーダー)からモーターに出力する電圧(DCC制御でれば、デコーダーへの命令通信)を測っている と 私は推測します。

24101211

その理由。線路に、通過センサーを設置しているわけでもなく、模型に、スピード計測センサーが内蔵させている、わけでないこと。ならば、残る可能性は、出力電圧(DCCならデコーダ通信)を観測して、スピードに換算表示している。この方法しか、メーターを連動させる手段は・・・考えられません。

 

モータ―の回転(すなわち模型スピード)は、電圧に連動します。ですから、電圧を測定して、これをスピードと見たてても、「完全なウソ」と否定できません。しかしながら、電圧を測定さえすれば、それで正確なスピードが算定できる とは・・・言えません。

 

理由は単純です。まず、モーターの消費電圧が同じでも、牽引車数で、模型のスピードは差がでます。次に、SLとELでは、構造(ギア)で違います。よって モーターの消費電圧が同じでも、模型の動きに差が出でます。さらに、コアレス・モーター等の違い、製造年代や経年(新品中古)の違い、極論すれば、製品の個体差だって、消費電圧とスピードに影響します。

 

よって、この測定方式では、ちょっと・・・速度計とは言ません。スピードが出ている ような・・・「気持ち計」です。

 

2 音波測定方式(無料アプリ)

周回レイアウトについて、周回距離(一定)を、測定した周回時間で割り、周回速度を算定するようです。時間測定は、走行ノイズのピークからピークの 間隔を測るようです。時間を実測するため、速度は正確です。

2410128

なお、無料アプリとして公開されています。取得して、損はありません。

ただし、使用対象は、周回レイアウトに限定されます。速度も、周回の平均速度です。速度変化を楽しむアイテムではありません。

 

3 通過センサー方式

上記2の「音波測定式」と使用目的はおなじです。こちらは、周回の平均速度、ではなく、特定の場所での「スッポット・スピード」を実測するアイテムです。

2410125

機器を通過する際、その通過時間を測定し、センサー間の距離を考慮して、スピードを測定します。実測に基づくので、どんな模型でも、正確に測定できます。ゲージの種類に応じて、スケール換算後のスピードを自動表示してくれます。

 

但し、お値段は・・・2万7千。うーん、IMONさん、かなり吹っ掛けています。

単なる「工業用通過センサ-」であれば、たった4千円 ですからねぇ。もちろん、通過速度は 厳密です。

2410127

もちろん、鉄道模型用ではないので、スケール換算はしてくれません。なお、ネット上に「スピード換算サイト」があります。

 

4 車載方式

Youtubeにありました。これはもう・・・コメントのしようがありません。どんな世界にも、「ツワモノ」がいます。

https://www.youtube.com/watch?v=-3IuCUK6mFw

 

スピードメータを電子工作する。

 

現在、模型メーカーは、スピードメーターを商品化していません。これは、チャンスかも。

車両の買えない貧乏モデラーでも、スピードメーターを自作すれば。金満な”買うだけ趣味者”に・・・ドヤ顔できるかもしれません。やっぱ、「持つべきモノは、お金と情報ではなく、十本の指なのよ」とか(笑)

 

スピードメーターの構想.

➀「通過センサー」方式

➁レイアウトに設置するため、計測装置に筐体(箱モノ)を使わず、線路にセンサーを組み込む

 

このスピードメータ。電子回路としては「単純」です。アルデュイーノの基本キットで、ほとんどできてしまいます。一方で、スケッチ(プログラム)には、一工夫 要します。

 

回路を考える・・・

スピードは、距離/時間で計算されます。

よって、この測定装置に必要なデータは、2地点の距離と、その経過時間で2410141

センサー間の距離は、固定されています。通過時間は、2つのセンサーの通過時刻をアルデュイーノで読み取り、その差を取れば、測定できます。

2410142

センサーには、前回の「Cds光センサー」を利用します。動作原理は、前回説明した通りです。

通過時刻の読取りは、アルデュイーノのプログラム(関数)にあり、速度の公式に基づく計算過程は、アルデュイーノがやってくます。計算結果は、とりあえず、パソコンに表示します。

アルデュイーノでは、計測速度を、液晶で表示することも、7セグメントで表示することも、可能です。これは、電子工作の醍醐味です。

 

単純明快!

まあ、見ての通りですよ。ホント 本質部分はこれだけ!

24101210

これは、プログラム開発用のモデルです。線路に組み込む前に、これを手のひらで覆い「影」を落とすことで、スケッチの動作を確認します。

回路が単純な分、スケッチは「考えどころ」がいくつかあります。長くなるので、次回に説明します。

 

2024年10月10日 (木)

光センサーを使う:アルデュイーノ×鉄道モケイ③

Cds (光センサー)で、在線検出

 

前回で、Cdsを使ったギミック(踏切や信号)のモデル(回路)を紹介しました。これは、鉄道、模型がCds(光センサー)に落とす影で、Cdsの抵抗を上げ、回路電圧が変化させることを、自動スイッチに応用しています。

 

2410081
 Cdsとは

影を差すと、電気抵抗が増す。そんな電子部品です。単価は40円。センサーの中では、最安です。

2410082

 

 部屋の照明では、抵抗値は3KΩ

1410083

  手で覆い、影を落とすと、50KΩに跳ね上がります。

  2410083 

 

光を利用するがゆえの欠点

 

さて、この光センサー。大きな欠点があります。

 

アルデュイーノは、電圧の値を、0~1023の数字で返します。低いほど低電圧(0Vに近い)。高いほど高電圧(電源の5Vに近い)。CDSは、影が暗いほど抵抗は大きくなり、したがって、回路を通りアルデュイーノに流れてくる電圧は、落ちます。このとき、アルデュイーノは、低電圧=低い数字になります。影を抜けると、部屋の照明が光センサーの抵抗を下げ、アルデュイーノに流れてくる電圧は上がります。結果、アルデュイーノには、高電圧=高い数字がでます。

 

低ければ点灯、高ければ消灯、そのようなプログラムを組むとして、重要な問題は、その数字が高いか低いか、その境目の値(閾値=”しきいち”といいます)をどう決める です。

 

➀たとえば・・・境目となる閾値(しきち)を400に置き、アルデュイーノに流れてくる電圧が、これより低い(例えば300)なら「影がある=模型在線」、これより高い(例えば500)なら「影なし=模型なし」。こんなプログラムを組んだと します。

 

もし、閾値を400とおいて、その部屋の照明がうす暗く、影がなくとも350にしかならない、となれば、その350は閾値400以下です。これでは、模型(影)がなくとも、アルデュイーノは「影があるから模型在線」と判定します。こうなると、センサー部品は正常、でも、このセンサにつながるギミック(部品)は、踏切なら「鳴りっぱなし」。信号なら「いつまでも赤」。誤作動が起きます。

 

➁では、閾値を極端に低い100にすればOKか。

 

閾値が、100なら、部屋の明かりが350でも、在線を読んでくれます。

半面、模型が影を落としても、「連結部分の光漏れ」から、150にしかならない、というケースもあり得ます。この150は、閾値100 以下ではありません。したがって、模型が在線し影ができても、アルデュイーノは「不在」と判定します。低い閾値設定も、誤作動を引き起こします。

 

Cdsは、単価が安いですが、模型メーカーも手練れた鉄模モデラーも、この方式を採用しません。というのも、ユーザーの使用環境しだいで、こんな誤作動がおきるからです。まして、部屋の明かりを消して夜景を楽しむ、なんて運転は 光がないので、運行センサ-として、機能しません。これは、ご了承ください。

 

在線の閾値(判定基準)をどう決めるか?

 

➀模型のない状態=部屋の明るさでのCds抵抗値、これで落ちた電圧、それと、➁模型を置き、その影が落ちた状況で、Cdsの抵抗値、そこで落ちた電圧、それぞれアルデュイーノで測定し、その➀の値と➁の値の中間=平均値をもって、判定基準=閾値にすれば、よさそうですね。

 

では、「部屋の明るさ」と「模型の影」で、どんな抵抗(電圧)になるのか、これらをアルデュイーノで「測定」します。

 

Cds抵抗をアルデュイーノで測る

素人ながら、回路は単純に、これでいいじゃん・・・とは思うのですが、これはダメ。

241006

 

もし、Cds抵抗がゼロになると、事実上ショートです。(現実に、部屋の明かり程度で「Cdsが抵抗ゼロ」にはなりませんが)。こういう場合、「分圧を取る」という回路を組みます

24100610

 

分圧を取る・・・とは

ど文系でもわかる 義務教育のレベルで・・・解説します。

 

➀求めたいのは、模型を置いた影=光で変化する CDSの抵抗値です。

 電源は5V。片方の抵抗は10KΩ。Cds=R1の抵抗は、光量で変化するため電流も、Cdsの光次第です。

2410091

➁Cdsは 光量で変化する抵抗 と考えます。

2410092

③電流、電圧、抵抗は、次の関係にあります。

2410093

 

④回路を流れる電流は どこも同じ iAです。これは、キルヒホッフの法則。

2410095

⑤ 直列回路なので、各抵抗に掛かる電圧の合計は、電源電圧に等しい。これは、オームの法則。ならば、電源電圧から、一方の抵抗の消費電圧を引くと、他方の消費電圧になります。

2410096

➅流れる電流は不明。けど、流れているなら、電流は回路上で同じになる。仮にiA(アンペア)とする。

   R1とR2 それぞれの場所での電流を、i=V/R ③の関係式で表現すると

 R1での電流

   i=V1(Cdsに掛かる電圧)/R1(Cdsの抵抗)

 R2での電流 

   i=V2(抵抗部品に掛かる電圧)/R2(抵抗部品の抵抗値)

 

⑦これが、同じ電流iなのだから、イコールで結ぶ。

   V1/R1=V2/R2

   つまり V1(Cds電圧)/R1(Cds抵抗)=V2(抵抗電圧)/R2(抵抗値10KΩ)

 

⑧求めるのはR1. Cdsにあたる抵抗R1の値 

    V1/R1=V2/R2

    ・・・ 分母R1を移項して

    V1=R1×(V2/R2)

    ・・・ V2/R2を移項して

    V1/V2×R2=R1

 

⑧判明している数値を入れる 5V電源=V1+V2 だから V1=5-V2であり R2は10KΩ

    〔(5-V2)/V2〕×R2=R1

 

あと、V2=「抵抗に掛かる電圧」が測定できれば CDSの抵抗値=R1が求まります。

    〔(5-V2)/V2〕×10KΩ=R1(CDSの抵抗

2410097  

 

回路は 「アルデュイーノで R2の電圧=V2を測る」ように、こう組みます。ピンは、A0~A6のアナログピンに差します。

24100610 

 

V2=Cdsを通過して抵抗に流れてくる電圧 は、光量=模型がCdsに差した影 に応じ アルデュイーノで0~1023デジタル値で 測定されます。

あとは、0~1023のデジタル測定値をアナログの抵抗値に換算し、算式に代入すれば、これが、CDSの抵抗値です。

「Cdsの抵抗」ではなく 「抵抗部品の電圧」をデジタル測定する

学校のテストなら「Cdsの抵抗値を求めよ」とか・・・要求されるけど、今回は無用です

算式、〔(5-V2)/V2〕×10KΩ=R1CDSの抵抗)より・・・

光で変化するCdsの抵抗値R1は、V2の値(抵抗にかかる電圧)に連動します。逆に、Cdsの抵抗値R1が変化すれば、これを反映して、V2(抵抗にかかる電圧)値も連動します。ならば、「鉄模の影」を検出するのに、R1の値=Cdsの抵抗ではなく、V2の値(抵抗にかかる電圧)を観測すれば、十分です。

それも、〇ボルトというアナログ値に換算する必要はなく、01023デジタル値のままでいいのです。なぜなら、プログラムをは、デジタル値で組むためです。

以上、分圧が理解できなくとも・・・

結論として、覚えておくのは・・・部屋の明かりの数値と、模型の影を差した場合の数値で、その間の真ん中を閾値にすればいい・・ってことです。

 

電圧をパソコンに表示するスケッチ

スケッチ(アルデュイーノのプログラム)はこう。

void setup() {

    Serial.begin(9600);

    // シリアル通信の開始。速度9600

}

void loop() {

   const int analogPin = 0;

   // アナログピンとあれば、それを0と指定

  int val = analogRead(analogPin);

  // アナログピンの定数analogPin(つまり0)を読み 変数Valに入れる

  Serial.println(val);

  //パソコンに 変数val=読んだアナログ値を 表示

  delay(3000);

  //3,000マイクロ秒=3秒間 作業を停止(結果、3秒表示が継続)

}

スケッチの解説

➀ Serial.begin(9600); 

  パソコンに通信する命令です。セットアップ関数に入れます。9600は速度。もっと速い速度も可能ですが、これで十分。決まった数値があるので、テキトーに9601とか、入れても動きません。

➁const int analogPin= 0;

  定数の指定。analogPinというキーワードは、きまった数(ここでは0)を入れる。intは「整数の箱」という指定。

③int val = analogRead(analogPin);

   変数valは「整数の箱」で、カッコ内のアナログピン番号の、アナログ値を読んで入れよ。ピン番号はanalogPin(0と指定済)。

※ プログラム(スケッチ)では、なるべく、数字の使い回しをしない

実は、➁と③ まとめて、int val= analogRead(0)でも、プログラムは動きます。あえて、2行にするワケは、「プログラムは、数字を使い回さない」という「実用上のルール」があるからです。

  1つの理由。プログラムの読みやすさ。

たとえば、analogRaed(analogPin)ならば、プログラムが読みやすい。analogRaed(0)では、「0」の意味するところ、なにが0なのか不明であり、プログラムが読みにくい。

  もう1つの理由。プログラム修正作業の簡略化。

たとえば、ピン番号をA0ピンから、A2ピンに変更したい とする。最初の段階で「analogPin=0」定義し、プログラム内は、すべて「analogRead(analogPin)」で統一しておけば、最初の定義を、analogPin=0から,=2に換えるだけで、修正は一発で済む。これをしないと、長いプログラムから、analogRead(0)を探し出して、すべて書き換えなければならない。

パソコンへの表示

面の シリアルモニタ  をクリック。

24100915

モニターが ポップアップします。 

24100912

delay(3000); によって3000μ秒=3秒 マイコンが停止し 3秒ごとに、観測値が表示されます。

測定結果 

 ➀部屋の照明で 

2410081_20241010022101

   750

24100912

 ➁模型の影で 

 24100913

   50

24100914

 閾値は、その中間で ➁+(➀+➁)/2=400 にすればいい。となります。

 

雑談、鉄道模型で プログラミングを学ぶ、

 

TEAM。ご存知ですか。

 

サイエンス(科学)のS、テクノロジ(技術)のTe、アート(芸術)のA、マスマティクス(数学)のM。文部科学省が、21世紀を生きる子供たちに、学校で「推し」としている「教育指針」です。このブログでも、科学(オームの法則)、技術(アルデュイーノのスケッチ)、アート(・・・今回はなし)、数学(V1/R1=V2/R2の式変形とか)を、ちょっと意識しました。

 

現在、学校教育では、義務教育の段階から、パソコンを使用した「プログラミング」の授業をしたり、大学入試に「情報」なる試験科目を設けたり、いろいろ試みているようですが、教育内容は?。・・・純粋に「パソコンの画面」だけで、プログラムを動かすことは・・・どうなのかなぁ?楽しめる=主体的に取り組めるのは、ゲーム作りぐらい。プログラムの学習成果を「紙のテスト」で測るのは、オカシな話です。

 

プログラムを学ぶ、ならば、実体のあるもの、たとえばLEDの点灯とか、操作しながら学ぶべきであって、そのほうが、はるかにアタマに入る はずです。その実体が、趣味としての「鉄道模型」だったら、もぅ最高。そうとは思いませんか?

 

もぅ年齢が・・・とか、文系だから・・・とか、関係ありません。必要なのは、試行錯誤。多少の電子部品。そして、Youtube上の動画センセイ(授業料タダ)。人間、どうせ死ぬんだから、せめて前向きに倒れたいものです。

 

「買うだけ?」「集めるだけ?」平成に流行った「趣味のスタイル」は、そろそろ・・・ねぇ。

 

 

 

 

2023年10月10日 (火)

アルデュイーノ×鉄道モケイ ②

基礎中の基礎は このギミックとプログラム

マイコン(アルデュイーノ)を鉄道模型ギミック(踏切や信号)に応用するとしたら、その「基礎中の基礎」は、このギミックとプログラムだと思います。

Dsc_0160_20231006020301

押ボタンで、LEDが点灯します。単純な回路ですが、2つあります。センサー回路とギミック回路。これがマイコンに繋がっています。図解すると こう。

2310032

マイコンには、ごく単純なプログラムを書き込みます。「センサー回路で、電気を検知したら、LED回路に電気を流せ」と。これが、プログラミングです。なお、アルデュイーノでは「スケッチ」と言います。

 

レイアウトに応用するには・・・

ところで、押しボタンで、LEDが1つ点灯するだけでは、レイアウトのどこにも組み込めません。これだけなら、そもそもマイコンなんて不要です。

そこで、この基本ギミックの「押しボタン」を、光センサ-(cdsセル)に置きかえます。

Cds

cdsセルは、こんな部品です。1コ40円です。光が当たると、電気抵抗が下がり、影が落ちると、電気抵抗が上がります。セルに電気(5v)を流すと、明るい場所ほど、抵抗が少なく、電圧は5vからあまり落ちません。セルに影を落とすと、電気抵抗が上がり、電圧は落ち込みます。

2310036

線路上にセルを設置します。模型が、セルの上を通過して、影が落ちれば、セルの抵抗は上昇し、セルを通した電気の電圧は、減少します。

2310033_20231007130301

この電圧の減少をアルデュイーノ(アナログポート)に読み込ませます。そして、「電圧が落ちたら、LEDに電気を流せ」とプログラムします。シンプルだけど格安(40円)「在線検知」装置になりますね。

あとはプログラム命令を工夫するだけ。複数のLED(赤・黄・緑)を、時間差をつけ、順次1つづつ点灯させれば、信号にになり、2つの赤LEDを交互に点滅させれば、警報機になり、サーボを動かせば、遮断機になります。

なお「光センサー」では、真っ暗にした部屋では、影を読めません。そこで、人によっては「磁力センサー」や「赤外線センサー」を使い、大手メーカー(Tomix)製品では、接触センサーを使ってます。それでも、センサーが違うだけで、その動作原理は共通です。

「プルダウン抵抗」という モヤモヤ感

基本のギミックに戻ります。ところで、小学校の豆電球には、「プルダウン抵抗」なんて、ありませんでしたよね。

Dsc_0161_20231006022601

マイコンは、センサー側の回路で、電気の「ある・なし」を読んでいます。スイッチが「切」であれば、電気が流れるはずもなく、マイコンは「電気なし」と判断してくれるハズですが・・・そうでもないのです。マイコンは「わからない」と判断し、時として「誤作動の原因」になる(・・・そうです。)

2310035

そこで、「切」のときは、GND(グラウンド=マイナス端子)に線がつながるような「回路」を設定します。GNDの電圧は0vです。GNDに線がつながれば、その場所は0v(らしいです。)。

102310030

ところで、抵抗(10kオームです)が挟まれてますが、理由があります。抵抗がないと、電気が通じた際に、電気が直接GNDに入ってしまいます。これ、電気が無限大に流れる「ショート」です。当然、マイコンが壊れる可能性があります。そこで「抵抗」を挟みます。いうなれば、川の流れに堤防を築くようなものです。

2310034

【モヤモヤ】抵抗の大きさは10Kオームですが、10Kの大きさで大丈夫か?。

・・・プルダウン抵抗の値の決め方は、ちょっとわかりません。まあ、この手の電子工作では、大方「10Kオーム」が相場ですね。あと、抵抗が挟まっても「スイッチ切なら0v(プルダウン)になる?」。モヤモヤしてます。まあ、電気(電位)ないこと(ゼロv)は、抵抗というカベがあっても、電気(電位)は同じ=ゼロ(笑)てっことかな?。

スケッチ(「プログラム」)

はじめて見るプログラム。英語の文字がツラツラと並んで、なんだか難解そうです。

 void setup(){
    pinMode(3, INPUT); //3ピンを入力に設定
    pinMode(7, OUTPUT); //7ピンを出力に設定
    }

void loop(){
   int sw1 = digitalRead(3); //3番をデジタル読みして、値を変数SW1に入れる
   if(sw1==HIGH){
       digitalWrite(7,HIGH);//変数SW1がハイ(入力あり)なら、7番をハイ(出力に
   }
  else{digitalWrite(7,LOW);//でなければ、7番をロー(切に)
   }
}

①ボイド・セットアップとボイド・ループ

このブログラムは、大きく2つにわかれます上段の void setup(){・・・スケッチ・・・ }と 下段のvoid loop(){・・・スケッチ・・・}です。

230091

上段のvoid setup()では、マイコンの初期設定の命令です。設定は{}の中に書かれています。長いので読みにくいですが、範囲はここ。リード線が差し込まれたポート番号に、なにをさせるか。その設定が書かれてます。設定なので、アルデュイーノの実行させた、最初の1回だけ カッコの内のスケッチが動きます。

カッコ内のスケッチ pinMode(3,INPUT) ;これは「3番のピンは、入力(INPUT)にせよ」という意味です。

下段のvoid loop(){・・・スケッチ・・・}は、カッコ内のスケッチを「繰り返し実行」する命令です。

②変数の定義

変数とは、情報を入れる「箱」です。

230092

int sw1 = digitalRead(3); //3番をデジタル読みし ・・・

整数を入れる、SW1という名前の「箱」を準備し、ここにデジタル3で読んだ値を代入する。という命令です。今回は「SW1」という名前ですが、箱に付けるラベルなので、どんな名前(英数小文字)でもOKです。「=」は”等しい”ではありません。「右の値を、左の変数(箱)に、データとして代入する」という意味です。 

なお、プログラムの終わりには”;”セミコロンを入れること。句読点のようなものです。

”//”の後はコメント欄です。プログラムに影響することなく、日本語でメモを入れられます。当然、入れなくてもOKです。

③if文(条件文)

いかにも プログラミングらしい感じがしますが 意味は次のとおり

230093

if(条件)スケッチAelseスケッチB};条件が満たせば スケッチAを実行、条件でなければ スケッチBを実行。

④==に注意

if(digitalRead(3)==HIGHT){・・・

→3ピンをデジタルに読んで HIGHT(電気が来ている)ならば。数学の「=」にしたいですが、ここは「==」と2つ並べてください。「=」は、”代入する”という意になります。

➄プログラムが動かないとき・・

  いろろなケースがありますが、次の「単純ミス」は 見逃しやすいです。

  ① ”}”が、英数“小”文字になっていない。

  ② ”}”が 対応上 足りない(多すぎる)。

【雑談】数多くのレイアウト・ビルダーが、GM製の信号機を「改造」することで、ファインスケールで 点灯する信号を実現してますね。信号なら、TomixもKATOも製品にしていますが、このスケールがひどい!。「信号表示機」の大きさと「車両の前面」が同じです。どこにそんな「巨大信号機」があるんだか、聞いてみたい(笑)

GMの信号にLEDをを仕込むって、工作力を要します。まず、LEDのサイズ1.6ミリ×0.8ミリ。これに0.08ミリのポリウレタン銅線をハンダTけしないと、点灯しない。この極小のLEDを信号の裏に接着。しかも「光漏れ」させないこと・・・かなりハードルが高いです。

でも、列車の通過で、点灯が変わる信号機は、このうち半分ぐらいです。なぜなら、信号の点灯変化は、LEDをマイコンをつなげ、プログラミングを組む必要があります。「マイコン、電子工作はちょっと・・・」という方は せっかくの「緻密な工作力」が生きてこない。ですから、電子工作って、とっても重要なんですヨ(笑)。

点灯変化する信号。このうちの多くは「時間で変化するタイマー式」です。まあそれでも、進入しても「赤」に変わらないより、信号として、見栄えはあります。

さらに高いレベル、現実の鉄道のような「閉塞区間」を持たせる信号、となると・・・さらに、ハードルが上がります。まず「在線検知」が必要。その上で、信号間で「情報交換」させるか、複数の信号を中央で「一括管理」させるか。いずれも、かなりアタマを捻る必要があります。

こういうことを実現している人って、簡単には「手の内」を明かしてくれません、公開してくれたとしても、素人には読めません。なお「信号制御の”気持ち”=ヒントや考え方」は、この後のブログで、つづる予定です。

いずれにせよ、アルデュイーノが扱えないと、話になりません。

自分のアタマを使う。

電子工作では、だれかのプログラムをコピー・ペーストすれば、それでも動きます。最近では、チャットGTP(人工知能)に丸投げする、という手もありますね。でも、動かないとき、どうします?

原因は、プログラムのミス(キー打ち間違いで、自分でプログラムの一部を消してしまった)?かもしれません。回路の配置ミスや断線(ハンダ割れ)工作のミスかもしれません?。プログラムも工作も、両方そろって、初めて動きます。

買ってきたモノなら、購入先やサービスセンターに文句をつければ済む話です。でも、自分で工作した以上、自分で原因を突き止めなきゃ・・・いけません。これは、タイヘンな作業です。

安易なプログラムのコピペでは、いつまでたっても、原因を突き止められません。やっぱ、自分のアタマで考えること。それって大切です。そしてオモシロイ。

次回は、「光センサー」でLEDを自動ON,OFFさせる「在線センサー」発展させます。

 

 

 

 

 

 

アルデュイーノ×鉄道モケイ ① 

はじめに・・・

2303042

鉄道模型趣味人の80%は、電子工作とかマイコンが「苦手」なのかもしれません。一方、後の20%は、電子工作もマイコンプログラムも、飛びぬけてます。

この分野を得手とする趣味人は、電子関連・IT関連の学校を卒業している、あるいは、仕事が「電子技術関連業」「ITプログラマー」なのかもしれません。そうであれば、仕事で使う常識は、模型趣味の世界でも使えますね。

では、電子工作やプログラミングで、不得手な人は、なぜ不得手ままなのか。その理由は単純です。電子工作なんて「小学3年生」の「豆電球実験」以来、いじったことが「ない」からです。かくいう私も、生粋の文科系人間でしたから、「電子工作の不得手」側にいました。

【余談】義務教育の過程、中学生「技術・家庭」科目の中に「電気」の扱いがあるかもしれません。

昭和の時代「技術・家庭」という科目は、男女で履修内容がまったく別でしした。男子は技術(製図・木工・金属加工ほか職業教育)、女子は家庭(被服、調理、育児ほか家庭教育)。今にしてみれば、露骨な「ジェンダー・ロール」の押付けです。ヒドイ話ですが、これが当時の義務教育でした。

その男子向けの「技術の教科書」に「電子電機」の記述があったようですが、その「電子」を学校で教えるかどうかは、学校の判断。公立の学校では「ハンダを握り、工作キットを組み立てる」なんて、授業があるみたいですが、私立の進学校では、あまり教えてないようです。まあ、電子工作など、大学受験に関係ないですからねぇ。学校の方針で「よけいなことは教えない」「教えられる先生もイラナイ」のでしょう。それでも、進学校ですから、高校で電子工作に無縁でも、卒業後、工学系の大学に進んじゃう人が数多くいます(笑)。入学後、どうしてるんだか、知りませんが・・・

それから40年近く経ちました。令和の義務教育で、ハンダごてで電子部品を組み立てる、そんな授業はあるんですかね?

鉄道模型系雑誌は 教えてくれない

では、「電子」に不得手な趣味人は、どうしたら「得手」に回れるのか?。鉄道模型趣味なんだから、頼るべきは鉄道模型の雑誌、書籍?。これが「ほとんどダメ」なんです。

「鉄道模型」の雑誌には、ハンダを使い、ブラス(真鍮)キットを組み上げる、これを指南する記事は、いくらでもあります。でも、ハンダで、電子工作(電子制御)を指南する記事は、とても少ない。あるにはあっても、電子工作のとっかかり(初歩)に欠けてます。

【余談】雑誌の書面には「紙面の限界」があります。鉄道模型を旨とする雑誌が、鉄道から外れて、電子工作の話を、それも基礎から延々と説く?・・・それは、どだい無理な注文です。

また、それ以前の現実ですが、「手を動かして工作する」そういう趣味人が、平成時代に激減しまいました。非「工作派」対「工作派」で分けるなら、その割合は8:2かもしれません。だとすると、電子工作する人の割合は、全体の20%×20%=4%?。工作派のうち電子工作ができる人は、その程度しか存在しない。かもしれませんね。

教えて!グーグル・センセイ。

昭和の御代であるなら、「電子工作の初歩」について、雑誌や専門書を頼るしか、ありませんでした。ですが、今は令和です。Youtubeで「アルデュイーノ」と検索すれば、その手の動画は、いくらでも「収集」できる、じゃなくて、自動的に収集してくれます。

その中から「お気に入りのセンセイ」を選べばよいのです。わからなければ、別のセンセイ「動画」をあたれます。初心者には、専門書を延々と読むより、動画を真似て、とりあえず「達成感」を1つづつ積み上げる、その方が、上達が早いはず。私も、そうしてきました。

スターター・キットを購入する

アルデュイーノは、「単体」でも販売されていますが、初めて「マイコン」に挑戦するなら、スターター・キットが、便利でお得です。これには、アルデュイーノ本体と、センサーやモーター、これらにつなぐワイヤーと電気抵抗、各種部品が「盛り合わせ」になっています。

231009

最初の設定作業。 

アルデュイーノ・マイコンは、USBケーブルで、これをパソコンにつなぎ、パソコン上でプログラムを入力します。したがって、パソコンに「アルデュイーノIED=開発環境」というソフトを、インターネット上のサイトから、ダウンロードしなけれなりません。

この設定作業は、私より、こちらの動画のセンセイが わかりやすいです。「お任せしたい」と思います。

 

 

このセンセイのチャンネル「エンジニアが教えるアルデュイーノ入門」は、スターターキットにある部品を使い、マイコンの使い方を教えてくれます。

鉄道モケイとは、関係がないのですが、LCD=液晶表示器や7セグ表示機の、配線とプログラムは、オモシロイですよ。電気製品についてる「表示器」は、こんな仕組みになっていて、マイコンを使うと、自在に表示ができるんです。ここまでくると、自信がついてきます。「電子工作?なんだカンタンじゃん・・・」と

スターター・キットに隠された意図。

 最終目的は「鉄道模型用のギミック」です。点灯する信号であり、サウンド踏切です。・・・にしても、複雑な動作をするギミックを「いきなり作り上げる」ことは出来ません。

ならば「困難は分割せよ」です。

ますはじめに、いくつかの「単純な構造物」を「単純なプログラム」で動かすこと。これから始めます。これを組み合わせて、信号や踏切を点灯させ動かすのです。

 このスターター・キットは、その「単純なコト」を学習する、恰好の教材です。5千円の投資は、模型ギミックを自作することで、十分回収できます。これぞ、ビンボー・モデラーの下剋上のカギです。

例外 これは初心者におすすめ な電子本

23009

鉄道模型趣味人が描いた、アルデュイーノ電子工作本です。この本は、プログラム初心者向け。懇切丁寧です。アマゾンキンドルで2600円ぐらい。本にしては、値段が張りますが、損はしません。

あと、鉄道模型の電子工作で、ホントに時間を費やすのは、プログラムじゃなくて、踏切や信号という「実体工作物」の方です。この本では、「機構」と「駆動」の製作に、紙面の半分以上を割いてます。

 

 

 

 

 

 

2023年10月 1日 (日)

【100均レイアウト③】手芸用品でつくる針葉樹

手芸用品×鉄道模型

Dsc_01594

前回の続き。ビンボー・モデラーが、鉄道模型のTMS(時間・お金・スペース)に抗うため、レイアウトの「金喰い虫」=鉄道模型の情景素材を退治する・・・じゃない、有能で激安な「代替品」を紹介します。

レイアウト(ジオラマ)にもちいる「草素材」です。

Dsc_01582-1

元は、こんな風合いの手芸用品でした。

Dsc_0156

本来は、これで「手編みマフラー」「ハンドメイド・バッグ」を作ります。入手は、百円ショップ。キャンドゥ、セリア。場所は「手芸用品」コーナー。編物素材の毛糸の商品棚にあります。ネット検索では「フェイク・ファー」「フェイク・ヤーン」で、当たります。店頭に並ぶのは、冬編物のシーズンが始まる9月~11月ぐらいまで。季節商品です。1玉で、これだけの分量があるにも関わらす、110円です。

最近では、ダイソーでも、ジオラマ素材を模型コーナーで売ってますね。でも、これは小袋で110円にすぎません。

本当に激安で、しかも有用な素材は、「模型コーナー」にないんですねー(笑)。男性モデラーがスルーしている「手芸コーナー」にあるんですよ。

加工材料

加工(着色)が必要です。

画材のパステルで、塗りつぶします。塗料は、油性水性を問わす、繊維のモフモフ感を損ねてしまうので、絶対不可です。

Dsc_01592-1

このパステル、画材屋の世界堂で入手。400円程度。商品名「NuPastel(ヌー・パステル)」。もちろん、150円程度のもっと安いパステル、もあります。但し、この安物は、硬すぎました。着色できますが、作業効率は悪かったです。

作業工程

①まず、側面から、塗りつぶし

Dsc_01612

②ひっくり返し、裏側面を 塗りつぶし

Dsc_01602

③上から、毛の根本を塗りつぶし。

Dsc_01563

④必要に応じ、細かく切り刻みます。横着して、長いまま貼り付けると、「畝」ができてしまい、仕上がりが人工的になります。また、毛足が長いので、これが不自然なら、毛先をカットします。

Dsc_01564

特徴

☆利点

 とにかく安い!(失敗しても痛くない)

 10㎜超える繊維素材は、グラスジェネレータを用いても直立困難です。が、この素材は 指で直立可能。

 パステルの着色しだいて、どんな草色(若草から枯れススキまで)でも、配色可能。

 ・・・コスパがいいとは、こういう素材をいうんです。

★欠点。

 安くて有能・・・だからと言って、この素材を「全面に敷き詰め」ると、やはり不自然です。

 絨毯の上で模型を走らせているようで、これはダメ。スポットとして、散りばめましょう。

 指で整えれば、繊維は直立し、時間の経過でダウンはしません が、

 麻縄繊維のような「ハリがある素材」ではありません。

アレンジ

アレンジしてみます。

 Dsc_01642

 樹林の中の低木、苗木とか・・・

 Dsc_01572

 着色した「素材」。一方向に毛を流します。

 Photo_20231001051601

 針金。「先端」と「巻き終わり(終端の5㎜手前)」に瞬間接着剤を塗布。

 Dsc_01593

 先端に「素材」を貼り付け(20秒抑えると張り付きます)。先端側に「毛」を流します。

  Dsc_01603

 「素材」を針金に巻き付けます。なるべく、毛を巻き込まないように。ここが難しい。

 末端を止めます。既に、瞬間接着剤が塗布されているので、「20秒抑え込み」でOK。

  巻き込んだ毛を「引っかき出し」。モフモフの「毛玉」にします。

 

 Dsc_01622

 樹木のカタチが「球体」なので、「円錐」なるよう、毛先をカット。

 Dsc_01632

 完成。

 Dsc_01642

 直立させると・・・「苗木」「低木」。繊維が枝葉になります。これ、スポンジよりリアルでしょ。まあ、ここまで覗き込むギャラリーは、いないけど・・・作り手としては、「自己満足の湯」に浸れますね。気持ちよーく。

 それと・・・樹木なんか「100均素材」で量産できちゃう。・・・んなものにお金を使うのはムダです。

(この手法は、テンカラ渓流釣りやフライフィッシングの「毛バリづくり」に由来します。だからまあ、鉄模マニアや鉄道専業の趣味人には、思いもよらぬ手法、かもしれません。たぶん、どんなにTMSの古書をあたっても、こんな手法は紹介されていないはずです。また Youtubeには、さまざまな海外のモデラーが「リアル樹木」「クラフト樹木」を指南しているのですが、こちらでも見かけません。これはさしずめ「フライ・フィッシング×鉄道模型」という、ありえないコラボレーションですかね?。

なるほど、人生は一度きりです。「鉄道専業」ではなく、趣味を多く持つべきですね。損はしません(笑)

②針葉樹

 「①の素材」を枝葉に使う、針葉樹の作り方。ちょうど3年前に紹介しています。

  コチラで⇒http://pianorise.cocolog-nifty.com/blog/2020/09/post-bd214c.html

  Dsc_01604

 グレイに塗装した「竹ひご」に、穴をあけ、上記①の「毛玉」を挿し木して、瞬間接着剤で止める。 

  Dsc_0159

 ツンツン突き出る繊維を「剪定」し、樹木のカタチに整えて、完成。

 Dsc_0157

 「スポンジ」なんか使わなくも、「ソコソコ・レベル」の樹木なら、この手法もあるんです。スポンジ法より手間がかかりますが、スポンジ樹木よりリアル。針金で幹を作り、草素材をまぶす「カスタム樹木」には、リアリティで劣るけど、カスタム樹木より、工程が簡便です。量産も可能。

 参考までに、針葉樹(たぶん杉)の幹は「茶色」じゃなくて「グレイ」です。

  Dsc_0155

 

 

 

2023年8月27日 (日)

【思想哲学】鉄道模型の「T・M・S」論理に抗う(あらがう)術

鉄道模型趣味のT・M・Sって 何さ?

T・M・S。雑誌「鉄道模型趣味」ではありません。T=Time(時間のゆとり)M=Money(資金)S=Space(レウアウト空間とか)。その人の、鉄道模型趣味を「決めている」3大要素です(笑)。一見笑えるけど、これは真理かもしれません。

「すげ!巨大レイアウト」とか、「鉄道模型にウン百万投じました」とか、Youtubeを賑わしています。これも、突き詰めると、「この人はT・M・Sに恵まれていた」ということになります。

でも、一般人は、そうは問屋が卸しません。まず、M(資金)をためるには、T(時間)を削って働くしかありません。T(時間的余裕)とM(資金)の関係は、反比例します。また、レンタル・レイウアト屋を利用すれば、S(スベース)問題は完全解決します。けど、そのレンタル屋の利用は、タダではありません。つまりM(資金)と不可分です。まあ、レンタル屋も、通い慣れると飽きてしまうものです。そして、レンタル屋の業界は、経営的に厳しく、いつまでも店舗があるわけでは、ありません。

これも、よく耳にする話です。「退職して自由時間(T)が持てた、資金(M)も貯った、さあ準備万端!巣立った子供部屋(S)にレイアウト展開するぞ」と。でも、「あの方の退職後の残り時間、結果として数年だったなぁ」と。死んじゃった本人は、当然、しゃべれないけど、無念でしょう。もちろん、集めた鉄模も、作りかけのレイアウトも、天国に持ち込めません。

私事にはなりますが、昨年、私は大病を患い、現在も障害が残ります。生命はとりとめましたが、依然「視力を失うリスク」を抱えてます。資金を趣味に投じる、もはや、その余裕はありません。TMSの2つ、TimeもMoneyも失いました。どうやら、私は、負け組です。

若いころ、カタログのページをめくり、「今年の購入計画はコレ~!」なーんて、言ってたけど。今、振り返ると、なつかしい思い出です。「若かったなぁ」それと「なんにも考えてない・・・」という自責の念。

T・M・Sを失っても (それがどうしたっ)

以前、JAM(鉄道模型コンベンション)の会場で、さるベテラン・モデラーの講演に、こんな一節を聴きました。「鉄道模型趣味には、TMS、タイム・マネー・スペースが必要だ、なんて言われている。そこらへんは、あればあるほどいい。だけど、なければないで、なんとかなるもんよ。その意味で、鉄道模型は、とても柔軟な趣味でもある」と。これは、金言だと思います。

そう、TMSの条件の揃った他人を、うらやましがっていても、生産的ではありませんね。

TMSの論理で、T(時間)とM(資金)には、交換法則が成り立ちます。つまり、モノを買い揃える資金=Moneyがなければ、時間=Timeをかけて自作すればよし、なのです。

但し、満足できるモノを自作するには、ウデも知識も磨かないとダメで、そこに膨大な時間がかかります。ですから、大半の人は、T(工作する時間的余裕)がとれなくて、M(資金にモノ言わせ買いまくっている)なんです。逆の論理展開ですね。

鉄模負け組には、「投資の賢い選択=引き算」が必要。

前出の「巨大レイアウト」「鉄模にン百万投資」も、共通するのは、それが「足し算の極みであることに由来しています。前者はS(スペース)の、後者はM(資金)の。共通して、そんなことする時間(T)があり余っていた・・・という背景が透けて見えます。それを指して、「うらやましい」と思うのは、恵まれない庶民としては、当然のことです。

さて、T(人生残り時間が見えている)、M(鉄模に興じる資金もわずか)ならば、どうします?同じ道を追っかけて、追いつけるものでもないでしょう。忘れてはいけません。集めた鉄模も、作りかけのレイアウトも、天国に持ち込めません。

ならば、価値観を変える しかありませんね。「足し算」ではなく、「引き算」に。 

レイアウトを「引き算」する

ます、線路の引き算

私は、A4パネルに、モジュール・レイアウトを作製しています。A4パネル×12枚で、単線エンドレスを組んでいます。単線エンドレス+交換設備1つ。線路配置は、必要最小限にとどめました。まずここで、線路を「引き算」しました。

理由は単純。線路敷設費で最も高額なのが、ポイント分岐です。これを削るだけ、建設コストが浮きます。まあ、支線にせよ待避線にせよ、ポイント分岐が多いほど、運転の選択は増え、楽しいはず・・・ですが、そもそも、A4パネルの連結モジュールでは、幅も長さもスペース不足です。こんなスペースで、線路を増やせば、パネルが線路で埋まります。線路地獄のレイアウト。これでは、情景もへったくれも・・・ありませんね。

次に、ポイントは、通電や走行のトラブルの温床であること。最後に、レイアウト上に「模型を並べて眺める」のは、私の趣味じゃない。ダイヤ運転をするつもりもありません。わたしには、ヤードなど無用なのです。

ストラクチャーの「引き算」

次なる「金食い虫」は、ストラクチャー類。建物コレクションの戸建家屋は、1棟1500~2000円。5棟の住宅地を作れば、物件全体で1万円。商業ビルに至っては5000円ですがら、駅前ビル群なと開発したら、2万~3万とぶっ飛ぶわけです。ですが、住宅商店あるいはビルのない都市情景は、ありえません。

そもそもの「情景の選択」が間違い。都市景観をやめて、赤字ローカル線の閑散区間、それも「利用者不在で廃線か?」みたいな、レイアウト設定にすれば、ストラクチャーは、限りなく減らませす。

たえば、単線交換設備。駅ではなく、信号所に格下げする。これで、駅舎も、ホームも(乗客フィギュアも)いらないのです。まるで、JR北海道みたい。だけど、これも、まちがいなく今の「鉄道情景」でしょ(笑)

専用原材料の「引き算」。

最後の金食い虫は、専用素材。

模型雑誌では、ここは「○○社の何チャラペンイト・・・」と紹介してます。これを読んで、「そういう素材でないとできない」とか、「これを使えばプロ同然」とか、読者の私たちは判断してしまいます。が、それは「思い込み」かもしれません。疑ってましょう。

ポイントがあります。雑誌の作品(プロのモデリング)の手法(素材)を、サル真似するのではなく、一度、現実の風景(画像や動画)と見比べるのです。定番とされる「工作手法」「素材」と、実写との間は、ウソやデフォルメが見つかるはずです。それが、スケールの縮尺や工作限界に、あるいは、作製の手間について、適正なことなのか。「プロだなあ」か「別の手があるよね」なのか。それだけ「見る目」は養えます。お試しあれ。

たとえば、レジンという素材は、透明な水を再現する「最新素材」ですが、すべての海川は「100%透明」にすればよい、わけではありません。水深が浅く濁りがない渓流なら、レジンは有効です。下流の都市河川や港湾で、底が見えたら「ウソ」でしょう。ここでは、透明度は不要です。荒れ狂う岩場の波は、表面上の透明感はあっても、決して透明ではありません。波の荒れる岩場では、海の底が見えるはずがない のです。

模型雑誌は、メーカーさんから「広告」をもらって、その出版業を成り立たせています。出版社にしてみれば、広告をいただくためなら、メーカーさんの商品を買う(売れる)ように誘導して、当然なのです。同じことは、ネット動画のインフルエンサーにも、当てはまります。

私は、ウッドランドのナンチャラとか、タミヤの〇〇ペイントとか、模型専用素材は、極力使いません。樹木や雑草は、100円ショップの材料、例えば、麻縄や手芸用品とか、多用してます。

前回に記述した「麻縄から作る冬樹木」で、森を作ると、枝だけの冬樹林なら、実にリアルに再現できます。流行りの「オランダ・フワワー」など、必要なのかと感じます。ローカルレイアウトの樹木や雑草は 数(面積)が必要なので、ここに100円ショップの材料を使うと、かなり製作経費を削れます。

音鉄と模型鉄の「掛け算」を狙う。

 

動画の模型は、DCCサウンドを搭載しています。動画のために、サウンドをアフレコしたもの ではありません。模型搭載サウンドはいい。サウンドボックスのように、「模型とはあらぬ方向からサウンドが聞こえる・・・」なんて”幽霊現象”は、一切起こりません。模型が接近すれば、増大し、離れれば、減衰します。音源が動きます。

ここが、私の「攻めどころ」。サウンドを編集し、プログラムを書き換え、変速段と直結段のエンジン音を交互に切り替え、カミンズ社のエンジン(DFM14)を楽しんでます。音鉄×模型鉄です。

つまり 模型趣味の枠を超えた、大きなカテゴリーの「掛け算」を楽しんでいる ことになります。レイアウトの「引き算」で、「趣味がちんちくりんに収縮」している、わけではありません。

攻めどころには、相応に投資するよ

当然、ここには「相応の資金」をぶち込んでます。DCCの機器、模型の改造、プログラミング・・・と。機器の固定投資に5~6万円、編成あたりの変動費は、1万5千円ぐらい。

動画にあるキハ110。タネとなる模型は、7000円でした。「デジタル改造」費は、デコーダー2つ(動力用・サウンド用)で、合計1万5千円。つまり、模型の2倍のデジタル投資を要したのです。これは、馬鹿みたいなコスト、なのかもしれません。

もし、同じ5~6万円を投じれば、アナログ模型の車両セットなら、2~3枚と買えるでしょう。同じ、キハ110に絞れば、5万÷7千で7編成。これなら、本物の機関区のように、多数の車両を並べられます。あるいは、各地の地域カラーキハ110を全て収集し「キハ110コンプリート」が完成する?かもれません。

そこは、人によって、人れの信念があり、100人いれば、100通りの楽しみ方があります。

私は、鉄道模型の楽しみを、「ズラリと並べてニンマリ」ではなく、「模型走らせて、そのエンジンサウンドを楽しむ」ことに置いてます。同額の資金投資なら「数の保有」に、価値を見出せません、私には「デジタルの2両」で十分です。タネ車の2倍の改造費も、ありです。

”鉄道”趣味をも超えた「掛け算」を狙う。(それができたら・・・いいんだけどねぇ)

DCCサウンド改造の部品は、ほとんどが「輸入品」です。世界的な物価上昇と円安で、DCCを安く楽しむことは、きわめて「難しい」状態です。まあ なんでこんなに高いのか?とは、感じます。

鉄道模型オタにとって、電子工作は「鬼門」です。まして、マイコン・プログラムなど意味不明。電子分野は「メーカーにお任せ」にしている人が、大半で、私も同じです。ひょっとして、鉄道模型趣味人の「電子音痴」、その足元を見て、海外メーカから「吹っ掛けられている?」のではないか・・・。これは、被害妄想ですね。

DCC(デジタル制御)に接していると、その部品の「ブラック・ボックス」感に、イラッとします。実際、工作に失敗して、1万円のデコーダーを一瞬で焼損してしまう、そんな事故はありました。

そんな経験があるから、「デコーダーの化けの皮」をはがしてやる!と、悔しがるわけです。デジタル模型を楽しむからには、もはや「電子嫌い」「電子工作は苦手」で、済む問題ではありません。

それで私は、電子工作のお勉強を始めたのですが、いくら本を読んでも、電子工作(あるいはプログラミング)という分野は、それ単体では、とても無味乾燥なものなのです。実体として、目的となる「モノ」がないと、進歩しません。

ですから、子供を相手にする「プログラミング教室」では、ロボットやラジコンを、ネタにしてます。それならば、鉄道模型やレイアウト・ギミックをネタに、「電子工作」を学ぶ のも、ありだと思いませんか

 

どうよ?。ゼロから学んだ電子工作1年生ですが、「鉄道模型のカタチ」にできました。これは、自分で自分を「褒めてやりたい」ぐらい。

ここで本題に戻します。鉄道模型の「TMSの論理」で説明すると、電子工作やプログラミングに、アタマを捻る、その時間的な余裕(T)があれば、高価なメーカー既製品を買う必要はなく、その資金(M)が、節減できる」・・・はず。これは理想です。

でも、「電子工作なんかに寄り道して、時間を取られるくらい(T)なら、手っ取り早く、高額なメーカー製品を買っちゃえ(M)」と。これが現実です。

 

鉄道模型の信号システムです。時限式ではなく、ちゃんと閉塞区間を持ちます。「信号単位でマイコンでやりとり」なーんて複雑なことせず、アルデュイーノ(1つ)で1元管理。とてもシンプルです。

いつの日にか 高額なDCCデコーダーを自作できれば言うことない のです。が、その領域にたどり着けるほど、私の人生は残ってない・・・ですね。多分。

 

絶対に 失ってはいけないもの

健康です。命は当然ですが、眼病(緑内障、加齢性黄斑)には要注意だと思います。視力を失えば、模型もレイアウトも、見えません。天国に召される前に、そこで、鉄道模型趣味は「完全終了」です。

それにひきかえ、新作モデルなど、短ければ5年、長くて10年後には、リニューアルされてるものです。鉄模趣味など「1年間冬眠」させても、腐るものではありません。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2023年6月18日 (日)

【100均レイアウト②】麻縄で作る冬枯れ樹木 

100均の麻縄で作る、冬枯れ樹木

220618

スポンジ素材も、針金も,まして、「ウッドランドのなんちゃら」とか、メーカーの情景素材なんて、一切使いません。全部、100円ショップの材料で、できるんです。

 

補足解説。枝のつくりかた。

仕分けた紐(枝の付け根)に瞬間接着剤をしみこませ、引っ張りながら、強くねじります。接着剤がにじみ出るくらい。そのまま10秒。固まります。これで、繊維はバラけません。強くねじれば、垂直に枝が茂る針葉樹(カラマツ)。緩くねじれば、枝はナチュラルな広葉樹。作り分け可能です。

アイディアの源泉

「針金を捩る」方法は、ジオラマ樹木で、一般的に使われる手法です。

 

 

うーん、だったら・・・はじめから捩られた”繊維の束”を解いても、同じじゃね?。これが、この作製法のアイディアの核心です。

樹木は、鉄道模型だけでなく、あらゆるジオラマ模型の脇役です。樹木の作製法は、内外を問わす、多くのジオラマ作家さんが、YOUTEBEに上げています。でも「麻縄」で樹木を作る手法は、どうやら、世界で「私だけ?」らしい。

コスパは 最強を通り越している

コスパよし。ほぼ、100均素材です。生産単価は、500本作って、まだ材量が余ってるので、まだ原価計算できていません。たぶん、1本1円に届きません。

タイパ(タイム/パフォーマンス)は、ほどほど。ポンジ法の量産樹木より、リアリティは向上しますが、スポンジ樹木ほど、数は叩き出せません。針金を捩るカスタム樹木より、はるかに工数が少なく、生産効率は、5分/本ぐらいで上りますが、枝ぶりは「針金樹木」に劣ります。

但し、先端が「繊細な繊維」のため、針金樹木のように、枝に「葉」を茂らすことができませ

応用自在

Photo_20230620013501 

この樹木作成法。基本となるパーツを作り変えるだけで、

Dsc_0143

こんな、枝ぶりが違う、別バージョンの樹木も可能。

Dsc_0144 

並べると・・・1本1円とは思えません。オランダフラワー(シーフォーム?)でしたっけ、流行りの樹木素材がありますが、麻縄ひとつで、十分に対抗できます。

いったい「葉のない樹木」に意味あるの?

葉ない樹木って 意味あるのか?って。

210604_5

なに言ってるのぉ。春夏秋冬。落葉樹なら、1年間の1/4は葉をつけてませんよ!!!。

 

2023年6月 4日 (日)

【100均レイアウト①】スキマ時間でススキをつくる  

「すきま時間を使って ●●する」とは、自己啓発本とか、資格取得の試験勉強とかの「常套句」です。それで「成果がでる」なら、世の中、苦労しませんよ。大方は、本の著者の「武勇伝」です。

「レイアウト製作」では・・・どうでしょう?。同じです。「在宅ワークだし、隙間時間にレイアウト・・・」なんて、できません。まず、工作には、「準備」も「かたずけ」も伴います。できるなら、レイアウト製作は、週末に「じっくりと向き会う」。このほうが、心理的に充実感が得られます。

それでも、こんな工作なら、どうでしょう?。これならば、「仕事の合間」でも、通勤時間でも、昼休みでも、「できる?」かもしれません。スタバでコーヒーを飲みながら。できます。音楽を聴きながら。できます。

「すきま時間」を使うとすれば、その条件は4つ。「①かたずけ不要」「➁材料は1~2個」「③道具は1つ」「④単調単純な反復作業。(アタマは使わない」)です。

Dsc_0137

今回は すきま時間で「線路際のススキ」を準備する。やってみます。

Dsc_0424_20230604002801

【1】準備するモノ

 Dsc_0069

原材料:麻縄。

百円ショップで 1玉110円。以前は2玉110円でしたが、2倍に高騰しました(笑)

3本の繊維の「撚り合わせ」で1本の紐ができています。これを解いて、繊維を使います。撚り合わせ故に、クセができて使えない?いやいや、1センチ刻みで使うので、ウネウネした繊維のクセは出ません。直線的な繊維です。しかも、指で自然なカーブが付けらます。コントロールがしやすい。グラスファイバーとは、えらい違いです。これほど秀逸な草素材、ほかにあります?しかも110円。貧乏モデラーの味方です。

Dsc_0074_20230428121901

②小道具:カットするための眉ハサミ。

化粧コーナーにあります。鋭く、しかもコンパクトです。刃に、カーブが入って、造形工作に便利。まあ、メイクだって、自分の顔を使う「造形工作」に違いありませんね・・・(笑)

【2】すきま時間で・・・できること

Dsc_0411

 ①:ひたすら、結び目をつくります。結び目の間隔が「草丈」になります。

 

 Dsc_0412

 雑草の王様。ススキは最盛期に1mを超えます。比べるなら、駅のホームと同等です。湿潤な日本、草丈は深いのです。草のカーブ分を考慮、実物のススキを草丈1.5mとして1/150換算で1センチです。結び目間隔は1センチが目安です。

Dsc_0410

②:長すぎると作業しにくい。10連で1区切り

Dsc_0413

③:その後、1つずつ小分け(できるなら)。

できるのは、ココまで。

「あみもの」「手芸」みたいなものです。これくらいなら、周囲は汚れません。電車の中でも、病院の待合でも、仕事の間でも・・・・

【3】1日の終わりに できること

Dsc_0414

①繊維を解して、

Dsc_0415

②草束にします。ほーら、塗装なしでも「枯草」として、スーパー・リアル(笑)、なんせ天然繊維ですから。

Dsc_0417

③もし、塗装するなら、

塗料を吹くと「後かたずけ」が面倒。私は「パステル」で汚します。なにより、作業が手軽です色は、黄色系、ブラウン系、グリーン系。必要に応じて選びます。パステルは1本300~400円。

Dsc_0416      

穂先を塗り「残す」色分け。いい感じ。

④:クッキングシートを「苗床」にします。

Dsc_0419

草束にボリューム感を出すため 2-3株を1つにまとめて    

Dsc_0421

 球根(結目)をカット するんです。

Dsc_0418

クッキング・シートに木工ボンドで植樹。

Dsc_0423  

「1万円の静電気マシン」など使わなくとも、ボンドの粘りで、きっちり直立します。 

Dsc_0429-2

乾燥後、きれいに剥がれます。これで「台座付の草束」になります。

Dsc_0430

木工ボンド+クッキング・シートは、簡単にはがすことができる、実に便利なテクニックです。 

【4】このあとのお楽しみ は、週末の工作日に 。

Dsc_0137

【5】効果と検証・・・

 まず、麻縄の経済性に注目。草素材は、市販されてます。ミニ・ネイチャーとか。確かにリアルです。けど、1シート800円ですか。ピンポンイトなら、それで十分です。が、”草むら”を”草原”に、面を広げると、800円×(一体何枚?)・・・そうなると、たかが「草はら」に、何千円もつぎ込むわけに、いきません。だから、1玉110円の麻縄なんです。小さいですが、使いではあります。ただし、1株づつ作成し、一株ずつ手植え。作成も植え付けも、単調作業です。

 市販完成品は「丈が足りない」。現在、市販されている「草」は、欧米基準。冷涼な欧州を想定してます。湿潤な日本の草はらを作るには、「丈」が決定的に足りません。そこは、もっと「自然観察」すべきじゃないかな?。

 色を選べる、色を作れる。これもハンドメイドのメリット。もちろん、市販品にも「カラー・バリエーション」はありますが、自然な草表現のたびに、いくつもカラーバリエーションを揃える となると・・・これだけで、出費がかさむのですよ。

 グラスジェネレーターよりも・・・静電気で草を立たせる。これが有効なのは6ミリ程度です。それもススキのような、丈が長い草では、「屹立」させることができない。

グラスジェネレータは1万円前後からあり、買って損、ではありませんが、「過大な期待」はできません。広い範囲に、を低層の草を養生するのは、得意なんですが。

 ファイバーグラスは・・・???草のための「繊維の束」素材(600円程度)もあります。「ファイバー・グラス」。あれを植えても、草として、ストレートすぎ かつ 繊細過ぎ、とても不自然です。いまどきの表現をするなら「パツンパツン」。まるで”金属棒”のような草(笑)。それに引き換え、天然素材の麻縄は、草に「カーブ」がつけられます。

【6】応用例

 ボサボサの草原 ですが あえてボサボサに植樹することで、モジュールに突風を吹き 草原がザワつきます。

Dsc_0137

「見えない風」が

Dsc_01371

見えてきませんか?

 

 次回は 百均素材だけで「冬枯樹木」。

 

 

 

 

 

 

 

 

2023年3月 4日 (土)

アルデュイーノ×鉄道模型

さて、1年以上 ブログを放置していました。

あまりに放置しておくと・・・ブログのサイトが利用料フリー契約なので、「空き家ブログ」として、管理会社から、整理されますね。これを避けるため、このあたりで、備忘録を残すとします

さて、1年の放置の間に、いじっていたのはこれ。アルデュイーノ・ウノ(マイコン・ボード)でした。

2303042

 

 

購入したのは、マイコン本体に電子部品がセットされたもので、2023年の春現在、5千円~6千円(アマゾン)になってます。日銀の円安放置と半導体不足。で、価格が倍増しましたね。

2303041

このキットに、テキストや説明書はついてません。現在、Youtubeにさまざまな解説動画があります。書籍より、動画を「見まね」したほうが、習熟は速いです。たとえば、この方の一連の動画は、このアルデュイーノ初心者セットを前提にしています。

 

最初にやるのは LEDチカチカ(通称Lチカ)

単純点灯では、オモシロくありませんね。レイアウトに組むことを考えたら・・・道路信号がいい。想定して、プログラムを組みました。

 

サーボ・モーターを連動。これなんか、レイアウトへの応用は、いくらでもあります。現在、スローアクションポイント制御を開発中。

 

プログラムの意味が分かると・・・面白いもので。

ついには、鉄道模型用の信号システム、自力で開発。初の実用品!

 

・・・動画のとおり「時限式」じゃなく、ちゃんと閉塞区間を持った、まっとうなモデルです。その意味じゃ、TomixやKATOとか、一流メーカーの完成品より、レベルは上です。

 

「Nスケール・スピード・メーター」を開発 同じような製品を個人輸入すれば、時価3~4千円します。実は、前述のアルデュイート・キットにある部品だけで、作製できます。但し、プログラムに”アタマをひねる”のが、タイヘンでした。

速度計算のためには、2点間の距離と時間が必要です。距離は、固定されているので、測ればよし。時間は、通過時刻の差で求めます。感度センサーを作動させて、その通過時刻を記録すればよし。

アルデュイーノは、1/1000秒以下でプログラムが回ります。したがって、なにも手を打たなければ、模型がセンサを踏んでいる限り、せっかく記録した時間は、1/1000秒単位で「次々上書きされる」ことになります。アルデュイーノに残る記録は、模型の先頭ではなく、最後尾の通過時刻です。これでは、正確な通過時刻がでません。・・・アタマが痛いでしょ。

模型の先頭が通過したその瞬間だけ、センサーを作動させ、通過時刻を記録し、その後は、センサーを作動させない。つまりは、時刻を記録するプログラム・ループに「進入させなけりゃいい」。それだけの話。このアルゴリズムが、プログラムのミソでした。

 

7セグメント表示も、ご覧のとおり・・・.

 

そんなわけで、鉄道模型はいじっても、もはや「鉄道模型趣味の重力圏」から離れ、フラフラと「電子工作とプログラミングの星系」に、恒星間飛行を続けてます。

1年間の「成果」は、この程度のレベル。私は、文科系の卒業で、電子工学は独学。つまりは素人です。それでも、Youtubeの指南で、ここまでたどり着きました。

最近、Youtubeが指名する「アルデュイーノの先生」は、こんな外国人講師ばかりです。

 

こんなんで、よくやってると・・・自分で自分を褒めてやりたいぐらい(笑)

いまのといろ、プログラムを「講釈」できるほど、電子工作やプログミングの経験は、積んでません。プログラムを公開しろとか、説明しろとか、まだ無理ですね。

これからのも活動も、「鉄道模型」をネタに使っていても、「鉄道模型の世界」から、外れ続けると思います。ほかの人がやっている、鉄道模型の「新車入線の報告」とか「ディテールアップ指南」とか、やりませせん。期待しないでください。(笑)

 

2022年1月 2日 (日)

サウンドプログラミング 記事一覧

サウンドプログラムの記事一覧

ブログ形式の記述は、書籍とは逆に、工程の後から~前に積み上がるので、読みにくいです。目次を設けます。タイトルをクリックすれば、必要な場所に飛べます。

 

日付 タイトル 内 容 実習  項目

2021年

9月13日

サウンドプログラミング概要

弄れるデコーダーは3つ

デジトラックス

特徴と限界

 

2021年

9月19日

デジトラックス・サウンドローダーの取説

使用機材と価格

アプリの導入

データのダウンロード

基本操作

サウンドの書換

メモリー上限


サウンドデポから トラクショントロリージェネリック(古いアメリカ市街電車)のサウンドデーター取得

 

サウンドデータ(アメリカ市電)のサウンド書き換え

 

 


2021年

9月30日

デコーダーへのダウンロード

機器の接続法

ダウンロード

サウンドテスト

発生しない場合

 SDN136デコーダーへのダウンロード

2021年

10月10日


SPJヘルパー

概要 導入 基本操作


導入コスト比較

ローダーの限界

SPJヘルパー導入

サンプルの立上げ

ホルダー設定

プログラムページ

列の意味

上下順序の意味

プログラム3要素

 


SPJヘルパーの導入

インスト・立上げ


2021年

10月31日

プログラムを書き換える

番号を変える

プログラムを追加


警笛のF番号を変える

 エンジン音を追加し伸ばす


2021年

11月08日


 

プログラムを新しく書込む

 

プログラムを新しく書込む  ドア開閉音を新しく設定

2021年

11月24日

プログラム全体像を一覧

全体像を一覧する

削除禁止なもの

削除可能なもの

なぞのプログラム

 

 プログラムのプリント

2021年

11月24日


 

不適正ファイルの修正

 

   ファイルチェックと修正
 

 日本型サウンドへ改造

 

 工事中  
 

  アッセンブル(組立)

 

 工事中  
       

 

 

 

 

2021年11月24日 (水)

サウンドプログラム8_不適正サウンドの修正作業

「不適正サウンド」の修正作業

ここまで、理解できれば、あとはプログラムのアッセンブル(組み立て)だけ・・・で、サウンドプログラムが出来上がると思いきや、そうは問屋が卸しません。

試しに、この段階で「アッセンブル操作」をしても、・・・

2111211

エラーになりフリーズます。この場合、SPJヘルパーのアプリを「完全に終了」させてください」

2111222

エラーの原因は、一連のイベントプログラム(トリガー+サウンド音量設定+サウンドファイル)のうち、サウンドファイルが「形式的に適正でない」ことにあります。「適正な形式」とは、「Waveフィルで、8ビットで、サンプルレートが11025ヘルツ」の3点を満たすことをいいます。どんなサウンドなのか、サウンドの中身は、問われません。ファイル名だけ変えて、同じサウンドを使いまわしても、問題なく、プログラムをアッセンブルできます。

サウンドファイルの「適正判定」は、サウンドごとに、ここをクリックして確認します。

「vチェックマーク」が入っていればOK

211231

「警告が出る」なら、不適正ファイルです。

2111232

デイーゼル・イグザンプルの中を調べたところ、不適正ファイルは、サウンドクリップ4、5、7、8、9、14。こんなにもある。これを修正しなければ、アッセンブルができません。

アッセンブルを乗り越えるためには、どうするか?。「Wave、8ビット、11025ヘルツ」の(仮)サウンドファイルに付け替え、SPJヘルパーを騙してしまえば、いいのです。

ただし、(仮)ファイルが、判別がつくように、ファイル名は工夫が必要です。私は、元のファイル名の頭に「re_」をつけて、仮ファイルであること、と その元のファイル名がなんであるか、判明できるようにしています。

とりあえず、(仮)サウンドファイルで、アッセンブルを乗り越えます。サウンドの要件は満たしてますが、中身はドアチャイム音です。これがこのまま、サウンドデコーダになるわでじゃありません。安心してください。これは、あくまで仮サウンドです。後で、デジトラック・サウンドローダーを使い(本)サウンドを組み込みます。

それにしても、チュートリアルに「不適性ファイル」を混ぜ込むとは・・・、フレッド・ミラー氏、いじわる。

「(仮)サウンドファイル」の準備

置き換える仮サウンドファイルは用意しました。パソコンのデスクトップに、ダウンロードして置きます。


クリップ

番号

名称  サウンドの内容 適正結果と「代替サウンド」

Diesel_idle.wav

アイドリング音 正常ファイル

Diesel_idle_run.wav


停止から→走行の時

最初の部分

正常ファイル

Diesel_run.wav


走行→加速

(スロットル上げ操作)

正常ファイル

Diesel_run_idle.wav


走行から→停止の時、1回再生

場所:1列目、下から2番目


 

異常ファイル:

ダウンロード - re_diesel_run_idle.wav

 


Diesel_turnon.wav


エンジンの掛かりはじめ

場所:1列目:上から1番目


 

異常ファイル

ダウンロード - re_diesel_turnon.wav

 


6

LoopSound.wav

停止から→走行時 

サウンドの中央部分

正常ファイル:こちらのページで組み込みました
7

Diesel_horn_begin.wav

警笛の最初 異常ファイル

ダウンロード - re_diesel_horn_begin.wav

 


Diesel_horn_cont.wav

警笛の真ん中 異常ファイル

ダウンロード - re_diesel_horn_cont.wav

 

9

Diesel_horn_end/wav

警笛の終端 異常ファイル

ダウンロード - re_diesel_horn_end.wav

 

10

Diesel_Horn_Start.wav

ベル音 正常ファイル
11

Diesel_popoff.wav

エンジンの異音 正常ファイル
12

Diesel_pump_start.wav

エンジン吹かし音の最初 正常ファイル
13

Diesel_pump_cot.wav

エンジン吹かし音の中央 正常ファイル
14

Diesel_pump_end.wav

エンジン吹かし音の終端

異常ファイル

ダウンロード - re_diesel_pump_end.wav

 

15

Diesel_MilePoset.wav

運転士のマイルポスト宣言 異常ファイル

ダウンロード - re_milepost.wav

 

16

EndSuond.wav


停止→走行時の

最後の部分

正常ファイル:こちらのページで組み込みました
17

DoorOpen.wav

ドア 解放 正常ファイル:こちらのページで組み込みました

18

DoorClose.wav ドア、閉鎖 正常ファイル:こちらのページで組み込みました
       

「(仮)サウンドファイル」への置き換え修正

不適正ファイル「4] Diesel_run_idle=停止音から、かたづけます。

ファイルの全体像をプリントアウト( 操作はこのページして、このファイルDiesel_run_idleがどこに組み込まれているか、確認します。

→1列目・下から2番目だけでした(複数使われている場合もあります)

21112310

適正なサウンドクリップ4を、サウンド発生ログラムごと、削除しま

21112311

 

21112312

左上のAssignSoundClips(設定サウンドクリップ)リストからも削除

211123121_20211123213301

2111123122

このメッセージが出たら、ほかにも、このサウンドを使ったプログラムがあります関連するプログラムを全部削除しないと、リストから削除できません

21112325

 

3行目・サウンド設定のプログラムを、やり直し

21112311

21112313

21112314

21112315

デスクトップに置いた仮サウンドを SPJヘルパーに組み込み

21112316_20211123222901

21112317

3行目・サウンド発生プログラムの書込み

21112318_20211123214501

21112322

21112321

「AssignSoundClips(設定済サウンド)」リストを確認

21112324

以上で「クリップ4の不適正フィル」は、「適正なファイル」に置き換えられました。でも・・・不適正ファイルは、あと5つ残ってます。同じ作業をあと5回繰かえします。とほほ・・・ですね。

 

 

 

 

サウンドプログラム7  SPJ Helper プログラムを”読む”

プログラムを読む

この「ディーゼル・イグザンプル」は、アプリ原作者フレッド・ミラー氏(北米在住)の手によるものです。想定された車両は、おそらくは大型ディーゼル機関車です。

 

どのようなサウンドが、どの条件で発生するのか?それが読めないと、改造の方針がたちません。

たとえば、サウンド発生プログラムの中に、日本の車両では「ありえないサウンド」が、いくつかあります。警笛3連打は、その端的な例。使わないプログラムは、削除すべきです。また、同じディーゼル機関で動いても、機関車と気動車では、用意するサウンドが異なります。機関車にドア開閉音は不要ですが、気動車にドア開閉がなければ、乗車できません(笑)

【解説】プログラムの全体像を見る(プリントする)

プログラムの全体像は、この操作で、

2111101_20211116033502

画面表示(プリントアウト)できます。

2111102_20211116033601

23111130

PlaySound指定された、サウンドクリップは、ここで試聴できます。

2111181

2111182

プログラムの完成前に、こんなサウンドになるという「見極め」をつけてください。

明らかな「邪魔なサウンド」が、いくつかあります。たとえば・・・

2111132

 

削除してはいけないプログラム

これらのプログラムは、直接、サウンドを発生させるものではありませんが、だからと言って、削除していいものではありません。

2111161

イネイブル・モーター★★★

 これを削除してしまうと、スロットル操作とサウンドが、リンクできない状態になるそうです。理由がわかりませんが、アプリの製作者フレッド氏が警告するのですから…そうなんでしょう(笑)

なお、サウンドデコーダーを、ストラクチャーのサウンドとする場合(例えば、駅アナウンス専用とか)には、削除してかまいません。

ミュート・プログラム

ミュート機能で、サウンドを消すプログラムです」。F8のONでサウンドが消えます。

ミュートを使わないなら、削除して問題ありません.

デコーダー・リセット。??

デコーダー・リセットした後のCV値を設定します。果たして、「デコーダー・リセット」を使う機会って、あるのか?と思います。CV値をぐちゃぐちゃに弄りまくり、「もーわけわからん!最初に戻す!リセットだぁ」と、”ちゃぶ台返し”するのに便利かな?。このプログラム、私なら残しません。

削除していいプログラム

2111132

警笛の3連打  ベル音

  日本の車両には、こんな警笛やベル音ありません。全くもって使えない、無用なサウンドで、削除したほうがいいです。

マイルポスト宣言(運転手のおしゃべり)

  運転会のネタにはなりますけど・・・まず、日本語に置き換えないといけませんね。ブレーキ音とかブレーキ解除音に置き換えるため、残す手もあります

タイマーで上がるエンジン音、エンジンに混じる異音

  液体式のディーゼル機関を想定すると、工学的にはありえない挙動です。ただし、この音を差し替え、コンプレッサー音を再現するなら、使い勝手ありかも。

  最近、DE10に代え、電気式ディーゼル機関車HD300という車両が、全国で活躍してます。ディーゼル機関で発電した電気を、一度電池に貯めて、電池を電源にPMSMモーターを回しているようです。ですから、どんなに貨車をけん引しても、聞こえる音は、電車のモーター音だけ。貨車の入れ替え作業中に、エンジン音は聞こえません。どうやら、電池が減ったら、その時点で、発電機を回して、電池に給電するようです。このHD300のような「電"池"式ディーゼル機関」には、この「タイマーで発電エンジン音が鳴る」プログラムは、とても合理的です。

  まあ、重い貨物を引っ張る際に、エンジン音が高鳴るほうが、模型的に、はるかに「絵になる」んですがね・・・。

謎のトリガー・プログラム Sit in idle

21111810

フレッドミラー氏が残した「特殊なトリガー」です。この「ディーゼル・イグザンプル」設例にだけ、用意されいます。

SPJヘルパーをどう弄っても、このトリガーは出せません。ですから、このトリガーを使いたければ、「ディーゼル・クグザンプル」を呼び出したうえで、このトリガーを残し、そのほかを書き換える、この手しかありません。

この「Sit in Idele」というトリガー、3つの例外を持ちます。

①まず、「Sit in Idele」で再生するサウンド「上位優先のルール」が効きません

 通常、同じ列にあるプログラムなら、上位にあるイベントが、優先して適用され、下位のイベントは、動きません。しかし、この「Sit in Idele」は、順位を下に置いても、動きます。

②「Sit in Idele」で再生するサウンドは、同じ列のサウンドと、重複再生します

 同じ列にあるサウンドは、重複して再生させることができない・・・はずですが。コイツだけ例外。

③「Sit in Idele」で再生するサウンドは、アドレスを切らない限り、動き続けます

「謎のトリガー=Sit in Idele」への対処方法

筋の通らなトリガーだから、削除して書き換える。それはそれで「正解」です。

2111204

2111205

②このトリガー「Sit in Idele」を生かす。

この場合、工夫が必要です

一般に、エンジンから出る音(アイドル、加速、減速、シフトチェンジ)は「音量設定CV=140」を共通にしますが、このアイドリングサウンドだけ、音量設定を別のCV(たとえば「CV=142」)にします。

SPJヘルパーのプログラムでは、ここだけ書き換えしておきます。

2111207

あとは、運転の段階で、共通のエンジン音(CV140)を「1-64の60台」に、このアイドル音(CV142)を「1~64の20」程度に、サウンドのボリュームを個別調整します。

こうすることで、サウンドの再生は、エンジン出力を上げるサウンドが、相対的に強く、アイドル音が、相対的に弱くなります。これで、エンジン音が上がれば、弱いアイドリング音はかき消されて、聞こえなくなります。弱いサウンドを強いサウンドでごまかす。邪道ですね(笑)

 

2021年11月 8日 (月)

サウンドプログラム6 SPJHelper プログラムを書き込む 解説と実習

(3)課題:全く新しいプログラムを 書込む

【解説編】

前回までは、作例にあるプログラムを”書き換え”を練習しました。今回は、書き換えではなく、新しいプログラムを”書き込み”します。

「書込み」の3つのルール(列選択・上下順序・中身)

①入れる場所(ボイス列=縦列)のルール

デジトラックスのサウンドデコーダーは、品番がSDN(又はSDH)と書かれたものは3チャンネル、SDXN(SDXH)と書かれたものは4チャンネルの 異なるサウンドを同時再生できます。

とは言っても、3つも4つものサウンドを、同時かつフルボユームで再生しても、スピーカーが小さいですから、きれいなサウンドにはなりません。つまり「同時再生」とは、警笛を鳴らしても、エンジン音やモーター音が「途切れない」というだけの話です。過大な期待は禁物です。

走行関連のサウンドは、左側「ボイス1」にまとめます。というのも、加速音も減速音も、同じエンジンから発生するサウンドですから、加速音と減速音が同時に再生しては、矛盾なのです。ですから、同じ列にまとめて、同時再生を避けてます。

2111022

②入れる上下順位=優先順位のルール

今回のドア開閉音にについては、影響なしですが、走行関連のサウンドは「優先順位=上下の位置取り」に注意を要します。

同じチャンネルにあるサウンドは、優先順位の上位のプログラム(サウンド)が完了しないと、下位のプログラム(サウンド)が作動しません。ここに問題があるのです。

2111025

もし、減速優先の位置取りにすると・・・

2111023

〇メリット:加速サウンドが鳴っていても(実行中)、減速操作が優先。

  スロットルを下げれば、即座に減速サウンドが始まる。

×デメリット:減速サウンドが鳴っている(実行中)と、減速操作が優先。

  スロットルを上げても、加速サウンドが始まらない。

反対に、加速優先の位置取りにすると

2111014

〇メリット:減速サウンドが鳴っていても(実行中)、スロットルを上げれは、即座に加速音が鳴る。

×デメリット:加速サウンドが鳴っていたら(実行中)、スロットルを下げても、減速音が始まらない。

このような 悩ましい事態が生じます。解決法はありません。どちらかの選択です。

④入れるプログラムの 要素のルール(イベント・音量設定・サウンド)

正直な事を言えば、私は、このデコーダーを動かしている PICマイコン、そのプログラム言語マクロ・アッセンブラーの知識はありません。また、このアプリの作成者フレッドミラー氏に教示を受けているわけでもありません。それでも、作例から「SPJヘルパー」を読み解くことができました。

ほしい動作は、2つ。「ファンクションの ON/OFFで、サウンドを鳴らせる(消せる)こと。「スロットルの操作(停止・発進・加速・巡行・減速)で、サウンドが鳴らせること」です。それ以上わからなくとも、十分遊べます。

例えば、左列2番目は、「F1→警笛発生」ですが。ここから「イベント」「音量設定」「サウンド」の3要素が、必要条件と読み解けます。

2110202_20211103230201

イベント:ファンクションF1を押し続ける限り

音量設定:サウンド音量はCV〇〇〇(140-147)で設定して、

サウンド:サウンドクリップを鳴らせ

同様に、右列3番めのプログラムは「停止から発進→発進サウンド」ですが、3要素が満たされてます。

2110202_20211103230301

イベント:アイドリングからスタートしたら

音量設定:CV142で音量を設定し

サウンド:サウンドクリップ2を鳴らせ

要は、新しいサウンド発生プログラムを書き込むなら、「イベント」「音量設定」「サウンド」の3つあれば、サウンドデコーダとして十分機能する ということです。

なお、音量設定は140-147まで可能ですが、同じCVを共通で使うことができます。サウンドの使いまわしも、もちろん可能です。

それ以上は・・・私にはわかりません。まあ「研究対象」として試す価値はありそうです。

【実習】

それでは、実習に移ります。

現在弄っている作例「ディーゼル・イグザンプル」は、このアプリを開発したフレッドミラー氏が、「プログラム練習用」に残したものです。おそらくは、北米大陸のディーゼル機関車を想定したものでしょう。同じディーゼル機関を使っている、とはいえ、このサウンドをそのままに、日本のディーゼル・カーのサウンドに応用するには、無理があります。サウンドの音色の違い、だけなら、サウンドローダーで「サウンドの入れ替え」でなんとかなる、のですが、問題は「サウンドが足りない」ことにあります。例えば、作例には「ドア開閉音」がありません。(機関車なので、当然ですね)

そこで、ファンクション操作による「ドア開閉音」の再生を、新しくプログラムします。

2111011

1行目:イベント

3列4番目(空白セル)をクリック。リストがドロップダウン。AddEventクリッック

2111061

トリガーイベントの詳細 赤丸のクリックで、リストがドロップダウンします。

2111062

Fkeyは「ファンクションの操作」、ファンクション番号→「4」、TurnOn「入れた場合」

2111063

2111064

クリックで、1行目に埋め込まれます。

2111065_20211107133901

2行目:音量設定のCV番号

トリガーのリストから「SetVolume from CV」

cvは149 ※空き番号だったので利用しました。それ以上の理由はありません。

140~150(?)ぐらいの範囲で設定できます。143を設定したかったのですが、この作例では使用済みでした。番号は重複可能。エンジン音関係は「cv140に一本化する」とか、「警笛」は大きく出すため別枠で141、などどルールを決めておきます

2111066

「Save・・・」をクリックすれば、2行目に埋め込まれます。

2111068

行目:サウンド発生プログラム

前ベージ「サウンドプログラムを書き換える」で、操作法を説明しました。操作方法は同じです。図解しておきます。

使用するサウンドファイルはこちら デスクトップにダウンロードしてください。

ダウンロード - dooropen.wav

ダウンロード - doorclose.wav

2111069

21110613

21110614

211106151

21110616

21110618

211106182

21110619_20211108014901

211106201_20211108015001

それでは、ドア・クローズのプログラム。手順は同じです

211106202

ここだけ、Turn OFFにします。

211106221

 

 

2021年10月31日 (日)

サウンドプログラム5 SPJHelper プログラムを書き換える

1 プログラムの 操作と練習

前回に引き続き、SPJ Helperの操作練習です

(1)課題:既存のプログラムの ファンクション番号を変えてみる

まず、一番簡単な課題から・・・  

学習教材とした「ディーゼルサウンド」右列2番目が、F1の警笛プログラムです。

F1をライト点灯に使用している場合、ファンクションは重複します。重複してデコーダーが壊れることはありませんが、警笛を鳴らすたびにライトが点灯消灯しては、挙動がおかしいです。そこで、警笛発生をF1からF5に変更します。

【操作1】書換対象を右クリック→リスト

2110206

【操作2】リスト→EditEventクリック

2110207

【操作3】一番上の行(トリガー)を書き換えるため クリック

2110208

【操作4】トリガー詳細の選択

 Fkey:ファンクションキーで

 ファンクション番号→6

 WhileOn:押している間(TurnOn:押した時)

2110209

【操作5】保存

21102010

【確認と終了】

21102011

********************************************************************

 

 

(2)課題:既存のプログラムの 発生サウンドを追加してみる

①下準備

  まず、組み込むサウンドを用意しました。下準備としてパソコンにダウンロードし、デスクトップに保存してください。SPJヘルパーの操作実習で使います。

  ループサウンド※:ダウンロード - loopsuond.wav

  エンドサウンド:ダウンロード - endsond.wav

 ※サウンドの内容は、ループサウンドではありません。理由があります。

組み込むサウンドは、8ビット11,025レートのWaveサウンド。でないと、SPJヘルパーに弾かれてしまい、サウンドプログラムが組み立てできない「トラブル」がおきます。

困ったことに、適正条件で作成したファイルでも、SPJヘルパーが、気まぐれに「不正」と認定し、ファイルを弾くことが多々あります。

ここでは、サウンドプログラムの組立を最優先に、SPJヘルパーが弾かないサウンドファイル、を用いました。いわば、組み立て(アッセンブル)のための「仮・サウンドファイル」です

なお「本・サウンドファイルは」、アッセンブル(組み立て)を実施した後、SPJヘルパーではなく、サウンドローダーを使い、組み込みます

②書き換えの方針

書換のターゲットは、左列3番のスタートサウンド。作例のプログラムでは、一本のサウンドクリップ(2)を1回だけ鳴らす、とプログラムされていました。

【書き換え対象】ボイス1の3番目、クリックして→リスト→ShowDetails

2110261

これに組み込むサウンドは、こんな感じです。作例どうり組み込めば、スロットルを停止から発進させた時に、この8秒の発進エンジン音が1回鳴る、動作となります。

2110210

でも8秒間では、発進サウンドの継続時間としては、もの足りないです。時間を延したいです。

かといってメモリー数には制約があります。デジトラデコーダーでは、1つのサウンドクリップは11秒。デコーダー全体で総量は50秒です。メモリーを増やさないで、発生時間を延ばす、そこに工夫が必要です。

そこで、1本のサウンドを1回の命令で再生する方法を、書き換えます。

まず、サウンドを「3パート」に分割。それぞれ、スタート・ループ・エンドとし、同じサウンドから切出します。サウンドの切り出しにも、テクニックを要しますが、今回は、サウンド編集が目的ではありません。サウンドは提供しました。

2110212

サウンド再生の命令も、3つに分けます。

改造前のプログラムは・・・

2110261

これを、①スタート部の再生命令②ループ部の再生命令③エンド部の再生命令とします。①の再生命令は、既にあるので、②と③の命令を追加します。

改造後のプログラムは・・・

2110262 

ポイントは、②ループ部の再生だけ複数回命令しているところです。つまり、再生パターンは「①スタート+②ループ+②ループ・・・②ループ+③エンド」となります。

改造前は1本8秒のサウンド再生でしが、これを ①スタート6秒+②ループ1秒×5回+③エンド1秒=計12秒に仕立て直すのです。こうすれば、搭載メモリー量は同じで、時間をのばすことができます。

2110213

※このような処理は、一般に「ループ処理」と呼ばれるもの。これは、どのプログラム言語にも用意されています。プログラム言語で書けば「For・・・」とシンプルな構文で済むところです。されど、SPJヘルパーのノン・テクモードでは、素人向けアプリなので、ループ処理が用意されていません。苦肉の策で、こんなプログラムを組んでいます。

 

③SPJヘルパー操作

いきなり操作画面が変わる、次々と表がポップアップする、加えて、プロセスが長いです。が、お付き合いください。

【操作1】ボイス1(左列)3番右クリック→リスト→EditEvent(イベントを書く)をクリック

2110281

【操作2】プログラムの枠を設定します

 2-1:「右表アクティビティ」の下に枠を入れます。一番下のプログラム枠(PlaySoundClip 2)をクリック。→緑帯

 2-2:クリックしたプログラムが、左下にポップアップしてきます。

    左から削除、書き換え、挿入です。→挿入を操作します。

 2-3:下にポチマークを入れます。

    上ポチは 対象行の上に挿入。下ポチは対象行の下に挿入。

    プログラムは上から実行されます。SoundClip 2後に実行させるため、下側に挿入します

2110282

→空のプログラムが設定され アクティビティのディテール(詳細)に変わります。

21102831

【操作4】アクティビティ(命令)の詳細を埋めます

4-1セレクト・アクティビティ(命令の選択)赤丸部分をクリック→、リストがでます。2110283

4-2:命令の一覧が、ドロップダウンします。命令:PlaySuond(サウンドを鳴らせ)をクリック

2110284

4-3:サウンドの選択

次に、「どのサウンドを鳴らすのか」指定しますが・・・、今回は「新規のサウンド」です。サウンドがありません。サウンドの指定するためには、「新規サウンド=下準備に用意して、デスクトップに置いてあるループサウンド」を、SPJヘルパーに取り込みます。

この場所=「組み込むサウンド指定する」 をクリック

2110285_20211029172001

4-4:サウンドリスト

画面がポップアップ。サウンドリストが並びます。

「新しいサウンド=LoopSuond」 は、ここに並んでません。ここに「新しいサウンド=LoopSuond」を並べます。リストの下に、パソコン内のサウンドファイルを指定して、リストへ追加します。「インポート」ボタンがあります。これをクリックします。

2110286

4-5:インポートするサウンドを探す

「パソコンのディレクトリ(一覧)」が表示されます。ここをたどり、デスクットップに置いてある サウンドファイルを探します。

2110287

デスクトップ ホルダーを探して開くと、準備しておいたサウンドファイル「LoopSound.wav」が見つかります

2110288

4-5 インポートするサウンドをコピー

クリックして 帯をかけてから、CopyFilse(コピー)します

2110289

4-6:リストに取り込まれます。

21102810_20211029194201

4-7:確認と保存

取り込んだサウンドが 適正(8ビット・レート11025ヘルツ)かどうか?確認します。

サウンドをクリック。チェックマークがついていればOK。→保存します。

21102812

道をはずれますが・・・

用意したサウンドは、適正なものですが、もし、異常なファイル(8ビット11025ヘルツを満たしていない)とこんなメッセージ出ます。このサウンドファイルは、使えません

21102811

この段階では、問題なく進めることができますが、異常ファイルを組み込むと、先のプロセスで、ファイルの「アッセンブル=組立」ができす、アプリが停止します。

ちゃんと、8ビット・11025ヘルツで、サウンドを作成していても、SPJヘルパーが「異常」として弾きだす、そんなケースが多々あります。このアプリのバグかもしれません。

もとの道に戻ります。SaveSuond(保存)の後、画面が戻ります。

21102814

4-8:発生形態の選択

サウンドの発生(単発再生か 連続再生か)選択します。→単発を選択

21102815

保存します。

21102816

5プログラムの追加完了と中断方法

3列目に新しいプログラムが追加されました。これでOKです。

疲れてませんか?、作業を一度中断するにはEnd EditEvent(イベント書込み終了)をクリック

21102817

画面が戻ります。ここで、左上のサウンドクリップ・リストにサウンドNo6「LoopSuond」が追加されてますね。

21102818

作業を再開します。

4列目以降も、同じプログラムを並べます。復習です。同じプロセスなので 解説は省いて 画面のみ

2110301

 

2110304

2110303

2110304_20211031041401

【ココだけ注意】・・・

サウンドはリストに組み込み済です。サウンド番号6を入れると LoopSoundが入ります。サウンド番号は、左上の表にあります

2110305

2110306

2110307_20211031135601

2110308

5列目以後も 同じ操作です。プログラムを並べます

2110309

8列目は、同じプログラムではなく、「EndSound」の再生です 

手順は、LoopSoundの組み込みと同じです。総復習ですね。

21103011

********************************************************************

ここでまでは、既存のプログラムの「書き換え」でしたが 次回はプログラムをゼロから創る に挑戦します

2021年10月20日 (水)

サウンド・プログラム4 SPJヘルパー1

サウンドプログラムに必要な機器とその資金

お高いイメージを抱くDCC(デジタル鉄道模型)ですが,具体的に必要資金をまとめまます。この遊びに必要なのは、DCCコントローラー・サウンドブログラム機器、サウンドデコーダーの3点です。

使用メーカー  デジトラックス  Esu

コントローラー 


 KATO D102

(デジトラックスOEM品)

 実勢価格2万2千~

        ※

サウンド・プログラマー

(ハード)


 PR4

 1万円


 Lok

 サウンドプログラマー 

 2万4千円~2万8千


プログラム・ソフト(アプリ)

  無  料  無  料

サウンド・デコーダー

 


SD系(50秒8bit)

      8千円前後

SDX系(3分16bit)

  1万円前後

 


クマタ貿易(公式代理

 2万2千円

並行輸入品

 1万6千円~

   合  計   4万円 前後

 6~7万円

※コントロール機器を2万円と仮定して


【参考】

日本型車両のサウンド・データー

 


モデルランド田中

 PR4使用料:900円 

 データのみ 無料

 (要 PR4)


クマタ貿易

 2万5千~

 含む サウンドデコーダー代金

オープンサウンドデータ

 無料

 (要 サウンドプログラマ

  モデルランド田中入替サービス

  を利用すると 1019円/1回) 

     

※ Esuのコントローラーというと、価格が11万円(正規代理店クマタ貿易)なんて高級機種がありますが、DCCの運転で、Esuのデコーダーを鳴らすのに、Esuのコントローラーである必要はありません。同じく、デジトラックスデコーダーを鳴らすのに、デジトラックスのコントローラである必要もありません。DCCの国際認証規格は「NMRA:アメリカ鉄道模型協会」です。「NMRAの認証コントローラー」であれば、どのメーカーでも、運転もサウンドも、大丈夫です。

いっぽう、サウンドプログラム機器は、デコーダーの製造メーカーと、不可分の関係にあります。いくら安いといっても、デジトラックスのサウンドプログラム機器(PR4)で、Esuのデコーダーをいじれません。価格が高くとも、Esuのプログラマーでは、デジトラックスデコーダーはいじれません。

さて、この価格 高いっ ですか?4万円というと GMやマイクロAの増結込み10両セットとか、Tomixの「さよなら・なんちゃらセット」と等価です。プログラミング機器とかDCCコントローラーは、1回買えば10年は維持できますよ。

話題をサンウドに戻します。

デジトラックス・サウンドローダーの限界2110137

デジトラックス・サウンドローダーでは、組み込まれたサウンドを 自分の好みのサウンドに組み替えることができます。しかしながら、指定されたファンクション番号の変更、指定されたトリガー(スロットル操作)を変更することが、一切できません。これを可能にするアプリが「SPJヘルパー」です。

動作環境はWindows8まで、と書いてありますが、Win10で動きます。MacOSには、対応してません。

Spjhelper

SPJヘルパーは、デジトラックス社ではなく、アメリカ人プログラミング技術者フレッドミラー氏が、個人で作り出した、アプリケーションです。サウドローダーではいじれない、ファンクションの設定、サウンドのトリガーを自在にプログラムできます。

フレッドミラー氏のHP

http://fnbcreations.net/tractionfan/index.html

SPJヘルパーのダウンロードページ

http://fnbcreations.net/spjhelper/index.html

SPJヘルパーの公式解説PDF

http://fnbcreations.net/SPJHELPER.pdf

個人が趣味の延長で作ったアプリですから、不具合はそこかしこにあります。でも、個人の作品に、文句をつけられません。また、これがないと、事実上、デジ社のデコーダーで、日本車のサウンドを作り出せません。

デジトラのデコーダーは、マイクロチップ社のIDE(開発環境)を使っているので、PICです。使用言語はマクロ・アッセンブラー。これ以上のことは、私にはよく分りません。フレッド氏は、デジトラックスのデコーダーについて解説しています。

All About DigitraxSoundDecoders(デジトラサウンドデコーダーの全て)

http://fnbcreations.net/Articles/All%20About%20Digitrax%20Sound%20Decoders.pdf

それにしても、デジトラ社の企業秘密をオープンにして、法的に大丈夫>フレッド氏

SPJヘルパー概要

参考動画です。6年前(2015年)に作成しました。つらつら文章を書き連ねるより、百聞(この場合「百文」かな?)は一見にしかず。

インストール

先の動画の通りです。

さっそくですが、次のトラブルに注意してください。

SPJヘルパーは、英語を前提にプログラムされています。お使いのパソコンOSに、日本語で利用者登録がなされている場合(例えば、漢字で「安倍晋三」とか)には、ダウンロードが停止します。この場合、登録名を「ABE SINZOU」と英数文字に変更し、登録をやり直してください。

1ページ目:ホルダー作成ページ

最初の立ち上げ画面

2110131

操作手順

最初に、作業モードを選択します。ノンテク(素人)モードとプロモードがあります。ノンテクモードを選択してください。プロモードは、アッセンブラーでPICマイコンが組める(又は、仕事にしている)ならば、扱えるかもしれません。なお、作業途上でモード変更はできません。

2110132

新規作成、継続再開、検索再開を選びますが、ここでは「新規作成」です。なお、Quitで終了できます。

2110133

新規作成を選択すると、作業ホルダーの名前を入れるよう 指示してきます。

2110134

【参考】

作業ホルダーは、SPJ_Projectというホルダーの中に、生成されています。Windowsホルダーでも、ユーザーホルダでもない、独立したディレクトリに連らなっています。場所を確認してみてください。

2110135

作業ホルダーの中身は、複数の異なるファイルが詰まっています。

2110136

 

2ベージ目:プログラムページ

サンプルプログラムの導入

SPJヘルパーには、利用者の学習用のサンプル(チュートリアル)が4本用意されています。トロリー(市電)、ディーゼル車、蒸気機関車、市街地の雑音、です。ここでは、学習用にディーゼルのサンプルデーターを呼び出し、操作手順を解説します。

前回の続き、1ページ目でホルダー名を入れると

2110134

2ページが開きます。ます「ホルダーにあるプロジェクトを参照するか?」と聞いてます

2110191

教材として「ディーゼル車のサンプルデータ」を展開したいので、YES

2110192

パソコン内のホルダー、SPJProjects が開きます。DeselExampleを選択して 開く

2110193

選択して 開く

2110194

次に「サウンドファイルを参照するか」と聞いてくるので Yes

2110195

これで準備完了です

作業の中断は、Quit Simple Mode をクリック。「作業の保存」を聞いてきます⇒YESです2110196

1面に戻ります。Quitで「アプリの終了」です。

作業の再開は、モードを選択してから、Continue(継続)をクリック 直前の作業ホルダーが開きます。

2110197

テーブル(表)を読む

1テーブルの大構造(サウンド・チャンネル)

「縦列」が、サウンドチャンネルです。

2110201

異なる列(チャンネル)に置かれたサウンドは、独立操作でき、同時再生が可能です。

【ルール】異なるチャンネルは 同時再生できる

例えば、警笛と加速音は、別のチャンネルです。加速しながら、警笛を鳴らせます。プログラムの詳細を見ます。次の操作をしてください。

21102021_20211019204101

左列・上から3番目を左クリック②ドロップダウンリスト③ShowDetails(詳細)をクリック)

2110202

ここには、発進時のサウンド発生がプログラムされてます。プログラムの意味は

  1. スロットル:アイドリング(停止)からスタート(発進)したら
  2. ボリュームをCV140で設定して
  3. サウンドクリップ 2 を鳴らせ

2110202_20211019203501

ここは、警笛のプログラムです。意味は

  1. ファンクション1が押されている間
  2. ボリュームをCV142で設定し
  3. クリップ10を鳴らせ

列(チャンネル)が違うので、発進加速音を出しなら、警笛を鳴らす、サウンド同時再生が可能です。

 

【ルール】同じチャンネルは、同時再生できない(しない)

右列の下から3番目を詳細を読みます。巡行走行音です。

21101910

加速音と巡行音は、同じ列にあります。したがって、サウンドを同時再生できません。しかし、加速しながら巡航走行する、なんてことは、操作が矛盾します。走行は、加速か巡航か「どっちか」でしょ。加速音と巡行音は、同時に鳴らす必要はなく、また、同時に鳴っては困るのです。だから「同じ列」に置きます。以上が、縦列のサウンドの置き方です。

 

2:テーブルの中構造(プログラムの並べ方)

同じ列のサウンド、その上下の位置取り。そこにはルールがあります。

【ルール】同じ列に置かれたサウンドは 上に置かれたプログラムが優先再生されます。

2110201_20211020124001

さて、加速と減速どちらを上(優先)に置きますか?

2110203

加速の下に減速を入れた場合、加速サウンドが終わるまで、スロットルを減速に入れても、減速サウンドが再生できません。

2110202_20211020124201

減速の下に、加速を入れれば、加速サウンドの再生中でも、スロットルを減速に入れれば、減速サウンドが再生します。

ただし、減速サウンドが終わるまで、加速サウンドが再生できません。

つまり SPJヘルパー(素人モード)では、いわゆる「割り込み処理」ができないのです。

しかたたないので、私は「減速を上・加速を下」に配置して、加速音の途上でも減速音に切り替変わる、プログラムを組みます。この順序どりは、フレッド氏の作ったサンプルとは、異なります。

フレッド氏のイベント・プログラム置き方はこうですが・・・

2110201_20211020124001

私なら 減速を優先して このように置きます。

2110202_20211020124201

このプログラムなら、加速のサウンドは、20秒でも30秒でも連続して大丈夫。減速操作すれば、即座に減速音に切り替わるからです。運転では、「所定の位置に止めること」が求められます。減速操作が優先されて当然です

一方、減速音は、終わるまで、加速音に切り替えられません。したがって、あまり長い減速音は組めません。

まとめると、加速と減速を頻繁に繰り返すような運転すると、デジトラックスのプログラムは、アルゴリズムが 馬鹿 単純すぎて、サウンドが運転操作についてこれないのです。デジトラックスは「安かろう悪かろう」ではなく、「馬鹿とはさみ・・・」使い方しだいなのです。

3:テーブルの小構造(プログラムの書き方)

基本ルールは

  1. イベント(スロットル操作 又はファンクションのON/OFF)
  2. 個別サウンド音量のcv設定(CV140~147 同じcvも可能)
  3. 発生サウンド(5つぐらい並べることもできます。単発再生とループ再生が選択できます)

最低限、この3要素をこの順序で並べれば、サウンドは発生します。なお、サンプルのプログラムには、「タグ」とか、「ブレンド」とか、ついているものが多々ありますが、私には、その効果がわかりません。

練習1:レーン右(ボイス3)の2番:警笛の発生を F(ファンクション)1から、F5に変更

2110206

2110207

2110208

2110209

21102010

21102011

練習2:レーン中(ボイス2)にドア開閉音を追加

 ・・・説明が長くなりすぎるので、今回はここまで。次回はプログラムの書き換えや追加をじっくりと・・・

なお、Develop SPJ Filse ボタンは、まだ触れないでください。トラブルが起きます。

作業保存して終了します。

2110205

 

 

 

 

 

 

 

 

2021年10月10日 (日)

サウンドプログラム3 デコーダーへダウンロード

デコーダーへのダウンロード

※デコーダーへプログラムを移すこと、という意味で「ダウンロード」と表現ました。この表現には、デコーダーへのロースト(焼き付け)という翻訳もあります。が、「デコーダーを焼く」という表現は、工作の不備で「デコーダーを焼損すること」と、混同しかねません。そこで、あえてダウンロードとしました。

ハードウェアの接続図

211009 

PR4に接続していない場合 パソコン画面

211009_20211010184801

PR4に接続したパソコン画面

211010pr42_20211010210501

→できない場合、

 ①USBを入れたポートを確認してください。サウンドローダの設定ポートと一致してますか?

2110091

サウンドローダーの側の設定

21100911

デコーダーが応答したパソコン画面

2110104

 →デコーダーが応答しない場合 チェックリストは次のとおり、

2110092

 機器 問題部分 対処方法

パソコン

(USBケーブル)

 

接続部分の緩み・ぐらつき

差し込み直し


PR4

 


フィーダー線の差し込みが

抜けている

AC電源入れ忘れ


差し込み、締め直し


線 路

 

線路の面

汚れていないか?

線路クリーナーで通電を改善


模型外部

車輪が汚れている

車輪・軸受を線路クリーナで拭き、

通電を改善

模型内部

デコーダーのソケットが

抜けている


入れ直す

順序よくチェックしましょう。一発でうまくいく・・・とは 限りません。

ダウンロード開始

2110105

デコーダーから 悲鳴 ビーッと音がし、その後、ブチブチ音が続きます。デコーダーとLDEが繋がっていると、LEDが点滅します。この現象がないとき、ダウンロードができていません。8ビット・500,000バイトのダウンロード時間は、3分が目安です。(デジトラックスがESUに比べ、唯一、勝る部分です)

ブチブチ音の終了で、ダウンロード完了です。

デコーダーをテストする

なお、このパソコンのサウンドローダを使うテストで、再生しない場合でも、正常にダウンロードできている場合がよくあります。失敗を疑う前に、コントローラーを使ったテストをしてください。

2110107

サウンドが出ない場合の対処

①まず断線による不完全なダウンロードを疑う

 「パソコン-PR4-線路(線路面の汚れ)-模型内部(デコーダーのソケット)」。このラインそって情報が流れます。どこかの接続部分に、「ゆるみ」や「グラつき」があれば、ダウンロードの途中でデーター途切れて、不完全なプログラムになっている可能性があります。一度チェックして、やり直ししてください。「接続部のゆるみ」等、物理的な障害は、情報とかプログラムの”数字いじり”をやっていると、気が付かないものです。

②ソフトやパソコンの「気まぐれな不調」には、立ち上げ直しが効く(かも)

 断線がなければ・・・「気まぐれな不調」を疑います。パソコンのサウンドローダーを一度終了し、再度立ち上げなおす。コントローラー関係の電源を一度落とし、再度立ち上げる。それでダメなら、パソコンの電源を一度落とし、再度立ち上げる。いや・・・ココロが折れますね(笑)。たとえば、偶然ですが、パソコンがバックグランドで、なにかのソフトのダウンロードしていたため、CPUやメモリーに負担が生じていたようなケースでは、うまくいかないかもしれません。耐用年数を超えた高齢なパソコンは、「きまぐれな不調」がでます。人間と同じです(笑)

③データー容量の過剰

 デコーダーに入れるサウンドデーター、その容量が上限を超えると、サウンドが出ません。 まず、総量が上限をこえていないか? 個々のサウンドクリップの容量が上限をこえていないか?サウンドローダーを確認します

210909_20210915200101

 

2109153

デコーダーの種類 個々のサウンドの上限 サウンド総量の上限
SDN(H)系  ¥7.5~8千円 約11秒 131,072バイト 約50秒 524,288バイト
SDN(H)x系 ¥10~12千円 約95秒  1,048,575バイト 約3分 2,097,152バイト

④サウンドファイルの形式が不適格

 WAVEファイル(非圧縮のPCM)8(16)ビット、サンプルレート11025。誤って「MP3ファイル」で作ってませんか?とくに、サウンドクリップのメモリー数が、そこだけ高いケースでは、作ったファイル形式に疑いあり。

④そこまでやってダメなら・・・もう寝るっ!(モケイを寝かす)しかありません これ重要です!

 デコーダーの不良、PR4の不具合。・・・果てはパソコンの故障まで。限りなく想像できます。自分で工作したり、プログラムを組んでいれば、工作のミス、プログラムのミスも、十分ありえます。まあ、それ以上追っかけてもムダです。「その日はおしまい!」と踏ん切りをつける。ここは、あきらめが重要です。パソコンの「気まぐれな不調」が理由だと、別の日にやったらうまくいった。なんてことも・・・あるかもです。

 あせった挙句、正常なデコーダーを異常な機器の実験材料に使う、これは最悪です。被害を拡大させます。

DCC工作は自己責任 

 DCC工作は、自己責任が原則。うまくいかなくとも、自己責任。原因を探すもの自己責任。この、原因追求の過程が、ツライです。

「道」は残しておきました。挑戦者、お待ちしています。

次回は、SPJヘルパーを解説し、デジトラックのサウンドプログラムを本格的に弄ります。なにせ、製造元デジトラックス社の想定を超える「いじり」ですから、これから先は「自己責任ワールド」ということで、お願いします。まあ、犠牲になるのは、たかだか7千円のサウンドデコーダーですけどね。

 

 

2021年9月19日 (日)

サウンド プログラム2_サウンドローダーの取説

DCC界隈では「安かろう悪かろう」と評されるデジトラックスですが、「 馬鹿 デジトラとハサミは使い方」です。

デジトラックス_サウンドローダー(勝手な日本語マニュアル)

マニュアルを 翻訳したものではありません。最低限「ここだけ」チェックできれば、なんとかなる。使い方のコツです。長くなるので、今回はパソコン上のプログラム作業までを詳述、次回は、模型(デコーダー)へのダウンロードを解説します。

使用機材

 全体像:(現行の製品は、PR3からPR4に代わっています。)

2109092_20210910130201

   PR4 

  210915

 量販店では入手困難です。ホビーセンター・カトーは、デジトラックスの公式代理店なので、在庫あるかもしれません。横浜にあるモデルランド田中は、DCC機材が豊富で、入手可能です。ドルが定価です。これに為替レートを乗じ、これに関税やら国内消費税(プラス10%)が乗るので、1万円プラス・・・。まあそれでも、Esuのサウンドプログラマーの半値です。

 パソコン 

  サウンドローダーは Mac osのドライバーもあります。(後述するSPJヘルパーは Windowsのみ。) 

 サウンド・デコーダー

  Nゲージ用のデコーダーです。ほかに基板タイプのもの、HOゲージ用のものがあります。デジ社の公式サイトへ。SDNの”N”がNゲージ、SDHの”H”がHOゲージを意味します。SDXN、SDXHの”X”は、メモリー容量の大きいデコーダーです。

 2109152136

 2109152sdx136

SDN(H)なら7000~8000円、SDXN(H)なら1万円+アルファ。こちらもEsuの半値。

アプリの導入

PR4に同梱されているCDに、サウンドローダーとそのドライバーソフトが入っていまする。パソコンにインストl-ルしてください。

サウンドローダーの最新版は、デジトラックスの公式サイトにあります。無料です。

①デジトラックス公式サイト。

210906_20210908232001

②ダウンロードできます。

2_20210908232101

③Win10で警告が出た場合、詳細情報の中を開いて実行。

3_20210908232201

 うまくいかない場合、セキュリティやファイヤーウォールを一時解除してみてください

➄DigipPLII DigiMONIIとか、付録がついてきます.

デジトラックス製のDCCアイテムのプログラム更新(ファームウェアのアップデート)に使うアプリらしいのですが、人畜無害なので 放置してください

サウンドデータのパソコンへ取り込み

サウンド・デポ

これらは、デジ社が用意した、オンライン・サウンドプログラム集です。

210909

2109092

2109093

2109094

お試しに Tractoin Trolley Generic 古いトラム(市電)を拾ってっみます。

2109096

リストの下から4番目「Traction Trolley Generic」クリックすると、中身が見えます

210909_7

自分のパソコンのドキュメントホルダ・・・「見つけやすい場所」に、ダウンロードしてくさい。

 

サウンドローダーの基本操作

まず、プログラムを展開する

最初は 無地の状態なので、ダウンロードしたTractionTrollyGnericのプログラムを展開してみます。

①Fileのタブから、「OpenSundFiles」をクリックします

2109091

③パソコン内にある さきほどダウンロードした 「TractionTrolleyGeneric」のファイル

を指定して「開く」

2109092_20210909013301

④サウンドプログラムが展開します。

2109093_20210909013301

バーにある各タブの操作方法

 fileタブ【重要】:プログラムの立ち上げ、保存、アプリの終了など

210909_20210910125901

New SoundProject:新規作成

・・・といっても、新規にファイルを起こすことはできません。画面が白紙になるだけ。

プログラムの改造途上で、大きなミスをしでかした、あるいは、予期せぬトラブルが起きたとき、New Suond Projectで、一度、白紙に戻します。白紙に戻した上で、パソコンに記憶されている改造前のプログラムを OpenSundFilesで開きます。これで、最初に戻れます。)

Open SoundProjec:開く

(パソコン内にダウンロードされたサウンドプログラムを呼び出して、展開します)

Save SoundProject:上書き保存

(プログラムを、元のプログラムに上書きします。)

Save SoundProject as~ : 名前をつけて保存

(プログラムを「~」という名前をつけて、別に保存します。

Import.MapFile

Export.MapFile

Import.SDFFile

(より高度な機能です。後で説明します。)

Exit:アプリの終了

2109092_20210910125901

Viewタブ:

サウンドプログラムに添付された「説明書」を読むことができます。

210909view

210909view2

ComPortタブ:

PR4からパソコンへの「USBポート」を指定します

210909_20210910130201

2109092_20210910130201

SoundTtestタブ:

模型のDCCデコーダから、サウンドを鳴らし、テストすることができます。 デコーダーと通信ができた後、使える機能です。

DecoderAdddessタブ:

デジトラックス製DCCデコーダーの アドレスを変更できます。デコーダーと通信ができた後、使える機能です。

210909_20210910130701

CV Editeタブ:

デジトラックス製DCCデコーダーの CV値を書き換えできます。デコーダーと通信ができた後、使える機能です

210909cv

IPLタブ:よくわかりません・・・

210909ipl

 

210909ipl2 

Help:ヘルプ

(文字通りのヘルプです)

210909_20210910131001

2109092_20210910131001

そのほかの重要表示

FlashDownloadSise:

デコーダーに入ってるサウンドデータの総量を表示してます。総量が上限を超えると、サウンドが一切発生しません。

SDN、SDH系のデコーダー  : 524,288バイト

SDXN、SDXH系のデコーダー :2,097,152バイト

210909_20210915200101

サウンドローダーで、プログラムをいじる

ダウンロードしたTractionTrolleyGnericは、つりかけモーダー音の電車ですが、そのサウンドは、アメリカを走った古い市電です。警笛、ドア開閉、モーター音を入れ替えて、日本の旧国電のサウンドプログラムに、仕立ててみます。練習用サウンドデータは、この下に置いてあります。

サウンドを置き換える

サウンドを指定し AssignSoundFileをクリック。

2109181

置き換えるサウンドを指定してください。

2109182

2109183

置き換えるサウンドは「練習用サウンドファイル」に置きました

2109184

次のファイル形式と上限を絶対に守ってください

SDN SDH系デコーダー

  WAVE形式 サンプルレート11,025ヘルツ 8ビット 上限131,072バイト(11秒 

  メモリーの総量は、524,228バイト(50秒ほど)

SDXN SDXH系デコーダー

  WAVE形式 サンプルレート11,025ヘルツ 8、12、16ビット 上限1,048,575バイト(95秒

  メモリーの総量は 2,097,152バイト(3分

練習用 サウンドファイル:

日本の旧国電ならこんな感じ、置き換え練習用サウンドデーターです。

 警笛:

ダウンロード - turikake_horn.wav

   ドア音

ダウンロード - turikake_doorclose.wav

 発進

ダウンロード - turikake_start.wav

 走行

ダウンロード - turikake_run.wav

 停止

ダウンロード - turikake_end.wav

サウンドを試聴する

2109184_20210918213201

①1回再生⇒PlaySound

②連続再生⇒PlayLoopSound

無用なサウンドを無音する方法(メモリー節約)

 もし サンプルを全部入れ替え、容量がオーバーしたら。日本の電車にはありえないサウンドを、無音に置き換えて、メモリーの総量を削減してみます。手順は次の通り。

2109185

2109186

限界と「できないこと」

①データ総量の上限

上限を超えると、サウンドが一切発生しません

SDN SDH系デコーダー 524,288バイト(50秒ほど

SDXN SDXH系デコーダー 2,097,152バイト(約3分ほど

②できないこと

サウンドローダーでは、発生するサウンドを置き換えられますが、サウンドを発生させるトリガー(引き金:ファンクションのONOFFやスピード操作など)を書き換えることができません。具体的には、ファンクション3で発生する警笛音を、ファンクション5に置き換えることも、できません。

トリガーを書き換えるには、後述するSPJヘルパーなど、もっと高度なアプリケーションが必要です。

10

ここまでの作業は、パソコン上だけで行えました。ですが、この先の作業は、デジ社のサウンドデコーダーやPR4を入手が必要です。入手には、時間がかかると思います。このブログを見て「やってみよう」と思う人に配慮して、ここで区切ります。もとより、デジ社のデコーダーを扱う店は、国内に数件であり、通販を使うにしても、現在、昨今のコロナ事情で、物流がよくありません。

次回は サウンドプログラムをデコーダーへ入れます。

 

 

 

2021年9月13日 (月)

サウンドプログラミング:概要

まず、プログラミングのお話から、以下、サウンド収録、編集、模型実体工作と進めます。

1:いじれるDCCサウンドデコーダーは 世界で3つ

プログラム可能なサウンドデコーダーは、世界に3つ。デジトラックス、Esu、Zimo、。

サウンドデコーダーなら、作っているメーカーは山とあります。でも、ほとんどの会社は、サウンドの中味(サウンドデータとプログラム)は、非公開です。どのメーカーも、サウンド付でデコーダーを売る、そこに商品価値を置いているためです。

デジトラックスについて、このあと、じっくり解説していきます。7年ぶりの再掲載です。

サウンド・ローダーとサウンドデポ

私は、7年前に、デジトラックスサウンドのプログラム解説を延々と記載していました。このブログの容量も、そろそろ限界。そこで、古いデジトラックスの記事を順次削除し、同じ内容で、現状にアップデートを図ろう思います。

デジ社の公式サイト。

210906

デジ社が用意したアプリ「サウンドローダー」

4

デジトラックスのサウンドデコーダーには、SLとDL(ともに北米大陸のもの)が、デフォルトで入っています。サウンドローダーを使うと、デフォルトを、このサウンドデポに用意された、サウンドプログラムに210905

書き換えが可能です。

しかし、サウンドデポにあるプログラムは、アメリカないしヨーロッパを走る車両だけ。日本の車両など一切なし。まあ舐められたもんですよ。ちゃんと市場調査してない。恐ろしいほどの「鉄模オタク市場」があるのに、ねぇ。

日本車のサウンドがほしければ、次の手順をとります。

デポにあるプログラムのうち、

7

使い勝手のよさそうなプログラムを選び、パソコンにダウンロード。

8

②これを、サウンドローダで読み込みます。

9

③読み込んだプログラムを、サウンドローダーで、サウンドだけ、日本車のサウンドに置換えます。

10

④置き換えたプログラムを、デコーダーにインストール。これで、日本車のサウンドデコーダー できあがり?

この手法には、問題があります。

デポにあるプログラムは、デポの車両の特性に合せたプログラムです。

トラム(市電)は、

8

とろとろ走ることを前提にした、サウンドプログラムです。

9

同じ電車でも、日本の通勤電車はを、もっと高速で走りますし、モーターだけでなくインバーターが音をたてます。つまり、サウンドを発生させるきっかけ=トリガーが、まったく異なります。通勤電車のサウンドファイルを作るのに、トラムのサウンドファイルの、サウンドのすげ換えでは、うまくいきません。

困ったことに、アメリカ大陸の鉄道には、電車がほとんどありません。デジ社のサウンドデポには、「電車」がほとんどありません。この古いトラムが2つ、ICE(ドイツ新幹線)とタリス(仏蘭独新幹線)が1つづつあるだけ。

6_20210909140701

おらぁ!半世紀前、世界で初めて高速鉄道を実用化した、日本に対する”リスペクト”なんて サラサラないんかっ!!!

デジトラック社にも、アメリカの鉄道模型人にも、「電車」なんて「概念がない」です。たぶん・・・

もっと高度なアプリが必要

必要なのは、単なるサウンドのすげ替えではなく、あるトリガー(発進、加速、ファンクションONOFFなど)で、このサウンドが鳴る、という「プログラム本体の書き換え」が可能な、もっと高度なアプリです。

2つありました。

1つはJMRI。デコーダープロ。1つは、フレッドミラー氏の「SPJヘルパー」。

SPJヘルパー

210906_spjh1

デジトラックスのサウンドデコーダー、そのトリガー(発生条件)まで、根本から組立直せるアプリです。

210906_spjh21

個人が作ったソフトなので、なかなかの”曲者(くせもの)”です。7年前までは、完成はおろか、ダウンロードさえうまくできないありさまでした。原因は、アプリが「日本語が読めないこと」でした。パソコンのOSの登録名に、日本語が入っていると、そこで止まります(笑)。

こういうソフトは、デジ社がつくるべき・・・なんでしょうけど、なにせ、サウンドについては、デジ社に全くやる気がないんです。

フレッド・ミラー氏 

SPJヘルパーを作った人。電子技術屋さん。デジトラ社のデコーダーのヒミツをしゃべっちゃった。会ったことないけど、私の御師匠様にあたる。サイトはこちら。

Esu(エズゥ日本人はドイツ語読みしますが、アメリカ人はイー・エス・ユーと言ってます)。

値が張りますが、DCサウンドの世界では、圧倒的に、こちらのデコーダーとプログラムがメジャーです。デスクトップ・ステイションさんには、日本車両のサウンドデーター「オープン・サウンドファイル」が、多数揃ってます。有志がESUのデコーダで使えるよう、プログラムしたものです。しかも、無償です。

【とっても重要】手っとり早くサウンド模型が欲しいなら、私のブログなど読んもムダです。値は張りますが、Esuのデコーダ(1万5千円)とLokSuondProgramaer(二万円)を買い揃え、こちらへGOです。

まあ、いずれ、こちらのプログラムについても 解剖してやる 解説したい と思います。現状は、先に手慣れたデジトラックスからおかたずけ。過去のページの整理削除が、最優先にします。でないと、ブログの容量が天井にあたるので。

Zimo(ジモ・ジィーモ)については、この会社。正直わかりません。

動画を見る限り、Esuと同じクオリティを持っているようです。Rocoというドイツの大手メーカーが、模型に入れてます。ですから、ガレージレベルの いいかげんな会社では、ない・・・と思いたいです。

ですが、この会社、数年前に「経営破綻」というニュースを聞きました。一口に、経営破綻といっても、いろいろなレベルがあります。日本の会社法でいう「破産」とか「特別清算」は、財産切り売りしてオワリ。これは、会社の死亡です。一方、アメリカでいう「チャプター・イレブン」、日本で言う「民事再生」は、「ちょっと待った!誰かお金貸してちょ・・・」みたいな(笑)。役員も辞めない。こんな軽症でも、裁判所に泣きつけば、「破綻」と言われます。さて、どっちなのか?

2:デジトラック社のサウンドシステムの特徴

特徴ですか?正直言って、安かろう。悪かろう。おバカっ。3拍子揃ってます(笑)加えて、なにより「会社のやる気」がホントに薄。以上です。

この10年間でやったことは、16ビット、収録時間3分の新デコーダーを出しただけ。サンプルレートは11025で変更なし。「デコーダーを安く抑えたんで、メモリーが足りないんです。ゴメンなさい」というわけ。でも、このレートでは、フランジ音もターボ音も無理なんですけどぉ・・・ライバル社は、ターボ音をキンキン響かせてますよぉ。

アメリカには、デジトラックスのユーザーグループがありますが、サウンドの関連の質問は、ないです。もはや、ユーザーさえ、デジトラックスのデコーダーを使ってない。そこからたどって、デジトラックスのサウンドをクリエートするグループもチェックしました。最新版が2020年の4月。1年半動いてない。

今、アメリカ市場を賑わすのは、Esu,サウンドトラックス、TCS。これらは、音量もクオリティもデジトラとは段違い。残念ながら、Esu以外は「弄り」ができない「完成品」です。

ですが、そもそも、サウンドプログラムを弄る、そんな”モノずきな趣味人”は、本家アメリカにも、極わずかしか存在せず、ごくわずかなクリエイターも、Esuしか使ってない。これが現実でしょう。

3:「馬鹿とハサミ」は・・・ 賢いデジトラのあしらい方

お馬鹿なデコーダーだけに、プログラムは比較的単純な構造。それと、鉄道模型のサウンドクオリティは、デコーダーだけで決まらない。それは、前々回に言いました。ホラ,言うでしょ「馬鹿とハサミは使い方しだい」と。このブログも、そのあたりに注目してくれれば、うれしいです。

その お馬鹿のあしらい方 デジトラックスデコーダーの扱いを 次回以降、連載していきます。

2021年9月12日 (日)

鉄道模型サウンド論:現実世界で 音はどこまで伝わるのか

「新製品レビュー」でも、「小手先の工作テク」でもない、自分で言ったらオシマイだけど、極めて硬派な鉄道模型論を続けますよ。私は、ナンチャラ村の閲覧回数ランキングに媚びて、チャラチャラする気はありません。炎上されても困るけど。

結論!

レイアウトや車両は、いかようにもスケールダウンができますが、サウンドとそれを伝播する物理空間は、スケールダウンできない。音をスケールダウンすれば、「イチ分のイチ」である私たちの耳では、聞こえない。もちろん、私たちが「○○分のイチ」になることもできない。矛盾はここにつきます。(うーん理系の目線だ。)

そして今回も、サウンドをめぐる大トラブル。

「爆音模型」トラブル 音は、現実世界で、どこまで伝わるのか?

一般に、模型から出るサウンドは、大きいほど評価されます。というより、どんな人でも、レンタル屋さんや運転会で、「お隣さんには負けたくない」と意地はあるでしょ。そんな競争心理を煽られて、みなさん、ついついボリュームアップ。見栄を張るわけです。それで、レイアウトのあっち側を走っているのに、模型サウンドが室内に響き渡る。

こんな模型は、「爆音模型」と称されます。

まあ、その存在感は圧倒的です。一方、丹精込めてウェザリングを施した自慢の模型は、なんだかとっても肩身が狭い。「なんか気分悪ーっ」。こんなモヤモヤした経験ありませんか?

HOゲージでは、現に起きているトラブルです。(人の気持ちは測りようがないので、あくまで推定です)。Nゲージでは、サウンド模型が極わずかなので、生じていないだけ。いずれ、サウンド模型が増えれば、あちこちのレンタル屋で、起きるでろうトラブルです。

検証、電車の通過音

現実の世界で、鉄道車両から出た音は、どこまで届いているのか。観察します。

 

Photo_20210912192901

模型工作の達人は、博物館に置かれた車両に、メジャーをてると聞きます(都市伝説でしょうけど).サウンド工作も同じ、現場に学べ。ライバルは、実音です。

というわけで、博物館ではなく、最寄駅で、電車の通過音を観察しました。ここで、距離を測るのに、巻き尺を使うわけにはいきませんが、ほぼ正確な距離を見分ける方法があります。

JRの車両は1両20m。10両編成で200m。

210908

ですから、1編成が収まるホームは、200m。

ホームの真ん真ん中(5両目と6両目の連結)に立てば、ここからホームの端まで、100mです。

2109081

走り出した電車が、

2109084

ホーム先端に届く(100M動く)までに

2109086

音はどれくらい減衰するか(あるいは、聞こえなくなってしまうのか)撮影しました。

 

Photo_20210912192601

人間の耳で聞きとれる音の、伝わる範囲は、電車の前後100m程度です。

模型が、レイアウトの反対に走り去ったらあと、模型からサウンドが聞えてるとしたら、模型のスケールを考慮すれば、とんでもなく非現実的です。でも、決して口に出してはいけません。ココロの中でつぶやきましょう

「それ 物理学的にありえねーよ」と。

ココロに、すこし余裕ができますよ。

それでも・・・これからは、模型サウンドを無視できないなぁ はぁ。

いつまでも、鉄道模型が「サウンドを無視」で、済むわけないですね。もし、チャンス(とお金)があれば、「サウンドでライバルを一歩出し抜きたい」とか、よからぬ妄想を持って,、当然です。人間ですから。

この10年間に、サウンドの垣根は、ずいぶん引き下がりました。資金があるならDCC。Esuのデコーダーなら、高音質のサウンドを立楽しめます。最大のネックだった、サウンドデーターは、こちらに豊富。資金がなければ、手を動かす。電子工作のウデと知識があれば、ブルートゥースで、サウンドデータを飛ばし、車載のスピーカーで再生する。これなら、線路電源はアナログを維持できて、停止中も発声可。両方なければ、KATOちゃんにお願いするしかないです。サウンドボックスの応用。HOのEF81には、サウンドボックスからデータをブルートゥースで模型に飛ばし、模型からサウンドを出るシステムがありましたね。いずれ、Nにも応用されるでしょう。

さて、これから何をするか・・・

回り道してました。原点回帰。「模型のおしゃべり」に戻ります。

ここまで3回は、”話のまくら”でした。模型本体ではなくて、サウンドで「つくる楽しみいっぱい」を綴ります。回り道していましが、ブログのタイトル「おしゃべり」に戻ります。

「つくる楽しみいっぱい」とは、さるNゲージメーカーのキャッチコピー。模型のボディ工作には「つくる楽しみ」あります。模型のサウンド工作にも「つくる楽しみ」いっぱいあります。サウンドを収録する楽しみ、サウンドを編集する楽しみ、サウンドをプログラムする楽しみ。もちろん、きれいなサウンドを出すには、模型本体への実体工作(スピーカーの取りつけ)も重要。美観を考えれば、できるだけデコーダーは隠したいですが・・・小さいNでは、苦しいですね。そこは「美声」で勝負。歌手や俳優業で食べられないなら、お笑い路線しゃべくり漫談も考えてます。

KATOから、サウンドカードを3000円で買ってしまったら、このオモシロさ、味わうことができません。

へっ・・・DCCが財布に優しいだって?

私のサウンド手法は、DCCを用いた方法です。「資金が安い」とか「「手軽な加工」、と言ったら、これは大ウソです。

私は、資金の問題を、「1つの模型に時間をつぎ込む」こと、で解決してます。デジタル化に要する部品、たとえば、サウンドデコーダーは、Nゲージの車両セットに匹敵する値段です。

私は、模型を「買わない・増やさない」戦術をとってます。話題の新製品がリリースされても、その模型、サウンドを入れることができるか、サウンドデーターを集めることができるか、サウンド化してオモシロイか。これが、私の「買う買わない」の基準です。過去の車両や、遠隔地の車両には、アンテナが立つことはありません。いっぽう、いつも御世話になる通勤電車には、どうしても、手が出てしまう。なにより、サウンドを集めやすいですら。

それで、コレクション中心だった以前より、年間の模型関連支出額は、総額として減少してます。

加工の困難と煩雑さは、まあ、その通り。・・・これは、開き直るしかりません。

困難で煩雑で、仕上がるまで時間がかかる、だから、新製品をポンポン買わないで済む。DCCは、結果として、財布にやさしいのです。

 

 

2021年9月 5日 (日)

鉄道模型サウンド論:リアルサウンドのガチ再生 不都合な真実

サウンド模型の究極形 リアルサウンドのガチ再生

そもそも模型とは、実物を小さく再現したモノです。そこでは、「どれほど、忠実に再現されているか」が、評価のモノサシです。これは、サウンドにおいても、同じこと。サウンド模型は、「実音を実車どおりに再生できたら」が理想です。デジタル技術の進展で、その気になれば、Nゲージでさえ、模型から実物のサウンドを再生できます。あとは、走行に連動してくれるように、プログラムすれば、「完璧な模型運転」が実現。ヤッター!。

しかしながら、ここに「不都合な真実」が浮かびます。

リアルサウンドのガチ再生 不都合な真実

DCCのサウンド・クリエイターは、サウンドプログラムをデコーダーに焼き付けた後、模型を静止させた状態で、プログラムをチェックします。こんな感じに。

 

実車から収録したサウンドを、Nゲージに載せ、走行に連動させて、発進加速サウンドを再生させたら・・・なんて想像すると、ワクワク感が止まりません。

けど、このサウンド模型をレイアウトで運転すると、困った事態に直面します.静止サウンドのワナ」です。

実車の実音は、加速サウンドが1分以上継続します。この加速時間、レイアウトの大きさに比べ、長すぎ。リアルサウンドの再現を優先すれば、その加速サウンド終わるまで、模型は、レイアウトをぐるぐると周回してしまいます。運転するほうは、ストレスいっぱい。

2109032

加速はまだいい。減速は話にならない。リアルな減速サウンドで、その再現を優先すれば、減速のために、またまた、模型はレイアウトをぐるぐる周回。減速サウンドが終るまで、模型は止まれない。

210903

つまり、「リアルサウンドのガチ再生」にこだわれば、レイアウトで運転になりません。

レイアウトは デフォルメされた空間だった。

なぜでしょう?

走行の舞台、Nレイアウトは、現実世界を縮小したミニュチア世界です。たとえば、1800×900(畳の一畳)という空間に、単純なエンドレスをレイアウトしたと仮定します。この空間に、無理なく収まる線路は、直線1000ミリ半径300ミリのエンドレス。と仮定します。エンドレス1周は 3884ミリ。

21902__20210905015701

Nゲージの縮尺1/150です。1周を実物換算すると、582mです。東京のJRで、最も短い駅間は、西日暮里~日暮里の500m。ここは、ぜひ訪れてください。こんな短い駅間では、電車は、加速らしい加速はできず、あっという間に、次のホームに滑りこみます。

Nレイアウトのオーナーさん、実物換算すれば、えらい短い駅間で、平然と加速し、制動をかけている。ということは、実物に換算すれば、恐ろい急加速をかけ、チカラの限り非常制動をかけている。もちろん、「スケール換算すれば」とういう前提ですが。

そんな運転で、不自然を感じないのは、レイアウトにストラクチャを置き、トンネルや鉄橋で、空間を演出し、情景で、空間をデフォルメしているからです。

空間がデフォルメされているのに、サウンドがガチ・リアルな実音再生。これでは、模型の挙動とサウンドで、つじつまが合いません。なかなか、一筋縄でいかないものです。

ならば、サウンドをデフォルメできないか?

プログラムを駆使し、模型のスピード=「スロットルの位置メモリ」に合わせ、ピッチ変調(サウンドのデフォルメ)できれば、この問題は解決します。それも、できるだけ自然に。

デジトラックスでは、無理。そもそも、そんな高度な処理ができるプログラムを 使ってません。

ESUのプログラミングですサウンドを細かく分解した上、プログラムで順序つけ、組立直し。そのプログラムをスピードに合わせて、走らせてます。ドイツ人、さすが芸が細かい。

 

だからまあ、ESUは、スピードをいじっても、サウンドが壊れかなない。

 

それころか、スピードを固定して、エンジンサウンドだけ自在に吹かす、なんて とんでもない芸ができる。

動画では、エンジン・スタートしか解説していないけど、プログラム全体像は、あきれるほど複雑。これ、会社が多数のプログラマーを抱えて、よってたかって作業するから、可能なのであって、個人が1人でやると、えらい時間を要します。

それと、このディーゼルエンジンのスタートは、まだシンプル。これが、MT54国鉄時代のモーターだったら?。あれ、綺麗な和音を奏でますね。こんな単純なものではありません。まして、最近の電車、モーターだけでなく、インバーターが転調や変調を合唱してますから。まあ、それがおもしろい・・・と言っちゃえば、それまで。それに萌えるのは、模型人の性です。

ウンドボックスでは、サウンド再生時間の途中で、模型が停止した場合、「サウンド側を強制終了する」プログラムを組んでいます。これはこれで、1つの答えです。

 

サウンドは、不自然にブツ切りになってしまいますが、電車が止まれないよりは、はるかに安全です。

但し、完璧な「スピード同調プログラム」ができた、としても、問題は残ります。指で操作して、「スケール加速度」を模型で再現するとなると、運転者は「指の微妙な操作」要します。

アナログでは、難しい。この点、DCCでは、指ではなく、スピードテーブルでコントロールできます。

悲痛 幸せNコレクターの転落 サウンドで失・楽園

サウンドは、書き物では伝わないので、比較動画で。もう7年前です。古い動画なのでサムネイルが出ません。クリックでどうぞ

 


サウンドのあるとなし。このサウンドは、ロングレール区間で生じる「レール転動音」です。同じ模型で、ここまで、模型のパフォーマンスが違います。自室で体感すると、もうーダメっ。

まるで、旧約聖書。ヘビが出てきて、リンゴをガブリ。ならぬ、Esuが出てきて、サウンドをガブリ。やっちゃいましたね。以来、ウデもないのにNを工作、デコーダぶちこみ手術をやってます。その陰で、多数の模型が帰らぬ姿に。あーあ。

幸せなNコレクター」は、かく、失楽園・・・したのでした。

2021年9月 1日 (水)

鉄道模型サウンド論:クオリティを決めるもの

しばらく お休みをいただきました。この後も 不定期な連載になりそうです。その代わり、今回の内容はとても骨太です。

音の質を決めるもの:大きな模型には、絶対にかなわない・・・

まず、クオリティ云々を論じる前に、これは、絶対的ルールです。サウンドは、量も質も、搭載スピーカーのサイズで決まります。つまり、サウンド模型は、NよりHO、HOよりO・・・大きな模型が、間違いなく有利です。いくら細かなテクニックで、策を弄しても、Nゲージに勝ち目はありません。

その理由は、イラストの通り。模型の車体の幅を超えるスピーカーは、載搭できないことに由来します。

スピーカーを「正円形」と仮定、比較すると、NゲージとHOゲージでは、それぞれの搭載スピーカーに、口径の差で2倍、面積では4倍の、差が出ます。

サウンドは、スピーカーの円形部分(コーン)が、前後にピストン運動し、空気を振動させることで、起こします。その空気を振動させるコーンの面積が、4倍も違うのですから、音量の差は絶望的に違います。どうあがいても、NゲージはHOゲージに追いつきません。

2108255-2

悪いことは言いません。

本気で鉄道模型サウンドを楽しみたいなら、プラ製でも中古でもいいから、HOゲージに転向しましょう。 

音の質を決めるもの:知っておくべき物理学

音(サウンド)とは?空気の薄い部分(疎)と濃い部分(密)が、交互に、波のように伝わる現象です。

21082512

音を単純なモデルにすると、イラストの通り。空気の層は、綺麗な波として描けます。高校数学のサイン関数です。

でも、現実の音は、さまざまな波長が、ごちゃまぜになって、複雑な波になっています。これはキハ110の警笛。数学でも、サイン関数を重ねると、複雑な波を打ちますが、物理の世界も同じです。

210831_

でも 音声編集ソフト「オーダシティ」で、どんなに複雑な波も、単純な波に分解して、分析できます。原理はフーリエ変換という、大学の数学らしいです。

210831__20210901014701

音には、反射、干渉、共鳴、物理学的にいろいろ性質がありますが、1つ覚えておくとしたら、この性質。

2108257

人間の耳では感知できないほど、高い波長を「超音波」といいます。「超音波」は、まっすぐ飛び、綺麗には跳ね返ってきます。コウモリは、暗い夜に超音波を飛ばして、餌のガを捉えます。ガに超音波を当てると、墜落擬態します。(あ 関係ない話ですね・・・

逆に、低い音は、まっすぐ飛ばず、同心円上に広がります。

ですから、模型(載せたスピーカー)から、離れると、周囲に広がる波長の長い低音(モーター音など)は聞きとれず、まっすぐ飛ぶ波長の短い中高音(警笛やアナウンス声)だけ、聞こえます。これは、音の物理学な性質に由来します。

もし、サウンド模型の動画を録るなら、なるべく「クローズアップ」がいい。でないと、低音のサウンドが録れません。小さなスピーカーから出た低音は、そもそも、遠くには飛んでくれないのです。

音の質を決めるもの:サウンドデコーダーの良し悪しは、ここで決まる

サウンド鉄道模型の界隈で、デコーダーの優劣をめぐる話題は、かならず出ます。デジトラックスには「安かろう・悪かろう」と揶揄され、ESUやZIMOには「ハイクオリティだけど高いねぇ」とか、評価されてます。

ここで デジトラとかESUとか、ブランド名ではなく、ちゃんとしたスペックを説明します。押さえるのは2点だけ。「ビット数」と「サンプリングレート」です。

デジタルサウンドの収録と再生

収録では、空気の波(音)をマイクで拾い、これを電気信号に変え、さらにデジタルデーター(数字)に書き換えて、記録します。

210831

再生では、記録したデジタルデーター(数字)を、電気信号に変えて、スピーカーで空気の波(音)を起こします。

210831_20210901015401

ポイントは、電気信号とデジタルデーター(数字)の間の、書き換えルールです。

210831_20210901015402

電気信号の波に、格子の枠を当てて、曲線に近い点を取ります。その点を、数字に置き換えます。これがデジタル化です。ストレートに言うと、「サイン曲線」を「折れ線グラフ」で置き換えかえる、というイメージです。

210831_20210901015501

格子の目に注目。縦線を「サンプリングレート」。1秒あたりに、どれくらいデーターとるか。カメラのシャッター回数みたいなものです。横線は「ビット数」。データーを何段に区分けるか、ということです。なお8ビットは8段でなく、2の8乗=256段階。16ビットは2の16乗=65536段階・・・だそうです。

2108252-2_20210904002601

サンプリングレート(シャッター回数)を限りなく増やし、ビット数(値の区分数)が限りなく上げれば、それは理想です。折れ線グラフは、限りなく、曲線に一致します。ただし、データーの分量が、限りなく増えてしまい、デコーダーの記憶容量に、収まりません。端的に言えば、メモリーが必要なので、その分、デコーダーの価格が上がる(笑)のです

2108254

逆に 安いデコーダー(デジトラックス製品)では、波長の短いサウンドが、再生できません。

2108253

 

デジトラックスの名誉ため、付け加えます。8ビットでレート11025のサウンド、低スペック。7千円。そんなデコーダーでも、これくらいのサウンドは出ますよ。もし、はるかに高性能なESUデコーダーを使って、これ以下のサウンドしか出ないなら、それは、別の問題があります。サウンド収録、編集、あるいは、次に説明するスピーカー工作です。

 

自分で収録したサウンドを、自分で編集、プログラムも自家製。ここまでやれば、サウンドボックスには負けない。

 

の質を決めるもの:スピーカー工作の良し悪し

ならば、優れたサウンドデコーダーさえ、ぶち込めば、NゲージだってZゲージだって、大きさに関係なく、よりリアルな鉄道模型サウンドが楽しめる?。まあ、デコーダーが優秀であることは、それに越したことはありませんが、満足できる音が再生できるか?といえば、実は、そうは問屋が卸しません。

裸のスピーカーを考えます。

2108255

スピーカーは、円形部分(コーン)が、電気信号に合わせて前後に運動し、空気を振動させることで、音を作りだしています。,コーンが前に動き「空気を押し出し」すれば、反対面では、「空気を引き下げ」ています。必然の結果として、スピーカーの反対側には、真逆の音(位相が反対と言うそうです)が、発生してします。この前後の波が混ざると、波がぺしゃんこにつぶれます。音が消えます。

高い音は、まっすぐ前に伝わりやすく、低い音は、周囲に広がりやすい。これは音の性質です。スピーカーの両面で、真逆の低音が生まれますが、その低音は、まっすぐ飛ぶことはなく、周囲に滲み出てしまい、そこで「低音同志の打消し」が起きます。これでは、低音は聞こえません。

そこでスピーカーには、背後に蓋があります。これを エンクロージャーといいます。

2108256_20210901020101

この蓋で、反対音を封じ込ているのです。この工作知識は、鉄道模型サウンドを楽しむために、非常に重要です

もし、「ちんちくりんなサウンド」を出している鉄道模型があるとしたら、その模型、外見では見えないけど、裸のスピーカーを放り込んだだけの、工作に欠陥のある模型かも、しれません。しかたないのです。鉄道模型雑誌では、ここまでは教えてくれません。

音の質を決めるもの エンクロージャーの容積

でも、それだけ話が終わりません。どんな蓋(エンクロージャ)でも、蓋さえすれば、低音が効く?といえば、そうでもないのです。エンクロージャは、深いほど(容積が大きいほど)、低音が出る傾向にあります。ある程度、エンクロージャーの容積がないと、音をつくりだすコーンの動きに、影響があります。

Photo_20210901021501

では「単純に、エンクロージャーの容積を大きくさえすば、いい音をつくれるか?」と問われると、そうでもないようですね。模型スピーカーの比較動画は、YOUTUBEに挙げられてます。

 

もちろん、蓋を含めたスピーカーが全体が模型収まることが、大前提です。ここでも、大きなHO模型は、絶対的に有利で、小さなNゲージ、は絶対的に不利です。

Nゲージ模型を分解すると一目瞭然ですが、サウンド化を想定していない、電気機関車やデイーゼル機関車は、模型の中身が、巨大なモーターとダイキャストの塊になってます。ここに、余裕のあるエンクロージャーの入る余地は、ほとんどありません。

爆音シュガーキュウブの正体見たり:人間の耳にはクセがあった

DCCサウンド界隈をざわつかせたアイテムに、「シュガーキュウブ(角砂糖)スピーカー」があります。Nにも収まるコンパクトサイズ、それでいて「爆音」いわれるほど、出力があります。たしかに、磁石は強力です。

その「爆音」の正体、人間の耳の錯覚?かもしれません。

音量についていえば、人間の耳は、中高音を敏感に音量を察知し、低音は、音量に鈍感・・・らしいのです。これ、等ラウドネス曲線といいます。

2108258 

等ラウドネス曲線とは、被験者が「同じ音量に聞こえる」と答えた音のサイズを、物理学的に測定したラインです。線をつなぐと「人間の耳が持つクセ」が、見えてきます。低音を「大きい音」と感じさせるには、音量(音圧)を高くしないとダメ。逆に 中高音を「大きい」と感じさせるには、さほど音圧と要しない。物理的最小の音量で、人間が一番敏感に反応してしまう音程(周波数)は、3千ヘルあたり・・・だそうです。だから、多くの人が、飛行機のキーンというジェット騒音を、とても不快に感じるのです。

シュガーキュウブ・スピーカーを搭載した Nゲージ動画

 

さすが・・・爆音シュガーキュウブと感じましたが、こちらが、実車の動画

 

実車と模型を比較すると「なんかキンキンしすぎ・・・てない」。そう感じませんか?

シュガーキューブから出しているサウンドは、キンキン響く中高音域のサウンドです。ラウドネス曲線によれば、この音域、「人間の耳」は敏感に感じ取ります。それで・・・「爆音スピーカー」という異名を奉られた?かもしれません。

コンパクトで切れのいい音を出すシュガーキュウブは、使い勝手がいい。シュガーキュウブを搭載したサウンド鉄模は、YOUTUBEにいくらでもアップされています。でも、そのサウンド、妙にキンキンしすぎていないか?。実車の動画とよーく「聞き比べ」したほうがよさそうです。「サウンドはでかけりゃいい」・・・てっ ものじゃありません。

スピーカーを外部設置すればいい、サウンドボックスの逆転発想

以上つらつら述べてきましたが、サイズの小さい模型には、サイズの小さいスピーカーしか載せられず、サイズの小さいスピーカーでは、満足できるサウンドの再生は、困難です。

鉄道玩具ならば、サウンドがちんちくりんでも 許容されるでしょう。けど、今や日本のNゲージは、HOゲージ凌駕するほど、精巧に作り込まれています。たとえDCCであっても、その精巧な模型から、おもちゃのような、ちんちくりんなサウンドが出たのでは、みんなドン引きです。精巧な見栄えに釣り合う、精巧なサウンドを。メーカーのみならず、ユーザーだって、望んでいます。

そこで、Nゲージを生業(なりわい)にしているKATOは、考えました。

「・・・ん だったら、スピーカーを模型に乗せなければ ええんでないかい?」

そう、音源になるスピーカーを、模型に搭載しなけえば、ネックになっている「スピーカーサイズ」は、どうとでも選択できます。スピーカーを大型すれば、再現できなかった低音域も、再生可能。その意味で、KATOサウンドボックスは、画期的なアイディア商品です。Nゲージサウンドの救世主でした。

ところが、こんどは別の壁が立ちふさがります。レイアウト(情景)とサウンドの矛盾です。

傍若無人なサウンドボックスが 舞台空間(レイアウト)を台無しする。

 Nゲージは、模型が小ささ故に、模型本体の魅力(迫力)は、HOゲージに劣ります。今から50年前、最初Nゲージが登場した際、その小ささを生かし「レイアウトを走らせてこそ、生きるゲージ」と、言われたものです。それから、半世紀たった現在でも、その「Nゲージとレイアウトの関係」は、変わりません。

たとえば、、鉄道模型イベントに足を運んだ人なら、一目瞭然わかることです。ショーケースに並んだNゲージは、HOゲージに比べ、なさけないほど小さい。イベント出展参加者なら、痛感していることです。どんなに精巧でも、Nゲージをベニア板の平原に並べていたのでは、やはり魅力半減と。Nゲージは、レイアウトで躍動して、初めて魅力を放つゲージです。

つまり、Nゲージにとって、舞台としてのレイアウトは、欠かせない相棒です。

さて、そのレイアウトに、KATOサウンドボックスを導入すると「視覚」と「聴覚」に大きな矛盾が起きること、お気づきですか?。その矛盾とは、イラストの通りです。

1

単純な話です。遠く離れた情景を模型が走行している、そんな情景を眺めているのに、サウンドが手元からガンガン鳴ったら、それ、視覚と聴覚がバラバラです。まして、模型と反対側からサウンドが聞こえていては・・・これ、耐えられますか?。

優れた絵画(写真)というものは、構図に遠近感を持たせ、2次元を、3次元であるかのごとく、浮かび上げています。レウアウトも、同じです。レイアウトといっても、そのサイズは、無限にとれるわけではありません。だから、優れたレイアウトは、ストラクチャーをうまく配置することで、遠近を演出しているのです。たとえば、RMMモデルスの付録の「背景写真」。これも、遠近感の演出アイテムですね。

さて、ストラクチャーを効果的配置して、レイアウトに「視覚の遠近感」を演出しました。実際に、鉄道模型を運転して、その模型が遠ざかる(近ずく)という、動きも演出しました。これで、視覚的には100点満点です。

でもここで、サウンドボックスを導入したら、そのサウンドには「遠近感」がついていません。音源方向も、固定されています。安直なサウンド(聴覚)が、遠近感(視覚)の努力を”ぶち壊し”。これこそ「レイアウトの蛇足」です。

レイアウト舞台空間を生かす サウンドを考えよう

Nゲージ愛好家が、デコーダーのスペックが高いとか、実音を忠実に再生しているとか、そんなサウンドクオリティ競争に乗るのは、ほんとに無益な戦いです。小さいNゲージに、勝ち目はありません。かといって、サウンドボックスのように、外部のスピーカーからガンガン音を鳴らしても、情景とサウンドが分裂してしまうだけですね。

結局、貧乏Nゲージ愛好家は、小さなサウンドで我慢するしかありません。くやしかったら・・・音が小さくても、レイアウト空間を生かすサウンド効果を、アタマで考える必要があります。

大型模型は、図体がでかいゆえに、おいそれとレイアウトを持てません。Youtubeをごらんなさい。大きな模型のDCCサウンド模型を。リアルなサウンドを奏でていますが、ほとんどがベニア平原で空転してるだけ(笑)じゃないですか。

たとえば、イラストのような、音のドップラー効果が出せたなら・・・ねぇ 情景とサウンドは、みごとに調和するのですが。

1_20210829143101

 

2021年3月 5日 (金)

【A4モジ】モバイル・モジュール・レイアウト

モジュール・レイアウトは、電車で持ち運び、運転会で披露することを、前提にしています。

収納の過程は、このとおり。

1分解前(右半分は未着工です

Dsc_0324_20210305232201

2樹木を取り外す

Dsc_0323_20210305232201

3築堤を取り外す

Dsc_0322_20210305231501

4ボードを畳む

Dsc_0316

5パックに格納

Dsc_0318

6袋に詰める。

Dsc_0319

展開すれば120センチのモジュールですが、バック2つに収まりました。

2103210

当然ですが、運転会への持ち出し、あるいは持ち運びの中途で、樹木や築堤に破損は生じるでしょう。でも、それは折込済。このモジュール、部品として各部が取り外せるます。だから、破損した部分だけを再工作すればよいのです。

また、何度も再工作を繰り返すことで、モジュール工作のウデを上げ、あるいは、新しい工作手法を試す上ことも可能です。資源も無駄にしません。

 

 

2021年2月23日 (火)

【A4モジ】100均樹木:誰も作らない?凍える落葉樹

今回の工作は、この「凍える落葉樹」

210207

・落葉樹特有の末広がりな枝ぶり。空気を纏ような発色。この色は何色でしょうか?。「薄いグレイ」それとも「あずき色」。見ての通り、枝というものは、日光が順光で当たると、既製品の「黒」や「こげ茶」には発色しません。もちろん、日光が逆光の場合や、夕刻に日が景げれば、発色はなく、枝は「黒」にしか見えません。

ジオラマ素材が充実した今日、「葉を落とした落葉樹」ぐらいあるだろう・・・と、思ってました。意外にも、既製品では存在しません。

どうやら、ジオラマの世界では「樹木には、緑の葉が生い茂るもんだ」というのが、常識らしいです。そのバージョンで、模型店には、花満開のサクラと真っ赤に紅葉したカエデ、その隣に雪を背負った針葉樹が、置いてあります。けれど、最初の画像にあるような「葉を落とし、凍えている落葉樹」は、ありません。

動画にも、「樹木の作成法」は、いくらでもアップされています。が

 

世界中の動画を探しても「葉を落とした落葉樹」は、見つかりません。

枝キットに、化学繊維を纏わせる手法が、淡い発色を出す点で、一番近い手法かもしれませんが、細かい枝は、再現できません。

そうなると、「え?ない?なければ作る!」しかありません。今回も「百均素材」で、リアルに挑戦します。正直言えば、お金がないのです。

用意するのは、ワンコイン(500円)と10本の指・・・持ってるでしょ?

【素材】

麻縄  瞬間接着剤 たけひご(芯材)絵の具・・・ 

【手順】

①:麻縄を10センチに切って。これが「大枝」

②:1/3ぐらいの点に、「ほずれ防止」の瞬間接着剤を滴下。

Dsc_0293_20210215192601

③:縄は、3つの繊維の「撚り込み」で、1本のひもにしてあります。「撚り」をばらして、中枝3つを分岐。

Dsc_0303

 (繊維がほどけたら、瞬間接着剤を1滴。その後、ほどけた繊維を撚り直します。接着材がにじみでるくらい、ぎゅっと撚直す。30秒で固まり、引き締まった枝になります。

Dsc_0304

④:分岐した3つの中枝の、ピンセンットの先端でほぐす、あるいは、指先で繊維を裂くかして、細かな繊維で、小枝をつくります。

Dsc_0299

いろいろ 試行錯誤することは、楽しいですよ。(しかも、お金はかからない)

Dsc_0280_20210215213101

➄ハードパステルで、小枝部分を着色(汚し)ます。

Dsc_0300

何本かまとめると、樹木らしくなる。

Dsc_0302

➄:芯材として「たけひご」を用意。1つのタケヒゴの周囲に、8~10本の大枝を木工ボンドで張り付け。

Dsc_0296_20210215212201

⑥:幹を着色します。(「グレイ」にします。)

⑦:レイアウト配置。

210221

 途中までは、上手く進めていたのですが、レイアウトの置いて、「うーん?」なんか違う?。 枝がボサボサすぎた?発色が明るすぎた?(サクラ満開みたい?)

 2102072_20210207000201

 実物も 「サクラ満開」みたいに見えなくもない。これは、太陽光線のイタズラですね。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2021年2月 6日 (土)

【雑談】プログラミング教育と鉄道模型趣味の衰退と・・・

まずは、Roco(ドイツ・オーストリア)の 鉄道模型動画からどうぞ・・・

 

昨年のニュルンベルクのメッセで、デモンストレーションしていたモデルです。本社の公式サイトから。

(参考までに、日本のJR東も、似たような事業車を導入したようです。電化が行き届いた線路上で、架線に引っかからないように、アームを伸ばせるのか?かなり心配です

買う、買わないを別にして、日本と欧州、メーカーの模型に対する姿勢の違い、見えてきませんか?日本のメーカーは、つまるといころ「ディテール」しか売りにできない、のかなあと。まあ、これは愛好家にも、あてはまる傾向です。

ディテールも重要だけど、鉄道模型がプラモがじゃないのは「動かせる」ことにある。本質を忘れちゃ困る。もちろん、令和の今動かせるのは、車輪だけじゃないってこと。(サウンドも、広義にとらえれば「動き」の一つ。)

「見てくれはいいけど、動きが貧困」それが、日本の鉄道模型の弱点です。子供も大人も、「おーっ」と唸らせるような、動きのある模型。メーカーに期待・・・じゃ、いけません。

師、曰く「櫂より始めよ」と。

小学生に「プグラミング教育」・・・始まる

さて 本題。

小学校で「プログラミング教育」なる授業が始まる。こ存じかと思います。それに先立ち、小学生向け「プログラミング塾」なる「稽古事」もあるようですね。新聞の折り込み広告に、挟まれてました。小学生相手ですが、最終的に「ロボットカーを自動制御してみよう」ぐらいのレベルを目的にしています。

現実に、簡単なプログラム言語(アルデュイーノとか)で、ロボットカーを動かす。そんな商品が、アマゾンで売っています。

 

 

ログラミング教育を受ける小学生、みんながみんな、プログラムに長けて制御技術を駆使する、なんてことはありせん。それでも、好きな子は、この分野に「とことんはまる」はずです。彼らは、長じて日本の工業技術の底辺を支えることになります。

さて、鉄道模型愛好家として、一言。とっても残念です。そう思いませんか?

そう、プログラム教育のネタ。「鉄道車両」じゃなくて、「カー」であり「ロボット」なんですよ。これで、「鉄道模型好き」になるはずの、技術者の卵たちは、自動車やロボットに流れる。これは由々しき事態でしょ。

もちろん、制御を学ぶ上では、自由自在に操作できる「自動車」や、手足を動かす「ロボット」は、有利です。鉄道は、線路の上しか走れないし、残念ながら、鉄道車両に手足はありません(笑)

それにしても・・・「鉄道模型」をネタにプログラミングを学ぶ、みたいな、「模型」と「教材」が、あってしかるべきですねぇ。ジオラマ甲子園もいいんだけどね。この国は、かつて「電子立国」と呼ばれていたんですよ。

そうでもしないと、やがて、古臭い鉄道模型は小学生にそっぽ向かることになりますよ。ねえ、KATOさん 自覚している?「趣味の王様」なんて、ふんぞり返っていると、椅子ごとひっくり返っちゃうよ。

え ネタ?・・・ですか? 
探せば、いくらでもあるんですがねぇ。日本のモデラーは想像力が足りないんですぅ。

 

スマホにアプリを入れて、声をプログラム命令に変換。ブルートゥースで飛ばす。

 

動画では、動かすモノが、サンドバギー(自動車)ですが・・・、「DE10」で「声を使い」コキの入換を遊ぶ。原理的には、できるはずですよね。・・・妄想ですか?これ。成功すれば面白いはず。

 

最大のネックは、音声入力スマホアプリに「日本語版」が必要。そこまでつくるのは、さすがに無理ですね。もの好きな誰か、編み出すの待ちます。それでも、遠いミライではありません。英語でできるのですから。

こちら、アラフィーのいい大人。アルデュイーノ(マイコン)始める

そんなわけで、プログラム制御を、いろいろ実験中かつ勉強中。50の手習い(笑)このアルデュイーノ、元来、子供向けの教育マイコンなので、決して難しいわけじゃない。

当方、「マイコンを学ぶ」のが目的ではない。マイコンは手段にすぎない。完璧も洗練も目指さない。マイコンの「難しくない範囲」「わかる範囲」内で、鉄模やレイアウトに応用する、つもりでいる。

道路信号、発光スケッチ(押しボタン式)

 

LEDをチカチカ点滅させること(通称「Lチカ」)は、マイコンの「はじめの一歩」ですが、これだけでも、道路交通信号の制御ができちゃいました。「押しボタン」信号。ジオラマへの実装は、これからですが、制御は合格です。

サーボモータ。スローな制御。

 

ふり幅(角度)、振りスピード、数字を入れれば、どうとでも設定可能でした。(あっけないほど。)

サーボモーターは、ポイントマシンから遮断機まで、レイアウトのさまざまなアイテムに応用できます。ポイントマシンに代用すれば、リアルなポイントの動き「スロー・アクション」が再現可能です。少なくとも、あの「ペチン・ペチン」という無粋な騒音から、解放されます。

モーター本体は400円。1コイン未満。制御するマイコンは、千円プラス(3コイン)から。テープLEDより、はるかに「使えるアイテム」じゃないかな?

こんなに簡単で安上がりなら、メーカーの販売する制御システムなんか、バカバカしくて買えないわな。なんで、メーカーは、古式ゆかしい「ソレノイド」に執着するんだろ?

でもまあ、Lチカやって面白がっているレベルでは、成果を得る前に、先に人生が終了します(笑)。それでもまあ「倒れるなら、せめて前向きに倒れたい(坂本龍馬)」ものです。

え、完全に「鉄道模型としての矩」を超えるじゃないか?。いえ、いつまでも「昭和の模型制御」にはまっているから、日本の模型は衰退してるのじゃなくて?。

2020年10月 2日 (金)

【A4モジ】100均のレイアウト素材・・・大当たり!

100円ショップのレイアウト素材

Dsc_0246_20201001130701

レイアウト素材といえば、ノッホ・ウッドランド、最近ではミニ・ネイチャーといった海外メーカーの輸入品を使う?。それは、思い込みにぎません。

201002_20201002200601

この枯草は、100円ショップ「キャンドウ」に売っていた「麻縄」を、

20110023

5ミリにみじん切りにしたもの。

したごしらえが、ホントに馬鹿みたいな作業です。が、手間を惜しむから、作製コストが上がるんです。資金がなければ、手(時間)を使う。鉄道模型趣味とは、そういうものです。

えっ?「コロナ不景気が来て、もうすぐ模型が買えなくなる?」とか。ちょっと考えましょう。私たちが楽しんでいるのは、「模型購入趣味」ではなく、「鉄道模型趣味」なのですよ

Dsc_0234_20201002202801

グラスジェネレータで散布しました。枯れ草なので、塗装はしていません。材料費は、当然110円(税込)です。(まあ、道具のジェネレータが1万円弱したのではありますが、便利な道具を買った以上は、徹底して「使い倒す!」

Dsc_0235_20201001162001

参考までに、ノッホの素材は、1パック 1500円弱。2つで3000円

Dsc_0231_20201001161601

↑ ノッホ製 枯れ草はら 均一で繊細です。

Dsc_0246_20201001161701

↑ 100均素材(麻縄のみじん切り)の草はら。いくぶん太さがあります。若干不揃いでキレイな植生ではありませんが、「そこが自然味わい」というもの。きれいに屹立させるだけが能じゃありません。

2010027

一度積雪を食らうと、枯れ草は雑多な方向に倒れ、ボサボサになるものです。

 

100均 樅木(もみのき)進化中

ちらは、前々回に紹介した 100均素材でつくる樅木(もみのき)。10本ほど量産して林を作りました。

00080002

葉に使う「フェイクファー・ヤーン」。染色(塗装)すると繊維が固まり、色が選択できない弱点がありました。染色はできませんが、「汚し」はできました。

つまり、緑のパステル(300円)を

2010024

繊維にこすりつけるだけ。

Dsc_0245

着色なし(右)、着色後

 

「安易に買わない姿勢」だから身につく自然観察力

「木の幹は茶色」。これは、私の安直な思い込みでした

201002

 

実物の針葉樹の樹皮は「グレイ」でした。具体的手法は、黒ないしこげ茶を下地に、ドライブラシでグレイを入れる。そんなところ。

201002_20201002173401

実車(キハE120)と比較して、車高の2倍ぐらい位置に枝の下端が来る。そんな枝ぶりが理想。樹木本体の高さは、樹齢にもよる。鉄道車両が20m。だから、模型の長さに合わせれば、20mの実樹の1/150スケールが正確に再現できます。

いずれにせよ「安易に既製品を買わない」。そうすることで「資金を使わず」かつ「目(観察眼)と指先(工作力)」を鍛えられる。もちろん、時間のゆとりがあることが前提だけど。

201002_20201002182101

でも こんな真似は・・・不景気の元凶かも(笑)

ただし、みんながみんな、こんなことやってたら、不景気で、模型店と模型メーカーがバタバタ倒れますね(笑)だから、こんな真似はしないで。

 

 

 

 

 

 

 

 

 

 

2020年9月23日 (水)

【A4モジ】カーブ築堤とニッポンのくさはら

Nゲージは、実物を1/150スケールに縮小したものです。レイアウトには、小さな模型を少しでも大きくみせる、工夫が欠かせません。

例えば、ボードの設置を、目線の高さに上げること。これだけで、フロアに展開するよりも、何倍も模型が生きて見えます。ボード上の線路配置なら、ボード面に線路を張り付けるより、築堤や高架上を走らせること。つまり、線路をストラクチャー群に埋没させない、ということです。埋没してしまえば、レイアウトの景観は、上からの覗くような目線にならざるをえません。これでは、小さなNゲージを大きく見せることは、無理です。こういうレイアウト、たとえ、施工面で「作りこみがスバラシい」と評されても、私は、設計上の疑問符をつけます。

カーブ築堤をつくる

00060001

Tomixからは、55㎜の築堤パーツが発売されています。ただし「直線」だけ。曲線は、箱がかさばるから、出さない?(笑)。まあ、そんなもの、メーカー完成品なんか買うより、自作したほうが安上がりです。

(今回の築堤は、15㎜。高くありません。これは、モジュール・レイアウトの「接続規約」があるためです。)

   モジュール全体

200920

  この赤枠部分の「カーブ築堤」です。

200920_20200921122701

15㎜程度なので、5㎜のスタイロフォーム板から切り出し、

Dsc_0203

3枚重ねて、築堤としました。

Dsc_0204

角ばったサイドを、カッターで整え、

Dsc_0205

紙粘土で整形。マヨネーズみたいですが、ホイップ紙粘土。必要分だけ使える便利な素材。

Dsc_0206

アクリルペイントで、下地塗り。お徳用巨大サイズ(900円)ですが、中味は いわゆる絵具です。地面は、露出する部分はなく、草で覆われます。タミヤ「情景テクスチャーペイント」とか、専用素材は多々ありますけど、高い材料を使っても、全く効用がありません。(雑誌は、広告を載せる都合で、「プロはこれを使う」なんて 言いますけどね。)

Dsc_0236

下草(スタティック・グラス)

地表現です。まず「下草」=スタッティク・グラス。欧米のモデラーはこう言ってます。グーグル翻訳は「静的な草」。日本語訳は「下草」でいいでしょう。10年前なら「コースターフ」を撒いて「草地」としました。これが標準技法でした。けど、令和の御代では、グラスジェネレータで草を立たせる。工作技法も、進化させなきゃいけません。

グラスジェネレーター。元祖ノッホなら2万円。ですが、PECOなどの類似品なら1万円。中華製の類似品なら6千円。自作すれば2千円程度。高いモノから安モノまで、そろってます。でもなぜか、日本製が出てこない。不思議。DCCみたい(笑)

詳しくは こちらのページを参照

Dsc_0234

晩秋から初冬。積雪前の「ニッポンのくさはら」。こんなカラーです。

200922

草素材とブレンド比は、こちら。

Dsc_0235

効果は絶大です。「お・・・立ってる」でしょ!デジカメで接写すると、決定的な違いがわかるはず。

Dsc_0231

グラスジェネレーター。え 高いですか?。1つだけ、車両セットをスルーすれば、簡単にひねり出せる値段です。

余談ですが・・・今年2月号のRMモデルスの表紙。情景モデラーをリードすべき雑誌が、

191231_rmm_20200922124201

あらあら・・・。「10年前の工作技法」のまんま。こともあろうに、雑誌の顔、表紙です。やらかしてしまいましたね。RMM編集部。

上草(トール・グラス)

200923

日本の草は、丈が高い。これは、河原でも線路際でも、実際に足を踏み入れれば一目瞭然です。ススキの群落は、草丈1ⅿを超えます。この草丈、鉄道車両と並べると、台車部分を超えて、窓枠の下まで隠してしまう。これが「ニッポンのくさはら」の現実です。

200920_20200922023101

KATOのくさはら素材は、丈が2㎜です。冷涼なスイスの牧草地を再現するなら、それでいいでしょう。けど、高温多湿、ニッポンのススキ原を再現するには、たとえ色合いが良くても、決定的に高さ不足です。まして、コースターフのバラマキでは、話にならない。そんな手法がまかり通るのは、ニッポンのモデラー、レイアウトの教科書を見て、「鉄道模型のお約束ごと」には忠実だけど、「現実の世界」をまったく見てないということ、かもしれません。

00060001

15mm以上の高さの草素材は、グラスジェネレータでも、立たせるのは容易ではありません。ここは、「麻縄グラス」の出番です。植樹の手間はかかりますが、100円ショップの麻縄で十分。コスト110円ですよ。詳しくはこちらのページを見て

 

 

 

 

2020年9月20日 (日)

【A4モジ】樹木:100均素材で樅木(もみのき)

「レイアウトの樹木」の話題。

以前、ニッポンのくさはらは、KATOじゃなくて百均の麻縄 という記事を投稿しました。今回も、ニッポンの樅木(もみのき)は、KATOじゃなくて百均素材、という記事です。

Dsc_0208

ちょっと手間はかかります。量産はできません。が、そこそこ、リアリティのある樹木に仕上がります。

【使い方】

この樹木は、こんなシュチエションで有効です。

たとえば、モジュール・レイアウトの線路際の針葉樹。これは、遠近法絵画の「近」の位置に存在します。本数は少なくとも、ジロジロ観察される部分です。当然、この樹木は「量より質」。そこそこのリアリティが求められます。

質を求めるなら、一本千円の完成品樹木を使う。それも手です。けど、5本植えて5千円では・・・ねぇ。ブルジョワですよ。貧乏モデラー いや 輝けるプロレタリアートとしては、隣国の人民のつくった百均素材に、頼るしかありません。

一方、ホームレイアウト上の、遠近法の「遠」にあたる山岳山林には、この樹木はそぐいません。その山岳樹木は、とにかく「質より量」ですから。爪楊枝にスポンジ素材で、とにかく「数を稼ぐ」のがベターです。

【素材】

Dsc_0215

0.7㎜ 園芸用の針金(100円ショップ セリア)110円

Dsc_0216

工芸用竹ひご 30㎝(セリア)110円

Dsc_0213

フェイクヤーン・チョコブラウン 100円ショップキャンドゥ 手芸コーナ。

Dsc_0209

たしかに。カラーは「チョコ・ブラウン」ですが、

Dsc_0208

光の加減で「くすんだ深緑」に見える,微妙な色合いです。秋冬のくすんだ針葉樹には、狙い通りの好都合。草や葉として、すごい素材でした。それが、ノッホでもウッドランドでもなく、100円ショップのキャンドゥ。手芸コーナーに転がっているのですからねぇ、燈台下暗しです。

瞬間接着剤:セメダイン3ℊ(セリア)110円 アクリル絵の具:ブラウン 110円

Dsc_0211_20200920205702

以上、トータルの材料費550円。10本作れば、単価55円。

【工具】

Dsc_0219

ピンバイス、ワイヤーブラシ(または、目の粗いやすりとか)、ハンディなのこぎり

【手順】

樅木(もみのき)は、成木で40mクラスに伸びるそうです。でも、そのままスケールダウンしたら、見栄えのバランスが悪い。よって、20mの若木として作成します。ところで、実在の20mを150のイチにスケールダウンすると・・・換算に困りますか?

Dsc_0220

これ、いたって簡単です。実車の鉄道車両は20mですね。150ぶんのイチのNゲージは、何センチ?。それです。実在の20mを150分のイチに換算した長さですよ。

①30センチの竹ひごを、13~15センチに切り出し。

②竹ひごを、やすり等で表面を傷つけ。(塗装ムラが入ることで、幹が自然に仕上がります。)

Dsc_0221

③先端と、側面に8~10のの枝穴あけ。

Dsc_0225

⑤ブラウンに塗装。筆ぬりで十分です。

Dsc_0222

 ⑥ワイヤーを切り出し。瞬間接着剤で先端にヤーンを接着。しっかり固定まで待つ。

Dsc_0223

⑦ヤーンを巻きつけ。ねじれないように。巻き付けの後端を瞬間接着剤で固定。枝の完成。(まるでフライフィッッシングの毛針ですね)

⑧幹の穴に、枝を差し込んで、

Dsc_0210_20200920204401

樹木完成。料費500円(税抜き)。それを考えたら、これ合格点でしょ。

【問題】・・・染色ができなかった

今回は、秋冬モノの「さえない樹木」を想定し、葉は「チョコ・ブラウン」のカラーにしました。春夏モノの樹木は、葉に冴えたグリーンを用いないと、自然ではありまんせん。その場合、素材のヤーンを染色できればよいですが、染色すると繊維が固まり、劣化します。

ヤーンに「緑」があればいいのすが、100円ショップキャンドウには、見当たりませんでした。本格的な手芸品専門店、たとえば、ユザワヤとか、探してみてょうと思います。

【 参考】

海外のモデラーが、どうやって「カスタム樹木」を作るっているか?。動画を張り付けておきます。RMモデルスを買うくらいなら、こっちの動画が役立ちますよ。はるかに。それに、雑誌は有料ですが、視聴は無料です。

 

 

 

爪楊枝にスポンジくっつけて、はい樹木、そんな発想が恥ずかしくなるような・・・

もちろん、レイアウト作成上、樹木は本数が求められます。ポイントは、手軽に入手して、数を確保すること。だからまあ、Nレイアウトなんか、爪楊枝にスポンジ素材の貼り付けで、十分じゃん。それはそれで、合理的な考え方なんですけどねぇ。

Dsc_0208

格安の材料費で1ランク上の「カスタム針葉樹」。いかが?

 

2020年8月23日 (日)

DCC機器の経年劣化事故

久々のDCC工作が「事故報告」とは。それも「おしゃべり」以前のつまずき。

まあ、DCCをめぐる記事は、成功事例と美談、赫々たる成果報告しかない。1つや2つ「泥まみれの失敗談」があってよい。(と私は思う。)。以前、簡単というニュアンスで「12歳でもできる」と説いたが、どうやら、天罰が下ったか?(笑)まあ、笑わば笑え。減るものではないし。

マルティプル・タイタンパー(通称マルタイ)。GM製のNゲージ。

Dsc_0101_20200823195201

この工作中に、原因不明のデコーダー焼損が起きた(実損1万円)。原因と検証の過程で、さらに2枚のデコーダー(計1万5千)を焼損。原因は、制御機器の経年劣化らしく、この取り換えに3万円。1時間の間に、5万円を焼く。まったく、大人の趣味は、お金がかかる。

故障機器は KATO D101(現行品の1世代前)デジトラックス社製品のライセンス生産品。購入は2009年。11年経過済。

 

Img_1742  

*****************

 

一晩寝て、冷静に事故を「トラブル・シューティング」してみた。

事故は、模型改造の途上で起きた。だからまず、疑うべきは自らの「改造ミス」。次にデコーダーの不良。最後にコントロール機器の故障。確率としては 「改造ミス」>「デコーダー不良」>「制御機器故障」。

1:改造ミス

DCC改造は「自己責任」でやるもの。事故やミスも多い。ミスのたびに「回避する知恵」が積みあがる。これは、財産だと思う。

たとえば、アナログによる試験走行。デコーダーを直接結線せず、間に、8ピンコネクターをかませる。コネクターに「アナログ・ピン」を差し込み、即席で、アナログ回路を作る。これを、アナログコントローラで運転すればよい。仮に、工作上配線ミスや断線があれば、ショートして、アナログ運転すらできない。そこでミスが発覚すれば、高価なDCCデコーダーは損傷しない。

アナログ走行は、十分行った。30分3mオーバルコースを連続周回済。・・・「自分の工作」に問題なし。

2:デコーダー不良

次に、デコーダーの不良。購入直後なら、可能性が高い。この場合、交換ができる。(ただし、交換手数料千円程度と日米間の行き来に時間を要する)。

今回、この可能性はない。使用したデコーダーは、他の車両からの流用品だった。ほかでは、正常に作動した実績がある。デコーダーの経年劣化はあるかもしれないが、初期不良ではない。

3:DCC機器の故障

最後に「制御機器の故障」。確率は少ない。けど、思い当たるフシは、4つ。

① 7セグ表示「Loco」が出ない。数字「10」が点灯して、消えない

② 同時にケーブルでつないだ機器「DT402」の「液晶表示」が不安定

③ 内部から かすかに聞こえた「異音」

④ 購入後12年目に突入していた「経年劣化」

少なくとも、「異音」がした段階で、気が付くべき。電源の再投入で、正常に戻ったけど、これが仇。いわゆる「正常性バイアス]というもの。うすうす、機器の異常を察知しながら、正常デコーダーを次々投入して、損害は拡大。

購入後12年目。DCCコントローラーの寿命なんて、聞いたことがない。仮に、家電製品とするなら、寿命としては、平均値。ただし、家電ほど使用頻度はない。精密機器としてはどうか?この機器。出力が、電圧だけじゃなく、電気信号もある。パソコンとは言わないけど、電圧と電流しか出さない、アナログ式コントラーラーのより、はるかに複雑なシロモノではある。精密機器なら、壊れて当然の年数。

深刻なのは、DCC機器制の本体が壊れるだけでなく、模型上のデコーダーを破壊して、被害を大きくしたこと。アナログでは、ありえない。アナログコントローラが壊れたら、模型は動かないが、模型にはデコーダーがなく、模型が未来永劫動かなくなる、ことはない。

10年経過したら、壊れる前に、DCC機器は「買い替え」。これは「新しい鉄則」かもしれない。

 

そこまでして DCC? ・・・根源的に問われる姿勢?

「う~ン。アホですねぇ、これはもう」。コスパとか、リスクとリターンとか、まるでなっちゃない。


おとなしく「従来の鉄道模型の技術枠で、メーカーさんの完成品を礼賛」してれば、ストレスはない。だいたい、趣味でストレスを貯めるのは、どうかしているのだけど。趣味で死ぬ人もいるわけで、ストレスぐらいでガタガタ言わないのっ。これが、昭和生まれの矜持です。

事故の原因になった「マルチプル・タイタンパー(通称マルタイ)」とは、こういう車両です。

 

適当にウェザリングすれば、ヤードの飾りには、もってこいのアイテム。だけど、それは「世を忍ぶ仮の姿」。働くマルタイは、動画のとおり。再現するなら「働くマルタイ」でしょ。

「働くマルタイ」に必要なアイテムは2つ。漆黒にきらめくライト。静寂をつんざく作業音と機械音です。模型でも、室内灯は点灯しますが、UFOのごとき煌めきは再現できません。むしろ、室内は闇、ボディのライト類が点々としているほうが、理想に近い。

点灯制御も欠かせない。点灯の選択ができること。アナログではできません。単純だけど「大きな違い」。

 

点滅するライトも、アクセントとして必須。作業モードでは、サイドに赤の点滅。

Dsc_0105_20200823195301

 

サウンドですが、「モーターの唸りが作業音みたいだ…」なんて、甘いこと言ってるから、鉄道模型,先にテクノロジーが進まない。「みたい」じゃなくて、「ほんもの」を模型から出す。出せる技術があります。惰眠を貪るのは、メーカ、業界、そしてモデラー。三位一体でアナログの大樹にしがみついてんだもの。これじゃ、いくらなんでも、衰退するわな。

”魔改造マルタイ”は3代目に

マルタイ改造は3代目。1代目は、未完成のまま廃車。2代目は、走行・点灯・サウンドの3拍子が整いました。動画は「2代目」です。

 

それでも、鉄道模型としては「欠陥品」。平坦な線路を走行できても、ポイント通過ができない。理由は、「車体の重量の軽さ」と「重心の高さ」。車輪が線路から浮き、離線することで、給電に支障発生。いくらDCCでも、電気を絶たれると、なすすべなし。

ハイテクを追っかけて、ぶち当たった壁が、根本的な模型設計とは。・・・参りました。

Dsc_0107_20200823195301

DCC改造にあたり、車体には、デコーダーとそこからつなぐ配線とコネクター、あらたに詰め込む必要があり、そのスペースどりは、きつい。加えて、ウエイトを入れる。どだい無理な注文なんですよ。詰め込みがすぎれば、こんどはボディが収まらない とか・・・。

で、やっと配線の修正に目途ついて、デコーダーの焼損事故。アナログでは、正常走行してました。配線工作に難がある、とはいえません。

でも 結果は結果。設計からやり直し かも?

さあ 4代目 行ってみようー?! 

と 元気が戻る日まで、しばらく「DCC」は お休み(アタマ冷やします。)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2020年3月 5日 (木)

【雑談】鉄模のミライ・・・模型カスタマイズの極み

一見するとごく普通のNゲージ運転会の風景ですが、

Photo_20200305121001

ほかと一味違うのは、模型に車載した「サウンド祭り・運転会」になっていること。

 /p>

見ての通り、ディーゼル車にサウンド(車載)が載ると、模型は化けます。ちまちましたディテイルアップなど、簡単に吹っ飛ぶほど、強力なインパクトです。とくに「アイドリング~走り出し」に注目。おしゃれに言えば、動きとサウンドの”マリアージュ”ですか?(もちろん アフレコ、なんて工作はしてません。あれは「動画工作」です。)

フレンチにワイン、そばに日本酒。なくてもおいしいけど、食と酒はつきものです。大人なら、そうやって食を楽しみます。鉄道模型とサウンドも同じ。酒(サウンド)の良し悪しはあるとしても、そもそも、サウンドを欠く模型では、ワインのないフレンチみたいなもの。たぶん、10年後のモデラーは、そう言うでしょう。

さらに言うと、サウンド弄りは”究極のカスタマイズ”。運転手の号令、駅アナ、車内放送。これらは、車外に聞こえるはずがないサウンドですが、これをアンリアルと否定することなかれ。案外面白いです。模型ゴコロをくすぐられませんか?

残念ながら、国内主要メーカーは、車載サウンドに興味ないようで、完成品を待っていたら、いつになるかわかりません。

工作趣味なんて、最近ではコレクター趣味派に押されて、鉄模世界では、すっかり肩身の狭くなりました。が、メーカーが惰眠を貪るサウンド分野は、自ら手を動かさないと、なにも始まりません。つまり、サウンド工作では、先に列に並んだ者でも、大枚をはたいた者でもなく「手を動かしたもの」が、勝ちます。

もちろん、図面はありません、不慣れな電子工作、パソコンでのサウンド編集。いずれも茨の道です。

それでまあ、茨の道に突っ込んで、鉄模世界の次のヤマ、デジタル山脈サウンド連峰の初登頂を目指すなら、その「山登りのシェルパ」として、お手伝いします。

エルムDCC交流会 URL:http://elmdcc.hatenablog.com/

経験や実年齢は一切問いません。が、精神年齢は”R18”指定です。次の狙う”ギラギラした若さ”と、うまくいかないことへの”忍耐心”。この2つ。各自、御持参ください。デットセクションの交流側で、お待ちしております。

 

2020年1月 6日 (月)

【A4モジ】草はらも進化中:グラスジェネレータ

グラスジェネレータ

グラス(繊維素材)を入れ、振るだけ。スポンジターフを”時代遅れ”に追い込んだ「地面つくりの革命品」です。

日本で取り入れる人は少ないです。残念ですね。一方、欧米では、繊維系の草表現は、既に標準技法であり、グラス ジェネレータは、マストアイテムです

価格は ・・・

ノッホ:2万円台

PECO:1万円台(類似品)

 最初に ノッホから販売。その後 類似品が出回わりました。ノッホが価格を据え置いたため、現在 このような差が出てます。

ジェネレーターの使い方

基本テクニックを紹介します。

 

メルクリンオブスウェーデンとあり、北欧在住のメルクリンマニアの方です。メーカーより この動画がベストでした。(わざわざ、ニッポンの水田をネタに してくれてますね。これで”人工芝のイネ”から卒業できます。)

日本語の解説動画(さかつう)

 

振った後、ジェネレーターの静電気で、繊維を立たせる。これは さかつうだけが見つけた”コツ”です。

 

単にふりまくだけでいい?いえいえ、リアルな地面を作るには、「配色選択」も「テクニック」も必要です。

配色の選択

 まず、「草なら緑」でいいじゃん、という発想。それは、固定観念です。
それでは、季節感を入れて、春なら黄緑、夏なら深緑、秋はベージュか茶色・・・単色じゃ、小学生の「お絵描き」です。グラスジェネレーターを生かすには、もうちょっと自然を観察しましょう。

たとえば春。若葉一色ですか?。若葉の上には、去年の草が、立ち枯れしてしてます。初夏になるまでは、枯れ草が優勢のはずです。

2001037

夏。空き地の草っぱらって、青々とした緑 一色ですか?草が剥げて地面が露出した部分が、ありませんか?。

2001039_20200105130402

青い草の下には、去年の枯れ草が堆積してます。

2001038

先のメルクリン氏の作例です。お見事!

夏の設定ですが、実に、ベージュの枯れ草が効いてます。夏=深緑というのは、固定観念にすぎません。ベージュ砂地に枯れ葉のベース。下草は、2ミリグラス(ゴールドグリーン)。上草6ミリグラス(ブライトグリーン)。素材は、たった4つにすぎません。これだったんです。
グラスジェネレータを使えば、上草と下草と地面の3層の表現や、表面の「斑な配色」が可能です。

ところで、いくつも素材を組み合わせ、リアルを求めて試行錯誤していたら、材料代金が馬鹿になりません。先のメルクリン氏は、配色パターン例を動画にしてました。動画の後半です

 

工テクニック

▲:まず「下草から上草へ」この順序で蒔く方法。

WWSというメーカーが推奨してます。

 

けど・・・この場合、下草がボンドを覆い、上草がなかなか固着しません。固着させるため、草に直接ボンドを塗布するか、あるいは、スプレーボンドを強く吹き付けるか、しなければなりませんが、これをすれば、せっかく立たせた下草が潰れてしまいます。
潰れた下草は、デコボコで、その上につく上草は、バラバラな方向を向きます。きれいに揃いません。ことに、12ミリの草丈の長い素材は、立たせることすら困難です。
 

御覧の通りです。草原の立体感=「ボサボサ」感は、出てますが、「草を立たせる」というより、「ボサボサの草原」をつくる手法です。まあ、それが自然といえば、それまで ですが。

 

このドイツ人モデラーさんは、スプレーをガンガン吹き付けしてます。やるなら、これくらいやる。でも、室内換気は要注意!ですね。

×:「上草から下草へ」蒔く方法
上草は固着し、そろった方向に起立します。
一方、後から蒔く下草は、上草の上に降りかかるだけで、固着しません。

◎:「蒔く場所を区分」する方法。

優秀なモデラーは、この手法をとってます。
ただし、おおきなジェネレーターは、素材が広範に散らばります。スポットを狙い、ここだけに蒔く。これが困難でした。そこで メリクリン氏の実践する アタマのいい方法 紹介します。

 ①植え付ける場所だけ、接着剤を塗布
 ②広範に蒔く
 ③余分な素材を掃除機で吸引
 ④ノズルにつけた靴下で素材を回収。
 ⑤①に戻り、2色目のレイヤーへ・・・

 

  キャシーミラー氏の手法

 

スポット草を作る  

もうひとつ、素材を蒔くのではなく、スポット草をジェネレータで作製し、これを張り付ける方法を紹介します。

 

こんなタイプのジェネレータもあります。

 

スポット草は、完成品が800円程度で売ってますね。でも、メーカ品は「単色」です。

今回は 動画紹介に終わります。ここまでわかったら、もはや実践あるのみ。

 

(紹介した通り、いまや、雑誌よりYoutubeのほうが、はるかに有用な情報が拾えます。RMMにしても、新生TMSにしても、これじゃ、雑誌は売れませんね。編集部の奮起を期待します。

 

2020年1月 4日 (土)

【A4モジ】モジュールの収納と搬送

モジュールの収納と搬送

一連のモジュール工作ですが、設計上、1つ「重要な要素」があります。「収納と搬送」。このモジュールは、自室に置くのではなく、3月ごとに運転会をするために、持ち歩きます。

一般に、モジュールの搬送はマイカーです。が、私はこれが使えません。4枚のA4パネルを紙袋2つにまとめ、移動は電車です。さて、どうしましょう?

Dsc_0169

完成後モジュールは、おおむね こんな感じですが

Dsc_0170

①ベースボード、②築堤、③線路、

④架線柱や樹木などの立体ストラクチャー(突起物)に分解

Dsc_0160 

さらに ベースボードを蝶番でつなぎます

Dsc_0173

ボード内側の高さを上限に 地面や水面を作れば

Dsc_0161

ボードの「折りたたみ」ができます。
まあ、これでまた、モジュールの「絵の構図」に制約がかかります。うまくいかないものです。

余談ですが、

Tトラックコンテストも、電車で運べる「コンパクトモジュール」という発想、と聞きます。
このコンテスト、そのエントリーは、30センチパネルのダブル=60センチまで。これでは、ウエイブ線形が振り戻れません。クゥインテッド(4枚)=120センチがあれば・・・です.残念。

 

2019年12月31日 (火)

【A4モジ】ウェイブモジュール 平行四辺形ボード

ウエイブ・モジュールのベース「平行四辺形」ボードの作製を紹介します。
いたって簡単。

A4パネル。画材店にあります。このボードは世界堂で入手。400円ぐらい。ちなみに、サイズがA4なのは、私の所属するサークルが「A4横(297mm)」をルールにしているためです。このルールを守らないと、モジュール全体が繋がりません。さて、どうやって折り合いをつけるか?

A4

対角線に切断して、2つの直角三角形をつくり、

A4_20191231123601

元の長方形の長辺をつなげる。高さA4横の平行四辺形のできあがり。

191230_a4

これをモジュールに組み込んでも、モジュールの横幅はA4横に同じで、元の長方形と同じです。よって。パネルはジグザグに配置されても、モジュール全体の整合性を乱すことはありません。

アタマいい?って、これ、小学3年生の算数ですよ。こういうカタチのモジュール、前代未聞でしょ。高校生の鉄模コンテストでやったら面白いかな。私が現役なら、部長に進言するけどね。こういうイタズラ。

やはり、こういう発想が出てこないのは、日本の教育に問題があるんです。つまり、中学受験だ、なんだかんだで、塾では「平行四辺形の面積公式」を詰め込ませるけど、お受験では”地頭力”が育たない、ってこと。

とっても。でも、頭の固い主催本部(KATO)から、怒られるかな。「みんなの和を乱すな!」とか。

191230_a44

え、直線ボードなら直線線路を置くべき?そんな頭は硬すぎ!。固定観念は捨てましょう。ぐにゃりとS字に曲がった線路配置。見えてきませんか。さまざまなシーナリィが。

191231_20191231133001

 

 

 

 

 

2019年12月28日 (土)

【A4モジ】レイアウト設計 ウエイブ革命

 

モジュール・レイアウトに 設計なんてある?。そう問われて当然ですが、あえて提案

モジュール・レイアウトは、モジュール(部分)の「寄せ集め」で成り立ちます。ですから、他のモジュールとの「接続規格」は、厳守しなければなりません。

たとえば、左右の線路の位置がズレれば、全体のエンドレスが構成できなくなりますし、まして、高さが揃わないと、モージュールの接続すら、出来ません。

それゆえに、線路配置(レイアウト)は ワンパターンになりがち。とくに、コンペティションでは 線路配置を「強制」されます。ここには「線路パターンを創造する」という意味で、設計はありません。

問題は「その後ある」と、私は思います。

モジュールの「絵の構図」

問題は、モジュールの「絵の構図」が、「線路パターン」に縛らてしまうことです。

ボードに直線を敷いて、両脇にストラクチャーを置く。これは、直線ボードの定番です。ここでは、個々のボードを接写モードで見るのではなく、ちょっと引いた目線で、モジュールレイアウト全体を眺めてください。

「なんだ?この単調な線路パターンは」と、感じませんか?

線路を曲げる・・・ウエイブ配線レイアウト

絵の構図を変えるなら、線路を曲げてしまえばよいのです。自分の持ち分の範囲内で、なおかつ、他のモジュールに接続できる、線路配線を設計すればよいのです。

具体的に代案を提示しましょう。「コサイン・ウエイブ配置」です

下記の図で、使用するパネルは、A4横×4枚。線路はトミックスの既成線路。CL541-15、S70です。これで、こんなパターンを設計できます。コサイン(もどき)の線路配線。全体の長さ約120センチ×幅21センチ。横位置が、元に振れ戻るので、他のモジュールとの接続に支障はありません。

190921_20191228223301

 

この際、ボードも曲げる

 ・・・平行四辺形ボード 

曲げるのは「線路」だけ?いえいえ、ボードをA4長方形から「平行四辺形」に変えましょう。線路パターンをウエイブするなら、ボードもウエイブさせれば、収まります。

これで、情景の余地が格段に広がります。たとえば海岸を走るローカル鉄道モジュール。

191228_20191228224101

なお 「平行四辺形」は 長方形を弄れば、簡単にできます。これは「算数」の問題(笑)

つまらないエンドレス・パターンにアクセント

・・・「オメガ・ループ・セクション」

カーブだけで構成する「オメガセクション」。モジュールレイアウトに組み込めば、単調エンドレス型モジュールレイアウトに、おおきなアクセントがつきます。さながら、半島セクション(笑)。あるいは、ファッションコレクションのランウェイです。モデルさんは、もちろん、鉄道模型です。

(・・・ちょっと そこのお客さん 踊り子さんには手を触れないよう おねがいします。)

190921_20190928075801

レイアウトって、何?

オメガセクションの線路パターンから、どんな絵(風景)をイメージできますか?

モジュールレイアウトを覗きこむこと。これを1分の1スケールで、動画再現すると、こんな感じです。、

 

 

 

 

線路は続くよ どこまでも、ただし、まっすぐじゃないゾ

 

 </p>

一般に、レイアウトの線路設計では、線路を複雑に絡めてしまいがち。その結果、レイアウトでは、線路がいくつも立体交差し、何本も並列に走ります。

でも、そんな風景は、都会の、ごく限られた場所にしかありません。まして、ボード上に占める線路用地の割合が、半分を超えるようでは、これはもう「線路地獄」です。

運転は、楽しいかもしれませんが、風景としては、かなり息苦しい。

レイアウトは、役者(模型)が歌い踊る「舞台」です。そんなに線路を引き回さなくとも、あるいは、単線1本でも、舞台はできるのではありませんか?

この動画が、示唆してくれています。

 

 

 

 

 

 

 

 

 

 

 

 

2019年9月 2日 (月)

【A4モジ】ニッポンの草原は  KATOじゃなくて 100均麻縄

ニッポンの草原(くさはら)は深いぞ・・・KATOの勘違い。

他人のレイアウトではなく、現実を観察しましょうよ。ニッポンの草原は 欧米に比較して、深いのです。

Photo_20190831124301

草刈がなければ、ススキは1mを超え 車両の床下部分が完全に埋まる高さ 以上に繁茂します。

ノッホ ウッドランド 欧米の草素材は、スタティック・グラス(芝)を再現するアイテムです。一方、ニッポンの雑草(ススキ系)は、芝ではく、トール・グラスです。冷涼な欧米と湿潤アジアでは、植生が違います。したがって、ノッホやウッドランドの草素材で、日本の草原を再現しても、決定的に高さが足りません。見ればわかります。

KATOの草原(くさはら)シリーズは ノッホかウッドランドのOEM製品です。発色はいい。ニッポンです。でも、その高さは大間違い。2ミリです。ニッポンの草原は、トールクグラスが主体です。この再現には、Nなら10ミリ HOなら15ミリが欲しいです。

「100均麻縄」という 108円低価格素材

どう作るかは オリジナル動画で・・・ん スゲー。

(模型雑誌より Youtube動画に「工作ヒント」は転がってますね。鉄道模型に限定せず、また国境 にも制約をかけては いけません。言葉のカベ?・・・見ればわかりますよ。)

Dsc_0117

100円ショップキャンドゥに売っている「麻縄」。当然108円です。大量にできます。

 Dsc_0118

結び目をつくり

Dsc_0119 

カットして

Dsc_0120

繊維をピンセットでほぐし

Dsc_0121

根っこの団子を切り落とし

Dsc_0122

木工ボンドで 1つづつ 植え込み

Dsc_0114

高さ深みのある「ススキ原」ができます。たぶん、日本のモデラーはやってない手法です。日本の草原(くさはら)は、日本の「100均」で売ってるんですよ(笑)みんな、気が付いてないだけ。あ・・・”この道のプロ”を自称する人には、内緒にしてね。買占められたら困るから・・・。

リアル釧路湿原

1909011

近隣の河川敷

Dsc_0005

 

モジュールに応用 

 湿原モジA(水面濁り

Dsc_0108

湿原モジB

Dsc_0110

ドローン目線で

Dsc_0112

接写モードで

Dsc_0116

繊維系の草素材 実力があるでしょ。スポンジ素材(ターフ)のバラマキや貼り付けにくらべ、はるかに。リアルです。私はこれで「スポンジ草」から卒業しました。

次回は 草原にグラスジェネレータを使う です

これも、繊維系草素材を生かすアイテムです。高価ですが、見返りはあります。海外のジオラマ作家さんは 普通に使ってます。これは、すでに標準技法です。

 

 

 

 

 

2019年8月31日 (土)

ブログ村 登録だけ残し それ以外ヤメタ

再開にあたり 2点 

 

1:ブログ村に登録してますが、登録以外ヤメました。

2:DCC改造のほか、A4サイズでNモジュール製作を 追加します。テーマは地面・草・水面(海面)自然表現。モデラーがやってないことを 模索します。なお、バックナンバー等で判別できるよう タイトルに【A4モジ】と表記します。

ブログ村のランキングには興味なし。ランクに疑義があるなら、なおさらです。たとえ”1”データーであっても、協力したくないですね。「顕微鏡サイズ」ですが、抵抗します。

そもそも、ランク上げたきゃ、テクを駆使する前に、メジャーなNゲージに絞りこんで、速攻で「新製品レポ」とか「プチ改造」を綴ればよし。これで、ランクアップしますよ。これは、私の趣味じゃないなぁ。

そもそも「ブログ注目度合」が趣味、なんじゃなくて、人がやらない方法で「鉄道模型を弄る」のが趣味。注目なんかされなくても、自分が楽しけりゃ、それで満足です。つまり、模型が楽しいのが、第一義であって、私は「ランクの顕示」に、興味がもてません。

そんなわけで、意図的に、なるべく「注目を浴びない」よう、鉄道モケイを綴ります。設定を「単純登録」のみにしています。したがって、新着記事から流れると、一切見つからないかもしれません。一方で「記事」や「動画」には、インパクトを残せるよう、努力します。

月1ペースで書き込みます。あえてブックマークは無用です。検索をかければ、当たるか と。 

☆現 工作途上のマルタイ Dsc_0105

私の改造は「アナログには真似できないコトを楽しむコト」が目的です。ライト点滅 乗務員の無線 作業音 それを外部から操作する。これが、DCC模型工作の本懐ですね。

Dsc_0107_20190831000401

見ての通り かなりの「魔改造」です。

1台の影で平均3台壊します。手術成功率25%。藪医者。参考になりません。

☆ カタチに嵌らない モジュールをつくる

Dsc_0074

線路配置を「ウエイブ」にしてます。実にお行儀悪い配線。ですが、他の一般モジュールへの接続に支障はなし。ちゃんと直線に戻ります。使用したのは、トミックス541-15×2=30度 間にS70のガータ橋。これで 厳密ではありませんが A4パネル横置×4=約120ミリに収まります。緩いカーブなので、S字の捻りが入っても、カーブにおける「車体のカクカク」現象はありません。絶妙です。

これも人がやらないことかな。なお、このモジュールは ある程度分解し、電車で持ち運び、可能です。

モジュールは「直線線路をボードに正対」させる。そんな決まりゴト、誰が定めた?と私は言いたい。多くのモジュールレイアウトは、多彩な風景を寄せ合いです。でも、みんなが同じ線路パターンです。たとえ、ストラクチャーのウェザリングに凝り、モジュールを接写すれば「作り込みが素晴らしい」としても、レイアウトを俯瞰すれば、バーっと一直線、お行儀よく90度ターン。なんか。日本人のモジュールは、つまりません。

例えば、鉄道写真の「美しい構図」は、カーブで編成が収まること。だからS曲線は 名撮影地になるわけよ。で、現実の「美しい構図」を なぜレイアウトに応用しない?。ヘンでしょ。

まして、そういうレギュレーション(決まり事)を押し付けてる ナンチャラ・コンテスト。アタマが固いです。とにかく「型に嵌める」のが大好き。日本のおじいちゃんたちの悪い癖です。高野連しかり、相撲協会しかり、・・・あら脱線。

キハ261 ライト 「再」改造

以前「キハ261のライト改造」を連載してましたが 走行集電不良が著しいと判明しました。原因は「車体の重心」。「屋根裏の配線」で、重心が上がり、車体がぶれる。これが原因てす。

ウエイトを埋め込むか、配線を見直しか。模索してます。

2019年4月12日 (金)

【番外】「次世代金型」に「レトロ制御」Tomixプログレッシブグレードの矛盾

Tomixの四季島 Youtubebに上がってます

使う金型は 通常の2倍だそうです。ガンプラを手掛けるバンダイなら「通常の3倍」とか、言ったかな?。
冗談はさておき 単純に金型(部品点数)を増やせば、それが「次世代模型」になりうるか?という問い

鉄道模型には 2つ思想があって、1つは「見栄えがナンボ」、他方は「動いてナンボ」。

その「見栄えがナンボ」主義によれば、「金型2倍」は、筋は通りますよ。

但し、見栄えにこだわるなら、小さなNゲージより、HOとかOで再現すれば、いいこと。なんでNゲージで再現するのか わかりません。売れるから?サイドボードに飾るなら、どうやっても、スケールの小さなNゲージは貧相です。
もう1つ、細部再現と現実(リアリティ)は、違うこと。車内がスケスケに見えちゃう寝台列車なんて、恥ずかしくて乗れる?(笑)まして、数十万円かかるクルージングトレイン。そんな実車、走ってません。

他方、「動いてナンボ」主義の模型思想から。

Tomixの「次世代」が、アナログ制御に拘泥するなら、ちっとも「次世代」になってない。あそこまで「細部再現」を検討し、「金型2倍」を実現して、走らせたら”シャー”ですか?それは、令和の御代に、2時代前の「昭和の鉄道模型」ですよ。それは、「次世代」じゃなく「レトロ」と言います。

アナログ模型では、走行のために線路電圧が動き、方向転換で線路極性が変わる。これでは、線路電源は 走行以外のギミックの「電源」になりえない。だから、アナログ模型は、走るしか能がないのです。
仮に 鉄道模型に「走行」以上の夢を託すなら、余計なハッテリーを載せ、外部機器を幾重にも並べることになる。模型は安価だけど、周囲はとて重い。電気に詳しくない私にも、簡単にわかります。メーカーの技術陣というプロを自認するなら、分っているでしょうに。

世界を見てほしい、「海外に行け」じゃない Youtubeでこと足りる。

サウンドのあるなし、ではなく、低音が難しいNゲージでさえ、サウンドの質で競争している。逆に言うと、ユーザーは、「耳」で模型を買ってる。欧米市場では 「見栄え」だけじゃなく、「聴き映え」がセールスポイントになってます。もちろん車載です。サウンドなんちゃらなんか、使わない。

いまどき「サウンド」がない模型を「次世代」などと僭称する。これは、”お笑い”ですか?>Tomixさん

サウンドの入った模型を、遠い海の向こうの話、なんて考えてる方。国内モデルでも、こんなハイグレードなサウンドソフトがありますよ。デコーダーはEsuですが、サウンドファイルは無償です。

 

 

.

 

 

2019年4月11日 (木)

第5回 ライトユニットの改造

 

1必要なのは 室内灯よりキャブライト(室内灯を入れない理由)

後追いの実車画像です。乗務員室の室内灯がハッキリ見えます。その存在感は、曇天の昼間ならヘッドライト並み。(窓は光ってませんね)

1904042_2

晴天の白昼でも、見えます。

1904031_1

多くのNゲージ愛好家が嗜好する室内灯です。でも、室内灯は「マスト」ではありません。それどころか、白昼走行を想定した場合「リアル感ぶち壊し」だと思います。

ヘッドライトとテールライトの工作

1904067_4

ライトユニットをボディから外します。この段階で判明することですが、ユニットはボディに組み込まれているため、リード線をボディの屋根裏を這わせるしかありません。当然、リード線を下回りからどうつなげるか、という構造上の問題が生じます。
分解を考慮しないとけません。開け閉めで接続部が劣化しては、不点灯の原因になります。では、開け閉めできるほど リード線に余裕を持たせてはどうか。これでは、模型の見栄えを著しく損ねます。リード線の塊で、ボディが収まらない、原因にもなります。ここが、小さなNゲージの苦しみです。その答えは後ほど

 

 

1904061

ユニットは 本体 電子基盤 裏ふた の3つ。中央が工作対象の電子基板です。

1904062

その足が集電板に接触することで 受電します。集電板には、交流が来るので、ここからの給電は絶縁します。代わりに、デコーダーから受電することになります。

1904063

i① 先端の返しをカットして 

② ここにオレンジ(画像では黄色で代用しました)リード線をはんだつけ。基盤の改造は不要です。

③ 外側を熱収縮チューブでカバーします。これで、たとえ集電板に触れても そこから電気がきません。

1904065

  

チェック! ライトユニットの点灯を確認 

  ハンダつけしたオレンジ(黄色)リード線を アナログ・コントローラに繋ぎ、

1904066

  LEDの点灯を確認します。点灯は正常ですか?

1904067

3運転室(乗務員室)キャブライトの工作

19041010

ライトに使うLEDは チップLED1006 1ミリ×0・6ミリ 米粒以下です。これがリード線(ポリウレタン銅線)つきで入手可能です。

美軌模型足付チップLED1006×4個 を使用しました。

※ちなみに ワンサイズ上 1016サイズだと、秋葉原の秋月で1個40円。現在、こちらが激安になってしまいました。なお、その気になれば 1006のLEDにポリウレンタンをハンダつけできますが・・・難易度がハンパなく高い工作なので オススメしません。

この極細ポリウレタン線は 切れやすく、撚りが入りやすい「難素材」です。でも、チップLEDには 極細ポリウレタン線しか、ハンダつけできません。そこはしかたないとして、その先は、ビニール被膜線に切り替えます。

長い脚が プラス こちらには青リード線 短いほうがマイナス こちらに緑リード線

ビニール線の「芯」に ポリウレタン線を巻き付け ハンダつけ。ポリウレタン線の被膜ポリウレタンは、ハンタの熱で溶け、通電します。

1904069

繰返しますが ポリウレタン線は「髪の毛」並みに繊細です。かんたに「撚り」が入り、そこから断線してします。「難素材」です。慎重に・・・

 チェック! チップLEDの点灯

 固定工作の前に 一度 点灯を確認します。電源はアナログコントローラ。青線をプラス出力 緑線をマイナス出力 に繋ぎます。ここでは チップLEDに電圧や電流を制限するダイオードや抵抗が挟まっていません。「最低限」を探るように、慎重に上げます。もし、点灯しないなら、チップLEDの方向が逆です。あるいは、アナログコントローラーの出力 逆に取り付けしてます。

工作手順

ライトユニットの 運転台後方に ビンバイスで穴を通し

1904101_1

穴に チップLEDの足(ポリウレタン線)を通します
チップLEDは ユニットの構造上「真後ろ」に配置できません。正面 左よりに位置取りします。

外で ビニール被膜線(AWG32)と結線 ハンダ付けします 

1904102

接合部を、熱収縮チューブで カバーします。

Dsc_0014-1

接合部を 運転席のウラに固定します。
これで、ライトユニットからは ビニール線が出ている形になります

1904104_1

反対側も同じ

チェック! 通電(LED点灯)を確認

 1904067_3

アダプターへ配線

ライトユニットからは 4本のリード線。バラバラなので 熱収縮チューブでまとめます。

Dsc_0030

リード線の先端に ICピン(1×5)
アダプターの端子と合わせます。(1つ余ります)

1904105

リード線にマークして マークの位置で、被膜をはぎます。

1904106

芯をピンに差し込んで ハンダつけ。
リード線をボディの外に引っ張りだしで 工作すること。あるいは、ライトユニットごと取り出して、工作するのが、一番安全かも。  

とにかく ボディにハンダが当たらないよう 絶対に注意!

Dsc_0034

一進一退なら まし、DCC工作は、スムーズに進捗がはからないことが 多いです。
・・・「2歩進み3歩下がる」とか「はじめに戻る」とか。
1904107

リード線は,余ってもダメ。足りないのはもっとダメ。こういう作業を一発で決められたらなぁ・・・
不器用モデラーには、これが難関です。

 チェック!

 デコーダーに見立てた「ダミー・コネクター」を作ります。アナログ電源(コントローラー)を使い、
LED点灯を確認します。いままでの工作「アダプター」「コネクター」「ライトユニット」を通して、
工作の成否を確認します。

1904111_2

 アダプターに差し込み
 アナログコントローラを電源に ヘッド テール 

1904113

 運転台 それぞれのLEDの点灯を確認します。

 

1904114

  問題がなければ、「作業は成功」です。

 点灯しない場合、そもそも、大元のコントローラーからの出力 その繋ぎが「逆」 あるいいは 進行方向レバーが逆で 青線にプラスが流れてない 場合があります青線にプラスが流れているか、確認してください。

 しつこいほど「点灯試験」を繰り返しています。これは チップLED 定電流ダイオードともに
「方向性」があるためです。とくにチップLEDは超極小。「方向」を間違えてハンダつけして、
そのまま気が付かない。このまま完成させたら「点灯しない」。おかしい。そんなミスを避けるためです。

 

 

 

 

 

 

 

 

 

 

2019年4月 9日 (火)

【告知】DCC運転会 令和のNゲージ。その遊び方

令和のNゲージは、”しゃべくり模型”に 進化します(笑)たぶん。

 

終着札幌にまもなく到着。先行の各停に阻まれて、高速特急もスローダウン。ビルの間のチラチラ。そして、車内には、あのハイケンスのメロディとともに、乗換案内放送が流れてきます。そんなシーンです。乗り鉄ならわかりますよね。鉄道旅行のクライマックスです。

ここからが大違い。昭和のNゲージでは、案内放送は”ココロの中”だけ、流れていました.令和のNゲージは、ほんとに”模型から聞こえてくる”のです。このリアリティ充実ぶり。半端ない。これが、模型の進化というものです。

そんな 令和のNゲージ の運転会です。
体感してください。「走らせる」だけではない、「しゃべらせる」鉄道模型。その、あたらしい遊びかた。
乗り鉄+音鉄+模型鉄。鉄道趣味の大統合。その壮大な試み。

見学参加 歓迎します。

期日 4月28日(日) 令和の時代まで あと2日
時間 13:00~17:00+さらに 17:30~から 延長戦(単線モジュール運転会)
場所 新横浜プラスポート 7・8・11・12 4線を交代で。
   延長線は 公民館を利用

費用 レンタル費÷参加人数 ですが 毎回2000円弱で済んでいます。見学は費用無料。

表明 fe2o3@mbe.nifty.com 横溝みなみ まで

今でも、「昭和の鉄道」にはノスタルジーがあります。でも、いまだに「昭和の制御」で放置して、いいわけありません。
もう 
「アナログ」が残るのは、ザサエさんの磯野家と鉄道模型だけ。

 

«第4回:ムダかな?でも アダプターを挟みます