Hi matze1,
solange eine Taste gedrückt wird, enthält pressedKeyNumber die Nummer der Taste und releasedKeyNumber 0.
Solange keine Taste gedrückt wird, enthält pressedKeyNumber 0 und releasedKeyNumber die Nummer der zuletzt gedrückten Taste.
Eine Abfrageschleife kann z.B. so aussehen:
Code:uint8_t last_releasedKeyNumber; /** * M32 key state changed */ void keyStateChanged(void) { writeString_P_WIFI("\n\n===> key state changed!!!\n"); writeString_P_WIFI("ADC_KEYPAD value: "); writeInteger_WIFI(adcKeypad, DEC); writeChar_WIFI('\n'); writeString_P_WIFI("Key is pressed: "); if(interrupt_M32status.keypressed) writeString_P_WIFI("Yes\n"); else writeString_P_WIFI("No\n"); writeString_P_WIFI("[Last rel. key number: "); writeInteger_WIFI(last_releasedKeyNumber, DEC); writeString_P_WIFI("]\nReleased key number: "); writeInteger_WIFI(releasedKeyNumber, DEC); writeChar_WIFI('\n'); last_releasedKeyNumber = releasedKeyNumber; writeString_P_WIFI("Pressed key number: "); writeInteger_WIFI(pressedKeyNumber, DEC); writeChar_WIFI('\n'); writeChar_WIFI('\n'); } uint8_t regM32Buf[4]; while(true) { task_checkPCINT15(); // RP6 M32 main task if(interrupt_M32status.keyChange) { I2CTWI_readRegisters(I2C_RP6_M32_ADR, I2C_REG_ADC_KEYPAD_L, regM32Buf, 4); adcKeypad = regM32Buf[0] + (regM32Buf[1]<<8); releasedKeyNumber = regM32Buf[2]; pressedKeyNumber = regM32Buf[3]; keyStateChanged(); } task_I2CTWI(); }







Zitieren

Lesezeichen