mbed で MAX7219 + 8桁7セグメントLEDを使う

ebayで約200円で売られている、MAX7219 + 8桁7セグメントLEDを mbed で動かした。

SPIで制御するのだけど、MISO は必要なく、繋ぐ線は

  • (mbed) MOSI -> (MAX7219) DIN
  • (mbed) SCK -> (MAX7219) CLK
  • (mbed) CS -> (MAX7219) CS

の3本で良い。

オフィシャルが提供している mbed のライブラリコードを使う場合、全桁自分で制御する (decode_mode が 0x00) 前提でコードを書く必要がある。

例えば全桁 - (マイナス)表示をしたい場合は

Max7219 max7219(MOSI, NC, SCK, CS);

max7219_configuration_t cfg = {
  .device_number = 1,
  .decode_mode = 0xFF,
  .intensity = Max7219::MAX7219_INTENSITY_7,
  .scan_limit = Max7219::MAX7219_SCAN_8
};

max7219.init_device(cfg);
max7219.enable_device(1);

max7219.clear_display_test();
for(uint8_t i = 1; i < 9; i++) {
  max7219.write_digit(1, i, 0b1010 /* minus */);
}

のように書く必要があって面倒。

ではシンプルに実現してるので、mbed で動くように移植してみた(cho45 さんから許可いただきました)。

SPI spi(MOSI, NC, CLK);
MAX7219 max7219(spi, CS);
max7219.begin();
max7219.print("-1234.567");

3.3V で動くのか

そもそも MAX7219 は仕様書によると電源電圧が 4V~5.5V、 ロジックの HI が MIN 3.5V だったので 3.3Vを電源とするmbedと同じ3.3V電源で動かないと思ってたんだけど動いてしまった。

また、MAX7219 のICの価格が、digikey だと8$ほどするけど、ebay だと LED 込みで2$しない価格で安すぎる…。B級品なのかコピー品なのか。

組み込み関係の事をブログ記事を書くこと

↑で触れてる lowreal.net の影響が大きくて。組み込み開発に興味無かったときは、エントリーを読んでも理解できなかったんだけど、今は大変参考になるし、Google 検索しても結構な頻度で引っかって助かっている。なのでメモ的なことでも記事にしている。