dsshieldauto
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン次のリビジョン両方とも次のリビジョン | ||
dsshieldauto [2018/01/21 10:06] – yaasan | dsshieldauto [2018/01/24 21:08] – [メルクリン車両の単純往復シャトル運転] yaasan | ||
---|---|---|---|
行 217: | 行 217: | ||
Youtube動画: | Youtube動画: | ||
{{youtube> | {{youtube> | ||
+ | |||
+ | |||
+ | ==== メルクリン車両の単純往復シャトル運転 ==== | ||
+ | |||
+ | メルクリン車両(Marklin Digital, Marklin Motorola 2)の往復シャトル運転です。 | ||
+ | ファンクション操作や、ボタンでスタートをかけるなどの動きを実現しています。 | ||
+ | |||
+ | |||
+ | < | ||
+ | / | ||
+ | /* User Program Area */ | ||
+ | / | ||
+ | |||
+ | void user_init(void) | ||
+ | { | ||
+ | |||
+ | pinMode(8, INPUT); | ||
+ | pinMode(11, | ||
+ | pinMode(12, | ||
+ | |||
+ | digitalWrite(8, | ||
+ | digitalWrite(11, | ||
+ | digitalWrite(12, | ||
+ | |||
+ | //F0 Light ON | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 0, 1); | ||
+ | |||
+ | //SPEED 0 | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 0); | ||
+ | |||
+ | //POWER ON | ||
+ | CMD_Power(1); | ||
+ | Serial.println(" | ||
+ | } | ||
+ | |||
+ | |||
+ | void user_program(void) | ||
+ | { | ||
+ | static byte sButtonState = 1; | ||
+ | |||
+ | |||
+ | // | ||
+ | |||
+ | if( digitalRead(8) == 0) | ||
+ | { | ||
+ | Serial.println(" | ||
+ | |||
+ | sButtonState = 1; | ||
+ | CMD_Wait(100); | ||
+ | |||
+ | /* 前進 */ | ||
+ | //FWD | ||
+ | CMD_LocDirection(ADDR_MM2 + 2, 0); | ||
+ | |||
+ | //警笛 | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 1); | ||
+ | CMD_Wait(2000); | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 0); | ||
+ | |||
+ | // | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 100); | ||
+ | } | ||
+ | |||
+ | if( digitalRead(11) == 0) | ||
+ | { | ||
+ | Serial.println(" | ||
+ | |||
+ | sButtonState = 2; | ||
+ | CMD_Wait(100); | ||
+ | // | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 100); | ||
+ | } | ||
+ | |||
+ | if( digitalRead(12) == 0) | ||
+ | { | ||
+ | Serial.println(" | ||
+ | |||
+ | sButtonState = 3; | ||
+ | CMD_Wait(100); | ||
+ | } | ||
+ | |||
+ | /* S88のスキャン */ | ||
+ | CMD_ScanS88(); | ||
+ | |||
+ | |||
+ | if( CMD_GetS88(0) == 1) | ||
+ | { | ||
+ | Serial.println(" | ||
+ | |||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 100); | ||
+ | CMD_Wait(500); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 75); | ||
+ | CMD_Wait(500); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 50); | ||
+ | CMD_Wait(500); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 25); | ||
+ | CMD_Wait(500); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 0); | ||
+ | CMD_Wait(1000); | ||
+ | |||
+ | //REV | ||
+ | CMD_LocDirection(ADDR_MM2 + 2, 1); | ||
+ | Serial.println(" | ||
+ | |||
+ | //警笛 | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 1); | ||
+ | CMD_Wait(2000); | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 0); | ||
+ | |||
+ | /* 加速 */ | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 25); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 50); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 75); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 100); | ||
+ | CMD_Wait(3000); | ||
+ | |||
+ | CMD_LocFunction(ADDR_MM2 + 2, 3, 1); | ||
+ | CMD_Wait(2000); | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 3, 0); | ||
+ | |||
+ | /* 減速 */ | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 75); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 50); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 25); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 0); | ||
+ | CMD_Wait(2000); | ||
+ | |||
+ | //FWD | ||
+ | CMD_LocDirection(ADDR_MM2 + 2, 0); | ||
+ | Serial.println(" | ||
+ | |||
+ | //Clear | ||
+ | CMD_ScanS88(); | ||
+ | |||
+ | //警笛 | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 1); | ||
+ | CMD_Wait(100); | ||
+ | CMD_LocFunction(ADDR_MM2 + 2, 2, 0); | ||
+ | |||
+ | /* 加速 */ | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 25); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 50); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 75); | ||
+ | CMD_Wait(1000); | ||
+ | CMD_LocSpeed(ADDR_MM2 + 2, 100); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Youtube動画: | ||
+ | {{youtube> | ||
dsshieldauto.txt · 最終更新: 2018/01/27 08:44 by yaasan