Skocz do zawartości

Tablica liderów


Popularna zawartość

Pokazuje zawartość z najwyższą reputacją 18.11.2019 w Posty

  1. 1 punkt
    A mógłbyś zrobić taki debug. weź raz wywołaj funkcję, ale dodaj w jej wnętrzu trochę printów: char readKey() { for(int x = 0; x < NUM_ROWS; x++) { ekspander.digitalWrite(ROWS[x], HIGH); for(int y = 0; y < NUM_COLS; y++) { //if(ekspander.digitalRead(COLS[y]) == HIGH) return KEYS[x][y]; Serial.println(ekspander.digitalRead(COLS[y])); } ekspander.digitalWrite(ROWS[x], LOW); } return 0; } Tu jest kod dostępny w ramach artykułu, który kiedyś pisałem o tej samej tematyce, nie wiem wygląda podobnie. // główna pętla w której sprawdzane są kliknięcia void loop() { for(int iOutput = 0; iOutput < MATRIX_SIZE; ++iOutput){ // aktywuj sprawdzanie wiersza o indeksie iOutput digitalWrite(OUTPUTS[iOutput], LOW); for(int iInput = 0; iInput < MATRIX_SIZE; ++iInput){ // oblicz numer indeksu w macierzy wszystkich przycisków index = iOutput * MATRIX_SIZE + iInput; // jeżeli obecny stan jest LOW (przycisk wciśnięty) if((digitalRead(INPUTS[iInput]) == LOW)){ if(states[index] == KEY_RELESED){ // to wywołaj kliknięcie onPress(index); } // ustaw flagę żeby zadziałał zatrzask states[index] = KEY_PRESSED; } else if(states[index] == KEY_PRESSED) // zresetuj zatrzask w momencie puszczenia przycisku states[index] = KEY_RELESED; } // opuść linię aby przejść do następnej digitalWrite(OUTPUTS[iOutput], HIGH); } }
Tablica liderów jest ustawiona na Warszawa/GMT+01:00
×
×
  • Utwórz nowe...