Hallo,
Ich bin relativ neu im Bereich Arduino und C/C++. Habe mich aber schon in Grundlegende Sachen eingearbeitet. Nach einigem Bit-Banging bin ich nun vollkommen an meine Grenzen gekommen und brauche eure Hilfe / Rat.
Ich lese die Daten eines I2C Buses von einem AS1115 Chip aus, der steuert eine dreistellige 7-Segment-Anzeige an.
Die mir angezeigten Daten sehen so aus:
_A_
F| |B Bitfolge Binär X X X X X X X X
|_G_ | Bit Ausgabe DP A B C D E F G
| |
E|___ |C
D oDP
Bitfolgen mit Zahlenzurodnung (Unvollständige Auflistung):
0. = 0B1111 1110
- = 0B1011 0000
- = 0B1110 1101
3 = 0B0111 1001
4 = 0B0011 0011
5 = 0B0101 1011
6 = 0B0101 1111
7 = 0B0111 0000
8 = 0B0111 1111
9 = 0B0111 1011
Ich will in meinem Programm also die Bitfolge in eine Dezimal-Zahl wandeln, da ich aber Segmente (ABC…) auslese kann ich leider nicht direkt transferieren. Daher hatte ich die Idee es mit einem struct zu lösen, bin aber nicht sicher ob es geht. Ich wollte den struct mit meinen Bitfolgen füllen und dann vergleichen ob das erste Datenfeld (int Bitfolge) identisch ist mit meiner ausgelesenen Bitfolge ist. Wenn diese gleich ist soll die Zahl (int Zahl) weiter verwendet werden. An genau dieser Stelle komme ich nicht weiter, ich finde keine Anleitung oder ähnliches was mir die Suche innerhalb meines struct's erlaubt.
> typedef struct Bitfolge_zu_Zahlen {
> int Bitfolge;
> int Zahl;
> bool Punkt;
> }Bitfolge_zu_Zahlen;
>
> Bitfolge_zu_Zahlen Null_Punkt = {
> 0b11111110, // = 0.
> 0x00,
> 1};
>
> Bitfolge_zu_Zahlen Null_Punkt = {
> 0b10110000, // = 1.
> 0x01,
> 1};
>
> Bitfolge_zu_Zahlen Null_Punkt = {
> 0b11101101, // = 2.
> 0x02,
> 1};
Habt ihr evtl. einen Vorschlag oder einen link zu einem Tutorial, dass mir weiter hilft?
Grüße
Zippo