SSブログ

NをDCCで自動運転 その2 環境整備 [Arduinoで自動運転(DCC)]

こんばんは。強い台風が関東の南を迷走中で、今日も都内は不安定なお天気でした。
上陸して被害が出ないといいのですが。。。

作業を始めたDCC/MM2シールドですが、まずは、このサイトからDesktop Stationハードウェア用Arduinoライブラリをダウンロードしました。

そして、こちらのサイトで、Arduino用DSGatewayLibのZIPファイルをダウンロードします。
ダウンロードしたファイルを、Arduino IDEのメニューのスケッチ⇒ライブラリをインクルード⇒ZIP形式のライブラリをインクルードを選択して、ダウンロードしたZIPファイルを指定して取り込みました。

その後で、運転サンプルのプログラムをコピペしてコンパイルして、エラーがないことを確認して、Arduinoへ書き込んだ後、ESUのデコーダーテスターにデジトラックスのDZ-125を繋いで試してみたところ、最高速が早過ぎだったので、ちょっと速度を落とすのと、タイミングを変更してみたものを、動画に撮影してみました。



なんとか無事に動かせたようです!
これから、いろいろと試していこうと思います。


サンプルプログラムをタイマ値とスピードの係数をちょっと変えています。



/*********************************************************************
 * Desktop Station Gateway Sketch for Arduino UNO/Leonard
 *
 * Copyright (C) 2014 Yaasan
 *
 */
#include <avr/wdt.h>
#include <SPI.h>
#include "DSGatewayLib.h"
#define CHANGETIME 500
DSGatewayLib Gateway;
void setup()
{
    
    Gateway.begin();
    
    delay(5000);
    Gateway.SetPower(true);
}
void loop()
{
    int aSpeed;
    word aLocAddr = ADDR_DCC + 3; //←ここを変えると機関車が変更できる
    
    // Go forward
    Gateway.SetLocoDirection( aLocAddr, 1);
    
    for( int i = 0; i < 10; i++)
    {
//        aSpeed =i * 73;
        aSpeed =i * 30;
        Gateway.SetLocoSpeed( aLocAddr, aSpeed);
        delay(CHANGETIME);
    }
    
    for( int i = 0; i < 10; i++)
    {
//        aSpeed = (10 - i) * 73;
        aSpeed = (10 - i) * 30;
        Gateway.SetLocoSpeed( aLocAddr, aSpeed);
        delay(CHANGETIME);
    }
    
    // Go reverse
    Gateway.SetLocoDirection( aLocAddr, 2);
    
    for( int i = 0; i < 10; i++)
    {
//        aSpeed =i * 73;
        aSpeed =i * 30;
        Gateway.SetLocoSpeed( aLocAddr, aSpeed);
        delay(CHANGETIME);
    }
    
    for( int i = 0; i < 10; i++)
    {
//        aSpeed = (10 - i) * 73;
        aSpeed = (10 - i) * 30;
        Gateway.SetLocoSpeed( aLocAddr, aSpeed);
        delay(CHANGETIME);
    }
    
}



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

nice! 3

コメント 0

コメントを書く

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

トラックバック 0