無料ブログはココログ

« Arduinoでもっと電子工作を5 | トップページ | Arduinoでもっと電子工作を7 »

2021年5月10日 (月)

Arduinoでもっと電子工作を6

Lesson5

C-Size DCC基板にはSPI通信用のスルーホールがあります。ミント缶と同じOLEDが使えますが、秋月電子にはSPIモード製品の取り扱いが無いので、TM1637ディスプレイドライバーを使って7セグLEDの表示を行います。TM1637のライブラリは、基板製作でお世話になっているSeeedStudioのDigitalTubeを利用しました。
サンプルコードに忠実に、TM1637クラス内の関数を使って初期化と表示を実行したら、簡単に7SegLED表示が出来ました。display()関数の第一パラメータBitAddrは0が最下位です。

Tm1637

ロープロファイルピン

秋月電子のArduino Nano Everyはピンヘッダーがハンダ付けされていないセミキットを使用します。別途ロープロファイルピンとソケットを購入して、高さを抑えて表示基板を重ねます。CサイズDCC基板には連結ピンヘッダ6/9/3をハンダ付け、LED基板のボトム面にロープロファイルソケットをハンダ付けして基板を重ねると、基板の間隔は16mmでした。単体のスペーサは高価なので14mmスペーサーセット(P-01861)を利用してナットセット(P-01885)で嵩上げしても良いかと思います。

Lowprofil

スケッチ

グローバル定義

//定義ファイルインクルード
#include "TM1637.h"

//I/Oポート番号定義
#define PIN_CLK 13
#define PIN_DIO 11

//TM1637ライブラリをクラス定義して初期化
TM1637 tm1637(PIN_CLK, PIN_DIO);

//グローバル変数定義
word gCount = 0;

unsigned long gPreviousL1 = 0; //Task Schedule

セットアップと実行

void setup() {
 tm1637.init();
 tm1637.set(BRIGHT_TYPICAL);
 
 gPreviousL1 = millis();
}

void loop() {
 if( millis() - gPreviousL1 > 1000) {
  //Reset task
  gPreviousL1 = millis();
  
  gCount++;
  if (gCount > 9999) {
   gCount = 0;
  }
  DisplayNum(gCount);
 }
}

7セグに表示する関数

// loop()から1秒毎に呼び出され、カウント値を4桁7セグLEDに表示します
void DisplayNum(word inCount)
{
 byte colval = inCount / 1000;
 
 tm1637.display(3, colval);
 colval = inCount % 1000;
 tm1637.display(2, colval / 100);
 colval = colval % 100;
 tm1637.display(1, colval / 10);
 tm1637.display(0, colval % 10);
}

« Arduinoでもっと電子工作を5 | トップページ | Arduinoでもっと電子工作を7 »

電子工作」カテゴリの記事

コメント

この記事へのコメントは終了しました。