これは、ハードウェアの制限があるプログラミングに関する質問です。「スマート」サーモスタットのリバース エンジニアリング/ハッキング プロジェクトに取り組んでいます。(これはそれほどスマートではありませんでしたが、MQTT トラフィックを処理できるようになります。)
私の問題は、内蔵の LED マトリックス ディスプレイにあります。5 つの 7 つのセグメントがあり、そのうちの 2 つには DP もあり、ディスプレイ全体に 19 のアイコンがあります。
通常、次のように表示を解決します。
#define MAKE_BINARY(a,b,c,d,e,f,g,h) (((a)<<7)|(b)<<6)|((c)<<5)|((d)<<4)|((e)<<3|((f)<<2)|((g<<1)|h))
static unsigned char int_to_7leds [] = {
MAKE_BINARY (0,0,0,0,0,0,1,1), // 0
MAKE_BINARY (1,0,0,1,1,1,1,1), // 1
MAKE_BINARY (0,0,1,0,0,1,0,1), // 2
MAKE_BINARY (0,0,0,0,1,1,0,1), // 3
MAKE_BINARY (1,0,0,1,1,0,0,1), // 4
MAKE_BINARY (0,1,0,0,1,0,0,1), // 5
MAKE_BINARY (0,1,0,0,0,0,0,1), // 6
MAKE_BINARY (0,0,0,1,1,1,1,1), // 7
MAKE_BINARY (0,0,0,0,0,0,0,1), // 8
MAKE_BINARY (0,0,0,0,1,0,0,1), // 9
ただし、これには少し問題があります。ボードには 5 つの 74HC595 シフト レジスタがあり、次のように LED に接続されています。
これは、設計時に通常やりたいことではありません。少なくとも、8 ビット (1 SR) / 7 セグメントのように維持し、最後に残りの処理を行うようにしています。
すでに述べたように、これは純粋なハッキングであり、元のコードや回路図はありません。7バイトを操作して次のように分解する方法について、助けを求めたいと思います。
- 5文字
- 他のすべてを設定するための 21 個のブール変数
私は 56 ビット長の変数と、各文字を設定するための巨大なスイッチケース構造について考え始めましたが、他にもっと良い解決策があるはずです。
これを読んでくれてありがとう!
すべての提案を歓迎します。