Schuler wrote:
> mir ist noch nicht klar wie der array inhalt aussehen muss und wie ich
> dann zu bestimmter kombination den richtigen hinterlegten buchstabe
> sende.
Der Array Inhalt sind die zu versendenden Buchstaben.
Als Array Index verwendest du die Tastenkombination selbst.
Du hast also 6 Taster. Und ich gehe davon aus, dass diese
Taster gleichzeitig gedrückt werden sollen. Also nicht
wie bei einem Codeschloss hintereinander.
Jeder Taster kann entweder offen oder geschlossen sein.
Ist er offen, dann werten wir das einfach mal als 0, ist
er geschlossen dann wird das als 1 gewertet.
Für alle 6 Taster hintereinander aufgeschrieben wäre das
zb. 000000 mit der Bedeutung: alle Taster sind geöffnet.
000001 alle Taster bis auf Taster 1 sind geöffnet,
Taster 1 ist in der Tat geschlosssen
oder 010011 Taster 1 + 2 + 5 sind geschlossen;
Taster 3 + 4 + 6 sind offen
Soweit so gut, wenn ich jetzt mal alle Möglichkeiten
aufschriebe, so ergibt sich eine Tabelle
000000 alle offen
000001 1 geschlossen
000010 2 geschlossen
000011 1 + 2 geschlossen
000100 3 geschlossen
000101 3 + 1 geschlossen
000110 3 + 2 geschlossen
000111
001000
...
Hey. Das sind doch nichts anderes als Binärzahlen. Man kann also
jeder Tastenkombination eine eindeutige Zahl zuordnen. Ob man
die jetzt binär oder dezimal anschreibt ist Geschmackssache,
wichtig ist nur, dass es sie gibt, und dass diese Zahl ja nach
Stellung der Taster immer eindeutig ist
0 = 000000 alle offen
1 = 000001 1 geschlossen
2 = 000010 2 geschlossen
3 = 000011 1 + 2 geschlossen
4 = 000100 3 geschlossen
5 = 000101 3 + 1 geschlossen
6 = 000110 3 + 2 geschlossen
7 = 000111
8 = 001000
...
Mit 6 Tastern kann auf diese Art bis 63 zählen. Das heist
wenn du ein Array mit 64 Elementen bereitstellst, kannst du
ganz einfach mit der Zahl die sich durch die Tasterstellung
ergibt, in das Array indizieren und kriegst so den zu sendenden
Buchstaben.
1 | char CodeArray[64] =
|
2 | { 'A', // 0 = 000000 wenn keine Taste gedrückt
|
3 | 'B', // 1 = 000001
|
4 | 'C', // 2 = 000010
|
5 | 'D', // 3 = 000011
|
6 | 'E', // 4 = 000100
|
7 | 'F', // 5 = 000101
|
8 | 'G', // 6 = 000110
|
9 | .....
|
10 | 'x', // 61 = 111101
|
11 | 'y', // 62 = 111110
|
12 | 'z', // 63 = 111111
|
13 | };
|
Alles was du noch tun musst, ist aus den Tasten die entsprechende
Zahl zu bestimmen (jenachdem, wie die Tasten angeschlossen sind
kann das ganz banal und simpel sein) und mit dieser
Codezahl, dann aus dem Array den Buchstaben zu holen:
1 | uint8_t Code;
|
2 |
|
3 | Code = PIN..... // was auch immer notwendig ist um die Taster
|
4 | // stellung in eine 6 Bit Zahl zu bringen
|
5 |
|
6 |
|
7 | uint8_t UART_Character;
|
8 |
|
9 | UART_Character = CodeArray[ Code ];
|