ユーザ用ツール

サイト用ツール


dsshieldauto

文書の過去の版を表示しています。


DSshieldAUTO

DSshieldAUTOは、DSshieldとArduinoUNOだけで、パソコンなしに小規模な自動運転を実現するためのソフトウェアソリューションです。 小さいジオラマの車両やギミックをDCCで自動制御して、手を離しながら模型やジオラマをお楽しみいただける仕組みを提供しています。

必要な物

  • DCCポイントやDCC車両、レール、ジオラマなど皆様がお持ちのDCCデコーダ搭載物
  • Arduino UNOもしくは互換機
  • 必要に応じて、ボタンやS88デコーダ(在線検出器)、LEDなど。
  • パソコン
  • Arduino IDE(無料)

配線の仕方

  1. DSシールドを買って、秋月電子で部品を入手しておき、半田付けします。
  2. Arduino UNOとDSシールドは合体させておきます。

buin2gou.sakura.ne.jp_sblo_files_powerele_image_dsauto_route2-thumbnail2.jpg

スケッチの書き込み方法

  1. Arduino IDEをインストールする。Arduino UNO(互換機)のUSBドライバもインストールする。
  2. ここに掲載されているスケッチをダウンロードし、Arduino IDEで開く。

  3. ボードをArduino UNOにして、ポートをArduino UNOとして認識したポートを指定する。空白はNG。


  1. Uploadボタン(→マーク)を押して書き込む

スケッチの作り方

全体の構成

主な命令

AUTOスケッチでは、Arduinoの命令は全部使えますが、たぶん混乱するだけなので、以下の命令でまずは使ってみてください。

命令 解説 使用例
CMD_END()
CMD_ScanS88() S88からデータを収集する処理。
CMD_GetS88(S88アドレス) 集したデータから希望のS88アドレス(1-16)の状態(0 or 1)を得る。

スケッチの例

アドレス3車両のファンクション操作

/*****************************************************************/
/*  User Program Area                                            */
/*****************************************************************/

void user_program(void)
{
	SerialDS.println("Power On");
	CMD_Power(1);
	
	CMD_LocFunction(ADDR_DCC + 3, 0, 1);
	CMD_LocFunction(ADDR_DCC + 3, 1, 1);
	CMD_Wait(500);
	
	SerialDS.println("Loc 3, Func 10, On");
	CMD_LocFunction(ADDR_DCC + 3, 10, 1);
	
	CMD_Wait(500);
	
	SerialDS.println("Loc 3, Func 11, On");
	CMD_LocFunction(ADDR_DCC + 3, 11, 1);
	
	CMD_Wait(500);
	
	SerialDS.println("Loc 3, Func 9, On");
	CMD_LocFunction(ADDR_DCC + 3, 9, 1);
	
	CMD_Wait(500);
	
	SerialDS.println("End...");
	/* 永久ループ(終了) */
	while(1){}
}

タクトスイッチによるルート切り替え

/*****************************************************************/
/*  User Program Area                                            */
/*****************************************************************/

void user_init(void)
{
	
	pinMode(8, INPUT);
	pinMode(11, INPUT);
	pinMode(12, INPUT);
	
	digitalWrite(8, HIGH);//内部プルアップON
	digitalWrite(11, HIGH);//内部プルアップON
	digitalWrite(12, HIGH);//内部プルアップON
	
	CMD_Power(1);
	Serial.println("Power On");
}


void user_program(void)
{
	//ボタンが押されたとき、digitalReadは0を返す。押さないときは1を返す。
	
	if( digitalRead(8) == 0)
	{
		Serial.println("Route 1");
		
		CMD_Turnout(ADDR_ACC_DCC + 2, 0);
		CMD_Wait(1000);
	}

	if( digitalRead(11) == 0)
	{
		Serial.println("Route 2");
		
		CMD_Turnout(ADDR_ACC_DCC + 1, 1);
		CMD_Wait(1000);
		CMD_Turnout(ADDR_ACC_DCC + 2, 1);
	}
	
	if( digitalRead(12) == 0)
	{
		Serial.println("Route 3");
		
		CMD_Turnout(ADDR_ACC_DCC + 1, 0);
		CMD_Wait(1000);
		CMD_Turnout(ADDR_ACC_DCC + 2, 1);
	}
}

配線図:

dsshieldauto.1516491690.txt.gz · 最終更新: 2018/01/21 08:41 by yaasan

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki