KATO パワーパック・スタンダードSの改造


Amazon で、25枚 \598というのを見つけ購入。なんと¥23.92/枚



こんな感じで、郵便物として送られてきました。




良く見ると、穴の位置が、スルーホールの中心にない(^^;




\23.92/枚だし、素材がヤワなので、ペンチで一部を切り取ると、
直線的に勝手に切れた(汗)

右上に見えるのは、I2C接続小型キャラクタLCDモジュール(8x2行)
なんと \320!!!



ハンダ付けしてみました。




このLCDディスプレイ、足が 1.5mmピッチで
普通の 2.54mmピッチじゃないから、さあ大変!




この大きさなら、KATO のスタンダードS に埋め込めそうですね!




大きさの違い。。。こんな感じ。
16x2はでかすぎて収納できない・・・かも(笑)


はよう、故障物件探してくださ~い > 某氏




スポンサーサイト



レイアウトプラン変更 L9



もともとの計画では、L字型の長いほうは 270cm を想定していたのだけれど、
メンテナンス性が悪いので、240cmに短縮を考え中。

そうすると、橙色部分の直線=駅予定 が短くなってしまう。。。

単純に30cm短縮版(270→240cm)か、幅を広く(90→120cm)するか…
さて、どっちだ!?

三平方の定理・・・

ポイントで 55cm 程度消費されてしまうので、

x=100cm, y=100cm → 141cm ≒6両編成ホーム
x=120cm, y= 75cm → 142cm ≒6両編成ホーム
x=150cm, y= 80cm → 170cm ≒8両編成ホーム

うーむ。8両編成捨てがたし!

幅を広くする案は効果がすくなかった。。。





鉄道模型 カーブ曲線

そもそも、KATO 製をベースにするのがいいのか?、という話があるのだけれど。
年始には、古い TOMIX のレールを手に入れることになるし…

レール~レール間幅
TOMIX :37mm
KATO :33mm
PECO :27mm
なのだとか。


まあ、いいっか。。。

というわけで座標表







5度ごとに、座標(x, y)を出してみた。

Excelは便利ですね~。。。

基本、x=半径 × cos θ、半径=r × sin θ ですからネ…。




【これで確実!】某氏のパソコン ぞくぞく到着!3





最後のパーツ、上段中央の CPUファン
虎徹 SCKTT-1000(\3,680) が届きました。

これは、ここ で予定していたものではなく、別のものです。

これで全てが揃いました。

某氏さん、今回 DVD/Blu-ray drive は未購入なので、
OS導入は個人的に手持ちのものを一時的に接続することになります。


さっさと組み上げたいところですが、ただいまテスト期間で、
とっとと組み上げて早く送り届けると、このPCが精神的な誘惑で
テスト結果が悲惨になるとのことなので(笑)、
しばらくは寝かせておきたいと思います・・・(嫌がらせにはもってこいですなw





記事タイトル、何が「これで確実!」なのかは、こちら を参照ください。


おかしい・・・2



自分の記事なのに、「最新の記事一覧」では見ることができない。。。

謎過ぎる。



「某氏のパソコン ぞくぞく到着!3」の記事、絶賛行方不明中!(汗



相変わらず、原因不明ですが「友達登録されているのみ」発症するようです(汗

私を含む友達登録されていない方は発症しないようです。






自家用車




車が嫌いな私ですが(^_^;、長年乗っていた車(トヨタ スパシオ)を買い替え。

結構長い間、横浜に住んでいたけれど、
なぜか、ナンバーは、横浜の前の居住地の 八王子ナンバー。。。


今日からは、日産 ノート です (^o^)/









某氏のパソコン ぞくぞく到着!2



某氏のパソコン 続々到着!

まあ、よくよく考えてみたら、変ですね。

パソコンの部品が、到着ですね。


今日は、Intel® Core™ i7-6700K が来ました!
そして、8GB x2 = 16GBも。

あとは、CPU FANだけですね!
(Intel 純正の CPU FAN は存在しないようです。)



KATOパワーパック・スタンダードSの借りモノ




某氏から KATO の スタンダードSを借りてきました~
MAXで、14.71V 出るぅ~(^^;




まあ、抵抗制御なので、
ここまで電圧を上げることは
ないと思いますが。。。

試しに、動かしてみました。
スムーズに動きますねぇ。。



ただ、当然、常点灯しません。



壊れたパワーパックを改造しようと思ったのですが、
壊れたパワーパックが手に入りませんでした。

さて、どうしましょう~


Arduino でNゲージコントローラーを(A1-11)




走る!キハ40

右上から
16桁2行 LCD
タッパーコントローラ(笑)

右下から
モータドライバ基板
Arduino互換自作基板①full Set
Arduino基板(青:osoyoo製)
Arduino互換自作基板②sub Set
Arduino互換自作基板③sub Set
Arduino互換自作基板④sub Set
Arduino互換自作基板⑤sub Set

壊れた KATO製パワーパック スタンダードSが近々入手できそうなので、
なんとかそれを改造してみようかな、みたいな。。。

これで三連休つぶれそう(笑)

いや、レイアウト作成せねば???だよなー



Arduino でNゲージコントローラーを(A1-10)


カトーちゃんの曲線と、無改造のフレキシブルレールで動かそうと思ってましたが
さすがに、固定しないでフレキシブルレールを使うのは無謀のようで。。。(苦笑



これを買っちゃいました(^^;

で、ユニトラック曲線線路だけで
構成、っと。

テスト路線のチェックが
終われば、カトちゃんの
パワーパックで動かすときでも
再利用しよう~!!!













というわけで、楕円形から ひょうたん型に変形!!!



ちゃんと、動きました~!!!

仮のソフトウェアでの動作なので、可変抵抗で加速減速。ノッチ機能無し!

ただ、なぜか、正転・逆転で、スピード感が違う。。何故だろう??
おかげで、常点灯がちょっと暗めだなぁ・・・謎っ。。。

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);
}











USBオーディオ キット完成!





なんだか、イモハンダっぽくなりつつも、ハンダ付け終了~。

フィルムコンデンサ以外を
ぜーんぶオーディオ用コンデンサに乗せ変えてみた(意味無し…)
大きさの都合上、両面実装に(苦笑)

USBに接続してみると…



お~、勝手にドライバを勝手に探しに行ってダウンロードしてる。。。




今回のキットは、"USB Audio DAC"なので、普段の再生デバイスから切り替え。

ヘッドフォン越しに聴いてみると・・・、
イモハンダで音が鳴らないかと思ったけど、ちゃんと両方から音が出た(笑)

意外にクリアな音(かもw)!!!



そうだ、ケース、どうしよう・・・


Arduino でNゲージコントローラーを(A1-9)




とりあえず、回路を変更し Vrefには、10KΩを経由して
+12Vを与えたら、無事12Vが出るようになりました!

上の黄色の波形が 5Vの PWM波形。
下の水色の波形が 12Vの波形。
(従来のパワーパックだと、電圧が0~12Vまで変化)

ちゃんと、+12Vになったり、-12Vになったりしてくれます(変な日本語だ)

さて、そろそろ走らせて見るかぁ???(^^)/




Arduino でNゲージコントローラーを(A1-8)



とうとう、モータードライバも接続!

PWMで動いてるぅ~・・・(^^)/




でも、良く見ると、
5Vしか出てないぞ・・・

TA7291Pの Vref 端子に、
PWM信号(5V)をいれると、
5Vで頭打ちらしい…(汗
Vs≒Vref にして、
IN1, IN2信号に PWM信号を
入れればいいみたい。




ってここで、ハマってるのは素人だなぁ。。。(汗

明日、回路変更しなきゃだわぁ~・・・

Arduino でNゲージコントローラーを(A1-7)





PWMピンを使って、出力してみた。。。とりあえず、LEDを光らせてみる。。。


んで、買ったばかりの(^o^)/ デジタルオシロ(TBS1052B)で波形を見ると…!

ちゃんと 490.045 Hz の波形が出てます(笑)

デジタルオシロ、マニュアルも見ずに波形は出せたが、
やっぱり、良く使い方が分らん(ぉぃ)
今度は、ちゃんとマニュアルを読もう(笑)


さて、次は、モータードライバをつないで、12Vを出力しましょう!!! ^o^/




<常点灯モード>

TOMIXの常点灯モード搭載の N-1000-CL と 常点灯対応の車両、
どうやら カトーちゃんとはあまり仲がよろしくないようで???

カトーちゃんのは、どうやらコアレスモーターとやらで、
パルス幅が小さくても動いちゃう模様。。。

ということは、タッパーコントローラーの試運転のために、
TOMIXのキハ40に続き、カトーちゃんの何かを買う必要が出てきた、って
ことかぁ・・・



Arduino でNゲージコントローラーを(A1-6)



液晶+Arduino+タッパーコントローラ、接続完了!

"0= 468":タッパーコントローラ右の12段階ロータリスイッチのアナログ値
"0=     5":タッパーコントローラ右の12段階ロータリスイッチ(0~11変換)
"1=   0":常点灯ボリュームのアナログ値
"2=   0":加速ボリュームのアナログ値
"4=n":On/Offの On/Off 表示
"5=<":進行方向 <-/->

明日から PWM制御かっ!?



Arduino でNゲージコントローラーを(A1-5)



テスト用のレールを置く。
R282-45 + フレキシブルレールの単線楕円の単純なパターン。

目標は、今月中に、Arduino コントローラで、なんとなく 走らせること!




Arduino でNゲージコントローラーを(A1-4)



タッパーコントローラ(仮の名)は、やっぱ 見た目がダサい(汗

左下は 自作arduino de Train コントローラ(max 2controllerを予定)、
右下は モータードライバー(max 8chを予定)

なかなか動かすところまでたどりつきません(汗


Arduino/鉄道模型用 のケーブル



フラットケーブル(すだれタイプ:10心:AWG28)をリールで大人買い(^^)
フジクラ製です。(made in japan!たぶんw)

某氏のパソコン(2)

メモリを DDR4 から DDR3 に変更。1万下がった。。


部品 メーカー 型番 費用(税抜)Note
ケース ENERMAXFulmo_Q_ECA3360B-BT(U3) 3,686
電源 AOpen KRPW-N600W/85+ 6,186
マザーボードASRock H170 Combo 14,557 memory 6 slot
CPU INTEL Intel CPU Core i7-6700K 43,216 Socket LGA1151
CPU FANScytheKABUTO II (兜2) SCKBT-2000 3,681
MEMORY Team TED316G1600C11DC 9,980 DDR3 PC3-12800 8GBx2
OS Microsoft DSP版Windows10 64bit13,750 Home x64
SSD SanDisk SDSSDA-240G-J25C 9,780 240GB
DVD LGエレクトロニクス GH24NS95 WH -,--- OS install用
HDD 0
keyboard 0
mouse 0
104,836 合計
113,223 消費税込
Video-card Palit GeForce GTX960 OC 22,204 (税抜き)

某氏のパソコン



部品 メーカー 型番 費用 Note
ケース AOpen H360G-300WT 6,872
CPU AMD (中古) FX-8150 12,900 Socket AM3+ (8Core)
マザーボードASRock M5A78L-M LX PLUS 6,980 memory 2 slot
DVD LGエレクトロニクス GH24NS95 WH 1,790 OS install用
MEMORY Silicon Power SP008GBLTU133V21 6,480 PC3-10600 8GB(4GBx2)
OS Microsoft DSP版Windows7 11,480 Home x64
HDD 0 1TB
keyboard 0
mouse 0
46,502 合計

ベンチマーク上、AMD FX 8150(8 core CPU) っていうのは、Intel でいうと i5-3470 に相当する。


バイトでお金持ちになられたらしく(笑)、そして、PCの調子が悪いということで、
新たなPCを作成したいとのお話しが。。。

どうやら、全部、交換らしい(さすが金持ちw)。


部品 メーカー 型番 費用(税抜)Note
ケース ENERMAXFulmo_Q_ECA3360B-BT(U3) 3,686
電源 AOpen KRPW-N600W/85+ 6,186
マザーボードASUS ASUSTeK_Z170-A 19,838 memory 4 slot
CPU INTEL Intel CPU Core i7-6700K 43,216 Socket LGA1151
CPU FANScytheKABUTO II (兜2) SCKBT-2000 3,681
MEMORY Crucial CT2K8G4DFD8213 13,871 DDR4 PC4-17000 16GB(8GBx2)
OS Microsoft DSP版Windows10 64bit13,750 Home x64
DVD LGエレクトロニクス GH24NS95 WH -,--- OS install用
SSD SanDisk SDSSDA-240G-J25C 9,780 240GB
HDD 0
keyboard 0
mouse 0
114,008 合計
123,129 消費税込
Video-card Palit GeForce GTX960 OC 22,204 (税抜き)

Arduino でNゲージコントローラーを(A1-3)




コントローラ用の
なんちゃってケース

位置重視で
変なところに
穴を開けたものだから
真ん中のボリュームが
傾いちゃったわ~(汗

平坦なところに
穴を開けるべき
だったわ~
失敗、失敗(^^;





78円/5個な
タッパーなので、
1個 15.6円なのは
ご愛嬌。厚みが
ペラッペラです(汗

横から見ると、
こんな感じ。
(配線してません)

下の基板は、
Arduino 2号機です。




これでも、Nゲージコントローラ(かも)です。

電源ON/OFF、方向反転用のスイッチがさらに必要ですな。


最終的には、

http://akizukidenshi.com/img/goods/4/P-00277.JPGhttp://akizukidenshi.com/img/goods/4/P-09534.jpg
こんなプラケース
\120や

こんなアルミケース
\510


にしたいところですね!

※写真は秋月電子さんの画像を拝借しています。
 秋月電子さんサイトからの直接引用表示なので、
 ↑の写真が消えて表示されていない場合、元サイトのデータが消えています。 





Arduino でNゲージコントローラーを(A1-2)

前記事の 可変抵抗(VR)や、12接点のロータリースイッチ(RO-SW)だけを
簡易的に組み立ててみました。






上2つの小さなボリュームは、
常点灯調整用だったり、
加速度調整用だったり、
下の大きなのは
ノッチ式コントローラ用とか、
まぁ、いろいろです。






安定して使えるようになった
LCDを使ってのテスト。

ATMEGA328P-PUの
アナログ 0~2chに
上のボリューム類を割り当て
数字を表示しているところ。

A/Dコンバータは、
0~1023(0~3FFh)まで
値をとることが出来ます。

0ch : 大きいロータリースイッチ
1ch,2ch : 小さいボリューム(可変抵抗)

0ch=aaaa:1ch=bbb
0ch=  cc:2ch=ddd

aaaa : 0ch のA/Dコンバータ値(10進)
bbb : 1ch のA/Dコンバータ値(16進)
cc : 0ch のA/Dコンバータ値を 0~11に変換したもの
ddd : 2ch のA/Dコンバータ値(16進)


test用プログラム


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // set the LCD address

int val0R = 0;           // 読み取った値を格納する変数
int val0D = 0;           // 読み取った値を格納する変数
int val1 = 1;           // 読み取った値を格納する変数
int val2 = 2;           // 読み取った値を格納する変数

void setup()
{
  lcd.init();                      // initialize the lcd
  lcd.backlight();
}

void loop(){
  char buf[20];
 
  // Print a message to the LCD.

  val0R = analogRead(0);    // アナログピンを読み取る
  val0D = int( (val0R-42)/85);

  val1 = analogRead(1);    // アナログピンを読み取る

  val2 = analogRead(2);    // アナログピンを読み取る

  lcd.setCursor(0,0);
  sprintf(buf,"0ch=%4d:1ch=%3x",val0R,val1);
  lcd.print(buf);
  lcd.setCursor(0,1);
  sprintf(buf,"0ch=  %2d:2ch=%3x",val0D,val2);
  lcd.print(buf);
  delay(500);
}



つぎは、いよいよ PWMですかね~!?

Arduino でNゲージコントローラーを(A1-1)

なんとなくベースとなる環境が解決したので、
早速、Nゲージコントローラを作成することに。。。


ATMEGA328Pは、PWMを 6個持っているので、
4個くらいコントロールできるといいなぁ~、なんて思ったのですが、
いろいろ考えると、2個しか入らない・・・。
まあ、これだけで動かすんなら 4個入りそうだけど・・・、
ゆくゆくは ATS にしたいのでね。





Arduino で Arduino を複製する


この記事は、ここ を参考にさせて頂きました。
ここ の記事では、ARDUINO 1.6.3 を使っています。


この記事は、ARDUINO 1.6.4 を使った記事です。

準備するものは、
・Arduino Uno ボード
optifix.zip
・ブレッドボード&ジャンパーケーブル少々

ファイルの修正の準備

ダウンロードした optifix.zip ファイルを適当なフォルダーに展開します。

もし、エディタを持っているならば、行表示をしましょう。
持っていなければ、ArduinoIDEで読み込んでもOKです。
ArduinoIDE の設定を変えて、行表示をしましょう。

ファイル>環境設定>

[レ] 行表示の

なぜか、行表示"の"  となってますが、こいつにチェック [レ]を入れると、
テキスト表示の左端に行が表示されます。

ファイルの修正

optiLoadrer.h ファイル


◆1行目

#include <WProgram.h>

#include <Arduino.h>


◆19行目

extern image_t PROGMEM image_328;

extern const PROGMEM image_t image_328;


◆73, 74行目

image_t *images[] = {
  &image_328, 0

image_t *images[] = {
  const_cast<image_t*>(&image_328), 0


◆572行目

image_t PROGMEM image_328 = {

const PROGMEM image_t image_328 = {


配線

5V(電源)を除き、接続します。5Vは別のタイミングで接続します。

1. ArduinoUnoボードの DIGITAL "10" 書き込む ATMEGA328P-PU の1ピンへ
2. ArduinoUnoボードの DIGITAL "11" を 書き込む ATMEGA328P-PU の17ピンへ
3. ArduinoUnoボードの DIGITAL "12" を 書き込む ATMEGA328P-PU の18ピンへ
4. ArduinoUnoボードの DIGITAL "13" を 書き込む ATMEGA328P-PU の19ピンへ
5. ArduinoUnoボードの POWER "GND" を 書き込む ATMEGA328P-PU の8ピンへ
6. ArduinoUnoボードの POWER "GND" を 書き込む ATMEGA328P-PU の22ピンへ

ちなみに DIP の ICピンの見方は、上から見て

28...........~........15
 ________________
|                             |
⊃                            |
|o_______________|
 
1.............~........14

です。

※左下の○ポチから左回りで、1ピンから番号が振られてます。


PC接続

③の6本が接続できたら、ArduinoUnoボードをPCに接続します。


シリアルモニタ準備

ツール>シリアルモニタ

で、シリアルモニタを開きます。

シリアルモニタの通信速度を 19200bps に設定します。

※ 通信速度の変更は ここ の ④-3 を参考にしてください。

Arduino ボードに書き込む

②で修正したファイルを Arduino Unoボードに書き込みます。


シリアルモニタを覗く

| Reading signature: Bad value: 0
| (no target attached?)
|
| Type 'G' or hit RESET for next chip

と表示されてたら準備OKです。


5Vを接続

ここで 5Vを接続します。
5V端子は1つしかないので、ブレッドボードに一旦接続して、
そこから、7ピンと20ピンに供給するようにしておき、
1刺しで2つのピンに供給できるようにしておきましょう。

1. ArduinoUnoボードの POWER "5V" を 書き込む ATMEGA328P-PU の7ピンへ
2. ArduinoUnoボードの POWER "5V" を 書き込む ATMEGA328P-PU の20ピンへ


"G" の送信






大文字の "G" をシリアルモニタの入力ウインドウに入力し[送信]ボタンを押します。

イロイロ表示されて、

| Lock: F FFE000
|
| Type 'G' or hit RESET for next chip

と表示されたら完成です。

ちなみに、もう一度 "G" をやってもNGです。
一回っきりの一発勝負!です。祈りながら "G" & [送信] を行ってください。


USBケーブルを引っこ抜く

⑨で書き込み完了しているはずですので、USBケーブルを外して、
ArduinoUnoボード&新ATMEGA328P-PUの全ての電源を落とします。


お試し

ArduinoUnoボードの ATMEGA328P-PUを抜きます。
精密ドライバのマイナスドライバなどで、左右から少しずつ持ち上げて
ICを引っこ抜きます。

   ________________
  |                             |
 →⊃                            |←
  |o_______________|

ドライバを差し込んで、少しずつテコの原理で持ち上げます。

新しい ATMEGA328P-PUを差し込みます。
新しいICは、足が開き気味なので、さす前にテーブルなどを使って
全ての足を揃えて内側に曲げます。
この曲げがオカシイと、ICソケットに刺したときに、
刺さらずに足がグニャリと曲がってしまいます。
そんなときは、あせらずに抜いて、足を伸ばしましょう(^^;

グニャリとしてしまった足は何度もグニャグニャすると
金属疲労で折れてしまいますので、なるだけ使わないように、
永久刺しで使ってください(^_^;

テストプログラムで arduinoボード上の LED が Blink すれば
確認完了です。→ これ を参考にどうぞ。




Arduino で LCD を表示させる!


なんか、調子悪いんですよ。付属品の LCD。


妙に安定性が悪い。
表示するまでに時間が掛かったり、まったく表示しなかったり。
ドライバーのせいなのかと思ったり。



LCD を osoyoo Web に従い導入してみる。

Step 1: Download LiquidCrystal_I2C.zip library file and Install I2C library:

ここで LiquidCrystal_I2C ライブラリを導入するように指示がでるのだが…

標準ライブラリ(場所的には追加部分にあるのだけれど)から
どうやっても消えないので追加作業ができない…。

結論から言って、ARDUINO 1.6.4 には、標準で、LiquidCrystal_I2Cのライブラリが導入されている模様。



ライブラリを追加する前にすでにある。。
消す作業をするも消えない。。。

Step 2 – Connect LCD with Arduino

結線せよ、との指示。


↑この画像は、osoyoo web の画像をそのまま表示させています。
 消えている場合は、osoyoo の画像が消えてます。

Step 3 – Power up your devices.

まあ、電源いれてみそ、と。

背面のボリューム抵抗をプラスドライバーで回して適切な明るさにしなさい、と。

Step 4 – find the I2C address

この LCDのアドレスを調査せよ、との指示。
ic2_scanner sketch file (テキストファイル)をダウンロードし、ArduinoIDE に丸ごとコピペします。


ベースの setup, loopを消し、




















貼り付け。

④-1 ボードに書き込む。

これを(レ)→(⇒)で Arduinoボードに書き込む。

④-2 コンソールを表示させる。

ツール>シリアルモニタ



④-3 アドレス発見!

スキャンプログラムは書き込み後、ずっと動き続けるので、焦らずに・・・。



もし文字化けしていたら、右下の ***** bps(上のキャプチャだと 19200bps)を9600bpsにすると、以下のような感じで表示されます。



手持ちの I2C デバイスのアドレスは、0x3F ということがわかりました。

もし、うまくいかなければ、一番下の<おまけ>を参照!

Step 5 - Fire up the LCD

ic2_lcd_test sketch file をダウンロードし、ArduinoIDEに読み込ませます。

ファイル>開く... で、ic2_lcd_test.ino を読み込ませると、
フォルダーを作ってよいかと聞かれるので yes とします。



9行目に、

LiquidCrystal_I2C lcd(0x27,16,2);

というのがあります。この 0x27 を④で調べたアドレスに書き換えます。



で、(レ)→(⇒)で、Arduinoボードに書き込むと。。。




無事表示されました!


もし、うまくいかなければ、
次の<おまけ>を参照!










<おまけ>

ところが、ここまでが長い道のりで、なかなか表示されない。

どうやっても表示が遅かったり、まったく表示しなかったり・・・
ちょっと触るだけで表示が変になったり、文字化けしたり・・・
背面のボリュームを触ったりしても表示がおかしくなる・・・

LCDのどこかが接触不良っぽい・・・、ということで、LCDを眺めた結果・・・



LCD基盤は、2枚から成り、大きい方は、16x2のLCDがついている本体。
もう1枚の小さいほうは、I2Cを構成する、変換基盤。これは、4ピンで
これだけを Arduino に接続するとLCDを制御できる、ってもの。

これをよく見ると、SDA, SCL 端子が、下のチップと接触しているような(汗

さっそく、間に紙をはさんで絶縁してみる。。



わぉ!
完璧な動きだわ・・・(苦笑)





















ついでに、自作の
Arduino互換でも、完璧だわ。

叩いたり、揺らしたりしても
全然動じない!!!








2015/11/03 追記



何を間に挟むかで悩んだ結果、新品のYシャツなどの襟元に型崩れを防止する
透明なプラ板が、なかなかイイ感じの厚みで、これを適度に切り刻んで、
差し込みました。

挟んだだけですが外れもせず(つまり接触してたってこと)
十分実用に耐えそうです。



Arduino で LED を点滅させて遊ぶ

arduino の話しをちょっと真面目に書いてみます。

まず、osoyoo 製 Arduino買った

コレを買ったのは、セット内容が充実してたから。
その割りに、付属品は使わずに、ほとんどを秋月電子で買ってもーた(笑)

・Arduino R3 互換ボード1個
・USBケーブル1本

・CMOS-IC 74HC595 シフトレジスター1個
・1602 16×2 LCD キャラクタ ディスプレイ1個
・4桁LEDデジタル表示管(通称:7セグx4桁)1個
・1桁LEDデジタル表示管
(通称:7セグx1桁)1個
・LED4色24個 タクトスイッチ10個
・温度センサー1個
・傾斜センサー1個
・ステッピングモーター&ドライバ1セット
・マイクロサーボ 1個
・DC5V ブザー1個
・赤外線リモコン1個
・赤外線レシーバー1個
・光センサー6個
・10KΩ可変抵抗器3個
・200オーム抵抗20本
・1Kオーム抵抗20本
・10Kオーム抵抗20本
・1Mオーム抵抗5本
・10cm ジャンパワイヤ(オス~オス)40本
・20ピン20cmジャンパワイヤ(オス~オス)1本
・4ピン20cmジャンパワイヤ(メス~メス)2本
・8ピン20cmジャンパワイヤ(メス~メス)1本
・ブレッドボード1個


ただ、こいつには、ソフト関連が一切添付されてない。
ソフトは、ここから download してくることになる。

現在の最新版は、ARDUINO 1.6.5 なのだが、
なぜかスケッチのコンパイルがエラーしてしまう。

調べるのが面倒なので(ぉぃ)、ひとつ古い ARDUINO 1.6.4
download して使う。


ためしに、登録済みのプログラムを使ってみる。

①ソースファイルを読み込む。

ファイル>スケッチの例>01.Basics>Blink

②接続環境を整える。

未接続状態だと、
ツール>ポート
は空白になっている。




arduino の USBドライバーが入っていると、
PC~USBケーブル~Arduinoと接続すると、COMx を認識します。

xは、数字が入る。
この数字は、「コンピューターの管理」でも見て取れます。



↑の場合は、COM5 ですネ。



ツール>ポート>"COMx" を選択します。

で、例の Blink を使ってお試し。

③ソースファイルの検証(コンパイル)を行う。



左上の (レ)アイコンをクリックします。
なにやら動いて、



コンパイル完了(検証完了)となります。

何らかの原因で検証が不完全だと、赤地に白文字でエラーが出ます。



最後の行、わざと delay()の " )"を削ってみた(笑)。

④Arduinoに書き込む。



(レ)の右横にある、(⇒)アイコンをクリックすると、
マイコンボードに書き込みを開始します。



書き込みが完了すると、書き込み完了のメッセージが出ます。

何らかの原因で書き込みが出来ないと、赤地に白文字でエラーが出ます。



わざと、USB接続をはずして書き込んでみた(^^;

⑤Arduinoでイロイロお試し。

Arduino オンボードでできることは限られるので、その中の範囲で。。。

お試しプログラム blink の中にある

  delay(1000);              // wait for a second

こいつは、delay関数です。
効能は、
Pauses the program for the amount of time (in miliseconds) specified as parameter. (There are 1000 milliseconds in a second.)
うわ。英語だ(笑)
日本語に意訳すると、
「プログラムを指定した時間(単位はミリ秒(ms))だけ止めます。1秒は、1000ms です。」
たぶん、こんな感じです。仕事でもこんな感じで済ませてます(ぉぃ


従って、delay(1000)というのは、この行で1秒止まる、ということ。


なので、この 1000の数字を変えると、いろいろな点滅が楽しめます(笑)

  digitalWrite(13, HIGH);       // LEDを光らせる
  delay(1000);                      // 1秒待ち
  digitalWrite(13, LOW);        // LEDを消灯
  delay(1000);                      // 1秒待ち

となっていて「1秒点灯+1秒消灯」の繰り返しになっているので、
2箇所を500にすると、「0.5秒点灯+0.5秒消灯」の点滅
2000, 250 にすると、「2秒点灯+250m秒消灯」の点滅になります。

こんな感じ(↓)にすると、三三七拍子っぽい点滅になります(笑)
だらだら ON/OFFを羅列してもよかったのですが、
for 文を使って、ちょっとだけ、それらしいプログラムに改造(爆)

void loop() {
  int i,j;

  for(j=0;j<2;j++){              // 4拍子を2回
    for(i=0;i<3;i++){             // 三拍分
      digitalWrite(13, HIGH);   // 点灯
      delay(250);                    // 250ms 点灯(一拍)
      digitalWrite(13, LOW);    // 消灯
      delay(250);                    // 250ms 消灯
    }
    delay(750);                     // 250ms消灯+500ms(一拍)消灯
  }
  for(i=0;i<7;i++){              // 七拍分
    digitalWrite(13, HIGH);     // 点灯
    delay(250);                     //  250ms点灯
    digitalWrite(13, LOW);     // 消灯
    delay(250);                     // 250ms消灯
  }
  delay(750);              // 250ms消灯+500ms(一拍)消灯
}

というわけで、arduino ボード上の LED が点滅できることは簡単に出来ました!


ところが、osoyoo の 1602 LCD の動きが非常に怪しい。
動作が不安定すぎる
たぶん、これは osoyoo の 1602 LCD の問題のような気がする。
(ググって見ても、I2Cは脱落者多数の模様(爆))
この話しはまた別の話。


プロフィール

hiro989

Author:hiro989
FC2ブログへようこそ!

月別アーカイブ

検索フォーム

ブロとも申請フォーム

QRコード

QR