無料ブログはココログ

« 2021年1月 | トップページ | 2021年5月 »

2021年4月

2021年4月30日 (金)

Arduinoでもっと電子工作を2

Lesson1

手始めは定番のLチカから。先ずは外部回路を使わずArduino Nanoボード単体で行います。

Lchika

グローバル定義

inoファイルの文頭にグローバル定義を記述します。I/Oポート番号はプログラムコード内で指定するよりも、ここで定義した方が分かり易く後の変更も楽です。プログラム全般で共有する変数も定義します。nano Everyの場合はレジスタエミュレーションを使うと、nanoと同じくD13で内蔵LEDを指定する事が出来ます。

#define NANO_LED 13

byte gFalshCount = 0;
byte gLED_State = 0;

//Task Schedule
unsigned long gPreviousL1;

セットアップ処理

void setup() {
 // put your setup code here, to run once:
 pinMode( NANO_LED, OUTPUT);
 
 gPreviousL1 = millis();
}

ループ処理

void loop() {
 // put your main code here, to run repeatedly:
 if( (millis() - gPreviousL1) > 100) {
  //Reset task
  gPreviousL1 = millis();

  gFalshCount++;
  if (gFalshCount > 4) {
   gLED_State ^= HIGH;
   digitalWrite(NANO_LED, gLED_State);
   gFalshCount = 0;
  }
 }
}

スケッチ書き込み

  1. USBケーブルでパソコンとArduino Nano Everyを接続
  2. ボードの[Arduino megaAVR Boards]の[Arduino Nano Every]を選択
    Resisters emulation:はATMEGA328を選択
  3. Arduino Nanoまたはその互換器の場合は
    ボードの[Arduino AVR Boards]の[Arduino Nano]を選択
    旧タイプのArduino Nanoはプロセッサーで[Old Bootloader]を選択
  4. シリアルポートを選択
  5. Update アイコンの「マイコンボードに書き込む」でスケッチを書き込む

※書き込まずにエラーチェックをするにはVerifyアイコンをクリックします。

※megaAVR Boardsボードの完成度?

ビルドしたバージョンは1.8.7ですが、以前のバージョンで制御が働かないIOピンがありました。Everyでビルドする場合は常に最新版にアップデートしておく事をお勧めします。

 

2021年4月10日 (土)

Arduinoでもっと電子工作を

プロローグ

Arduinoはイタリアの有志達が「非技術系の学生でもデジタル電子工作ができる」事を目的に始めたプロジェクトです。安価なハードウェアとシンプルな開発ソフト Arduino IDEで世界中に広まりました。Arduino IDEは無料ですが、ダウンロードの際は寄付も可能です。
twaydccでは手軽に電子工作を始めるために、秋月電子の部品だけで出来るC-Sizeの基板を作りました。MPUはArduino nanoです。DCCコントローラ用の設計ですが、鉄道模型に限定せず興味のあるテーマで電子工作を楽しんでみては如何でしょう。

Csizedccb_top

回路図、部品表はウェブページの3. C基板サイズDCCコントローラをご覧ください。

Arduino IDE 起動

Arduino IDEを起動して「新規ファイル」を実行するとsetup()とloop()が作られます。

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

  • setup()はマイコンを電源投入した時に一度だけ実行され、初期化等のコードを記述します
  • loop()は繰り返し実行されるプログラム本体と言えるもので、一般的にはmsec単位で実行間隔をコントロールします。

新規ファイルの保存

新規ファイル名は自動的に、私の場合"sketch_apr09a"で日付が使われました。IDEのバージョンで異なるかもしれません。ファイルを保存すると"sketch_apr09a"ホルダが作られ、その中に同名のinoファイルが保存されます。ArduinoではMPUに書き込むオブジェクトをスケッチと呼び、コンパイルやマイコンボードへの書き込みは「スケッチ」メニューから行います。

Lessonへ

次回からinoファイルにプログラムコードを記述して実際に動かしてみましょう。

 

2021年4月 4日 (日)

RailComでアドレス表示2

ミント缶専用RailComアドレスリーダー

DesktopStationさんのRailComDisplayを使う予定でしたが、自動運転にも使用するにはIICのデバイスモード切り替えが必要なので、独自にDIP部品で手作り出来る基板を作りました。

Addrreader_b

回路図

Addrreader_b_sch

NANDNORゲートは省略しましたが問題はなさそうです。念のためS88端子も付けましたが、スケッチは作っていません。

ミント缶HACXのスケッチを改変

HACXのスケッチは4桁アドレスの選択が困難なので、ミント缶IVで不評だったアドレス登録機能を復活させました。ATMEGAのフラッシュサイズの制約でアドレスリストは最大8まで、アドレス3は固定で追加出来るのは残りの7つです。ついでに「アドレス読み出し」と「アドレス書き込み」機能も追加しました。RailComm非対応の車両はアドレス読み出しでアドレスリストに登録する事も出来ます。

Home_20210404155701

RailCom出力

ミント缶の電源オン時のアドレスはディフォルトの3です。アドレスリーダー基板左端(ここ)のボタンを押すと、ミント缶にDCCカットアウトを要求して、RailCom出力を受信するとミント缶にアドレスを送ります。RailCom対応の車両を線路に乗せた状態でDCCカットアウトしてもアドレスが表示されないのは今だに謎ですが、アドレス3でダミーのファンクションを操作したら、キハ40のアドレスが表示されました。

Addr3_20210404155701Addr40

アドレスリスト

受信したアドレスはリストに追加します。アドレス書き込みで[ENT]ボタンを押してEEPROMに保存することも出来ますが、運転する車両を頻繁に変えるなら保存しないで毎回リストを作成しても良いでしょう。

« 2021年1月 | トップページ | 2021年5月 »