scanAsync improved

This commit is contained in:
Jean Jacques Avril 2021-09-29 22:31:05 +02:00
parent c65d505969
commit 69e6e69c77

View File

@ -67,41 +67,13 @@ void Keyboard::scanAsync()
/** Without delay - scanning only one column per cycle **/ /** Without delay - scanning only one column per cycle **/
if (millis() < _timeElapsed + this->_debounce) if (millis() < _timeElapsed + this->_debounce)
return; return;
uint8_t key = 0; uint8_t key = 4*_current_scan_col;
switch (_current_scan_col) scanColumn(&key, 1, 4);
{ pcf8574->digitalWrite(7-(_current_scan_col+1)%3, LOW);
default: pcf8574->digitalWrite(7-_current_scan_col, HIGH);
pcf8574->digitalWrite(7, LOW); _current_scan_col++;
_current_scan_col = 1; if(_current_scan_col>2)
break; _current_scan_col = 0;
case 1:
{
scanColumn(&key, 1, 4);
pcf8574->digitalWrite(6, LOW);
pcf8574->digitalWrite(7, HIGH);
_current_scan_col = 2;
break;
}
case 2:
{
key=4;
scanColumn(&key, 1, 4);
pcf8574->digitalWrite(5, LOW);
pcf8574->digitalWrite(6, HIGH);
_current_scan_col = 3;
break;
}
case 3:
{
key=8;
scanColumn(&key, 1, 4);
pcf8574->digitalWrite(7, LOW);
pcf8574->digitalWrite(5, HIGH);
_current_scan_col = 1;
break;
}
break;
}
} }
void Keyboard::scanColumn(uint8_t* key_ptr, uint8_t start, uint8_t stop){ void Keyboard::scanColumn(uint8_t* key_ptr, uint8_t start, uint8_t stop){