カトーちゃんの曲線と、無改造のフレキシブルレールで動かそうと思ってましたが
さすがに、固定しないでフレキシブルレールを使うのは無謀のようで。。。(苦笑
これを買っちゃいました(^^;
で、ユニトラック曲線線路だけで構成、っと。
テスト路線のチェックが終われば、カトちゃんのパワーパックで動かすときでも再利用しよう~!!!
というわけで、楕円形から ひょうたん型に変形!!!
ちゃんと、動きました~!!!
仮のソフトウェアでの動作なので、可変抵抗で加速減速。ノッチ機能無し!
ただ、なぜか、正転・逆転で、スピード感が違う。。何故だろう??
おかげで、常点灯がちょっと暗めだなぁ・・・謎っ。。。
NゲージでVVVF音なんかも再現できそうなので、それは、また今度。
PWM制御プログラム
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // set the LCD address to 0x27 for a 16 chars and 2 line display
int val0R = 0; // 読み取った値を格納する変数
int val0D = 0; // 読み取った値を格納する変数
int val1 = 1; // 読み取った値を格納する変数
int val2 = 2; // 読み取った値を格納する変数
int pwm10 = 0;
int vsw = 0; // vol ON/OFF
int rsw = 0; // reverse sw
int sw=0;
void setup()
{
lcd.init(); // initialize the lcd
lcd.backlight();
pinMode(4, INPUT_PULLUP); // スイッチ用に入力に設定
pinMode(6, INPUT_PULLUP); // スイッチ用に入力に設定
pinMode(9, OUTPUT); // 出力に設定
pinMode(10, OUTPUT); // 出力に設定
}
void loop(){
char buf[20];
// Print a message to the LCD.
val0R = 1023-analogRead(0)+42; // アナログピンを読み取る
val0D = int( (val0R)/85);
val1 = analogRead(2); // アナログピンを読み取る
val2 = analogRead(3); // アナログピンを読み取る
vsw = digitalRead(4); // 入力ピンを読む
rsw = digitalRead(6); // 入力ピンを読む
sw = vsw + rsw*2;
// 得た2つのアナログ値を1/8して、0-1023の値を0-255に変換
pwm10 = val1/8 + val2/8;
if(pwm10>127) pwm10++; // 0-255の中で128を存在させない(笑
if( rsw == 0 ){
digitalWrite(9, LOW); // 正転
analogWrite(10, pwm10 );
}else{
analogWrite(9, pwm10 ); // 逆転
digitalWrite(10, LOW);
}
lcd.setCursor(0,0);
sprintf(buf,"0=%4d:1=%3x:M=%d",val0R,val1,sw);
lcd.print(buf);
lcd.setCursor(0,1);
sprintf(buf,"0= %2d:2=%3x:%3d",val0D,val2,pwm10);
lcd.print(buf);
delay(100);
}