Hallo Achim,
dein Code:
CodeBox C
0xF1 = 0b11110001
Das Argument wird wahr, wenn Bits 7..4 oder 0 high sind,
also im Moment wahrscheinlich immer.
So müsstest du abfragen (Beispiele) ...
CodeBox C
Alternative zu diesem Argument:
(so hast du es in deinem Code gelöst, allerdings nun den ~ Operator vergessen und die Konstante nicht richtig)
CodeBox C
~ binär 1er Komplement Operator (alle Bits werden invertiert)
(ich bevorzuge die Schreibweise mit !)
Dirk
Ich denke der Fehler liegt an dem Argument der if-Anweisung, an der Konstanten.
dein Code:
CodeBox C
if (i2c_read_buffer[0] & 0xf1) // Taster gedrückt
0xF1 = 0b11110001
Das Argument wird wahr, wenn Bits 7..4 oder 0 high sind,
also im Moment wahrscheinlich immer.
So müsstest du abfragen (Beispiele) ...
CodeBox C
// Aktuell bei dir Taster an Input Bit 2: if (!(i2c_read_buffer[0] & (1<<2))) // Taster Input Bit 2 gegen GND // Taster an anderen Pins: if (!(i2c_read_buffer[0] & (1<<0))) // Taster Input Bit 0 gegen GND if (!(i2c_read_buffer[0] & (1<<1))) // Taster Input Bit 1 gegen GND ... if (!(i2c_read_buffer[0] & (1<<7))) // Taster Input Bit 7 gegen GND
Alternative zu diesem Argument:
(so hast du es in deinem Code gelöst, allerdings nun den ~ Operator vergessen und die Konstante nicht richtig)
CodeBox C
if (~meinbuffer[0] & 0x02) // oder if (~meinbuffer[0] & (1<<2))
~ binär 1er Komplement Operator (alle Bits werden invertiert)
(ich bevorzuge die Schreibweise mit !)
Dirk