NをDCCで自動運転 その2 環境整備 [Arduinoで自動運転(DCC)]
こんばんは。強い台風が関東の南を迷走中で、今日も都内は不安定なお天気でした。
上陸して被害が出ないといいのですが。。。
作業を始めたDCC/MM2シールドですが、まずは、このサイトからDesktop Stationハードウェア用Arduinoライブラリをダウンロードしました。
そして、こちらのサイトで、Arduino用DSGatewayLibのZIPファイルをダウンロードします。
ダウンロードしたファイルを、Arduino IDEのメニューのスケッチ⇒ライブラリをインクルード⇒ZIP形式のライブラリをインクルードを選択して、ダウンロードしたZIPファイルを指定して取り込みました。
その後で、運転サンプルのプログラムをコピペしてコンパイルして、エラーがないことを確認して、Arduinoへ書き込んだ後、ESUのデコーダーテスターにデジトラックスのDZ-125を繋いで試してみたところ、最高速が早過ぎだったので、ちょっと速度を落とすのと、タイミングを変更してみたものを、動画に撮影してみました。
なんとか無事に動かせたようです!
これから、いろいろと試していこうと思います。
サンプルプログラムをタイマ値とスピードの係数をちょっと変えています。
上陸して被害が出ないといいのですが。。。
作業を始めた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); } }
コメント 0