Le Kit Freenove contient un clavier à 16 touches en quatre rangées et quatre colonnes.
![]() |
![]() |
On met le pin GPIO de la première range à zéro et on vérifie si on trouve un niveau 0 sur une des colonnes, dans quel cas on a trouvé la touche qui a été actionné. Sinon on essaie la même procédure avec la deuxième rangée, etc. Si on ne trouve aucune connexion, alors aucune touche a été poussée.
J'ai fait les connexions suivantes :
Row 1 | D7: GPIO 23 |
Row 2 | D6: GPIO 19 |
Row 3 | D5: GPIO 18 |
Row 4 | D0: GPIO 26 |
Col 1 | D4: GPIO 16 sur WROVER: GPIO 25 court-circuité avec D4 sur la carte CPU |
Col 2 | D3: GPIO 17 sur WROVER: GPIO 4 court-circuité avec D3 sur la carte CPU |
Col 3 | D2: GPIO 21 |
Col 4 | D1: GPIO 22 |
Analyser le clavier dans des intervalles de 100 ms et imprimer la touche qui a été pressée.
Attendre que la touche a été relâché avant d'imprimer le résultat. Ceci donne une seule valeur de touche pour chaque activation d'une touche.
Écrire une classe CircularBuffer qui implémente un tampon circulaire qui stocke les touches pressées. Ceci permet de lire le clavier d'une manière entièrement asynchrone (voir exercice 4).
La classe CircularBuffer doit être basé sur un tampon de 32 éléments avec les méthodes suivants :
Lire le clavier dans une routine d'interruption. Garder la touche pressée dans le tampon circulaire de l'exercice 3.
Écrire un programme de test qui démarre le pilote du clavier en interruption et qui lit du tampon circulaire les touches pressés. Utiliser les intervalles assez longs entre les lectures (p. e. 5-10 s).
I | Attachment | History | Action | Size | Date | Who | Comment |
---|---|---|---|---|---|---|---|
![]() |
4X4-Keypad-Schematic.png | r1 | manage | 14.6 K | 2021-12-08 - 20:05 | UliRaich | |
![]() |
keypad.png | r1 | manage | 115.6 K | 2021-12-08 - 20:05 | UliRaich |