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 検索しても結構な頻度で引っかって助かっている。なのでメモ的なことでも記事にしている。