0

これは、ハードウェアの制限があるプログラミングに関する質問です。「スマート」サーモスタットのリバース エンジニアリング/ハッキング プロジェクトに取り組んでいます。(これはそれほどスマートではありませんでしたが、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 ビット長の変数と、各文字を設定するための巨大なスイッチケース構造について考え始めましたが、他にもっと良い解決策があるはずです。

これを読んでくれてありがとう!

すべての提案を歓迎します。

4

1 に答える 1