SSブログ

NをDCCで自動運転 その3 LokSound micro V4.0を試してみた [Arduinoで自動運転(DCC)]

こんばんは。今日の都内は朝から青空で残暑が夏の名残を感じました。

それにしても、台風の被害が酷いですね。
お見舞い申し上げます。

そして、週末から来週にかけて、また台風が。。。
被害が出ないことを祈ります。

さて、名古屋方面では、基盤作成も着々と進んでいるようですが、私も作業を始めたDCC/MM2シールドですが、なんとなく使い方が解ってきました。

前回は、デジトラックスのDZ-125でやってみたのですが、今回は、本命のESUのLokSound micro V4.0を試してみました。
ESUのLokSound micro V4.0を使うの自体、超久々だったので、プログラマを起動したらこんな画面が!

LokProgrammer_4_4_24web.jpg

プログラマの版数が4.4.14だったのが、4.4.24になってます。
他の方の情報によると、GUI関係がかなり変わったよなので楽しみです。
ただ、今日起動したら、既に4.4.25が公開されているようです。

で、今回のArduinoのプログラムですが、デコーダーをデコーダーテスタに繋いでの動作確認をしました。



やってみて解ったのは、サウンドの有り、無しで、デコーダーの動きが変わるようです。
サウンドが有りの状態で、プログラムを作れば、サウンドをOFFにしても動作は変わらないとは思います。

提供されているファンクション関連の関数とかは、関数コールをした後に、少々ディレイのような感じに時間を空けて、次の関数をコールしないと、どうも、動きが安定しませんでした。
今回は、デコーダーテスタでの確認でしたが、次回は、デコーダーを搭載した車輌で確認してみようと思います。
いろいろ



#include <avr/wdt.h>
#include <SPI.h>
#include "DSGatewayLib.h"
#define CHANGETIME 500
DSGatewayLib Gateway;
void setup()
{
    
    Serial.begin(9600);
    pinMode(12,OUTPUT); // チェック用LED
    pinMode(8,INPUT); // プッシュボタン
Serial.println("Step100");
    Gateway.begin();
    delay(5000);
Serial.println("Step200");
    Gateway.SetPower(true);
}
void loop()
{
  int aSpeed;
  word aLocAddr = ADDR_DCC + 49; //DCCアドレスを指定

  digitalWrite(12, HIGH);   // LED 点灯

  if (digitalRead(8)==HIGH){

Serial.println("Step101");
    digitalWrite(12, LOW);    // LED 消灯

     // Go forward
    Gateway.SetLocoDirection( aLocAddr, 1); // 前進
    delay(3000);
Serial.println("Step201");
    Gateway.SetLocoFunction( aLocAddr, 1, 1 );  // F1 サウンドON
    delay(40000);
Serial.println("Step202");
    aSpeed =1;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 加速
    delay(10000);
Serial.println("Step203");
    Gateway.SetLocoFunction( aLocAddr, 0, 1 );  // F0 ライトON
    delay(3000);
    Gateway.SetLocoFunction( aLocAddr, 2, 1 );  // F2 汽笛長ON
    delay(1000);
    Gateway.SetLocoFunction( aLocAddr, 2, 0 );  // F2 汽笛長OFF
    delay(6000);
Serial.println("Step204");
    aSpeed =512;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 加速
    delay(10000);
Serial.println("Step205");
    aSpeed = 0;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 減速
    delay(15000);
Serial.println("Step206");
    
    // Go reverse
    Gateway.SetLocoDirection( aLocAddr, 2); // 後進
    delay(5000);
Serial.println("Step301");
    aSpeed =1;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 加速
    delay(20000);
Serial.println("Step302");
    aSpeed =512;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 加速
    delay(10000);
Serial.println("Step302");
    aSpeed = 0;
    Gateway.SetLocoSpeed( aLocAddr, aSpeed); // 減速
    delay(15000);
Serial.println("Step401");
    Gateway.SetLocoFunction( aLocAddr, 0, 0 );  // F0 ライトOFF
    delay(3000);
Serial.println("Step402");
    Gateway.SetLocoFunction( aLocAddr, 1, 0 );  // F1 サウンドOFF
    delay(18000);

Serial.println("Step500");

  }    
}



nice!(1)  コメント(2)  トラックバック(0) 
共通テーマ:趣味・カルチャー

nice! 1

コメント 2

Yaasan

関数は連続してセットすると詰まってしまうので、50msくらいのウェイトが必要です。delay関数はms単位で設定できるので、50をセットしてもらえれば問題ないはずです。
by Yaasan (2016-09-03 19:45) 

目黒のダンボ

Yaasanさん、こんばんは。

>関数は連続してセットすると詰まってしまうので、50msくらいのウェイトが必要です。
やはりそうなんですね。ありがとうございます。

>delay関数はms単位で設定できるので、50をセットしてもらえれば問題ないはずです。
わかりました。

by 目黒のダンボ (2016-09-06 18:52) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0