Dans ce tutoriel on va voir comment manipuler la clavier matriciel 4×4 par la carte ESP32. Si une touche du clavier matriciel 4×4 est pressée, le caractère associé s’affiche dans l’afficheur SSD1306.
Carte ESP32
ESP32 est une carte de développement électronique basée sur le microcontrôleur ESP32 de la société Espressif. Il s’agit d’un microcontrôleur à double cœur avec un processeur principal Xtensa LX6 et un processeur secondaire dedié au traitement du signal. La carte ESP32 est conçue pour être utilisée dans les applications IoT (Internet des objets) et comprend une variété de fonctionnalités pour faciliter la communication avec d’autres dispositifs et l’accès à Internet.
Voici quelques-unes des principales caractéristiques de la carte ESP32 :
clavier matriciel 4×4
Un clavier matriciel 4×4 est un type de clavier qui utilise une grille de 4 colonnes et 4 lignes de touches pour entrer des données. Chaque touche est associée à une combinaison unique de lignes et de colonnes, ce qui permet de détecter la touche appuyée en mesurant la résistance entre les lignes et les colonnes.
Les claviers matriciels 4×4 sont couramment utilisés dans les applications où il est nécessaire de conserver de l’espace, comme les télécommandes, les appareils électroniques portables et les dispositifs de contrôle industriels. Ils sont également souvent utilisés dans les projets de loisir et de bricolage, comme les projets de robotique et de domotique.
L’afficheur SSD1306 est un type d’afficheur OLED (Organic Light Emitting Diode) utilisé dans de nombreux projets électroniques pour afficher des données de manière visible. Il est souvent utilisé dans les projets de domotique, de robotique et de gadgets électroniques portables.
L’afficheur SSD1306 est caractérisé par sa résolution de 128×64 pixels, ce qui en fait un choix populaire pour afficher des messages, des images et des données de petite taille. Il est également connu pour sa faible consommation d’énergie et sa faible luminosité, ce qui le rend idéal pour les projets qui nécessitent une faible consommation d’énergie ou qui sont utilisés dans des conditions de faible luminosité.
Il est généralement utilisé avec un microcontrôleur ou un ordinateur pour envoyer des données à l’afficheur et les afficher. Il existe plusieurs bibliothèques et exemples de code disponibles pour faciliter l’utilisation de l’afficheur SSD1306 dans différents projets. Si vous souhaitez utiliser cet afficheur dans un projet, il est recommandé de se renseigner sur les différentes bibliothèques et exemples de code disponibles pour vous aider à démarrer.
Plaque d’essai
Une plaque d’essai est un type de carte de développement électronique qui permet aux développeurs de tester et de prototyper facilement des circuits électroniques. Elles sont souvent utilisées par les développeurs pour tester rapidement des idées et des conceptions avant de les intégrer à un projet plus important ou de les intégrer dans une carte de développement plus permanente.
Les plaques d’essai sont généralement basées sur un microcontrôleur, qui est un processeur facile à utiliser et à programmer qui peut être utilisé pour contrôler une variété de circuits électroniques. Les plaques d’essai incluent généralement des broches d’extension qui permettent de connecter facilement des composants électroniques tels que des capteurs, des afficheurs, des moteurs et d’autres composants.
Les fils de connexion sont des fils électriques utilisés pour connecter des composants électroniques à une carte de développement ESP32. Ils sont généralement utilisés pour connecter des capteurs, des actionneurs, des afficheurs et d’autres composants à la carte ESP32 afin de créer des circuits électroniques.
Il existe deux types de fils de connexion: les fils de connexion mâle-mâle et les fils de connexion mâle-femelle. Les fils de connexion mâle-mâle sont utilisés pour connecter des composants qui ont tous deux des broches mâles, tandis que les fils de connexion mâle-femelle sont utilisés pour connecter des composants avec une broche mâle et une broche femelle.
Les fils de connexion sont généralement fabriqués en cuivre ou en alliage de cuivre et sont revêtus d’un isolant en plastique pour protéger les fils électriques et empêcher les courts-circuits. Ils sont disponibles dans une variété de couleurs pour aider à identifier et organiser les différents fils dans un circuit.
On connecte les 8 sorties du clavier aux 8 broches de la carte ESP32 suivant cet ordre: D2, D4, D5, D18, D19, D16, D15 et D23.
Pour l’afficheur SSD1306 on connecte:
Voici le programme micropython qui permet de saisir des caractères du clavier matriciel 4×4 et l’afficher sur l’afficheur SSD1306.
Remarque: il faut importer la bibliothèque suivante: ssd1306
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
from machine import Pin,I2C import ssd1306 from time import sleep import utime import machine WIDTH = 128 HEIGHT = 64 i2c = I2C(scl=Pin(22), sda=Pin(21)) #Init i2c oled=ssd1306.SSD1306_I2C(128,64,i2c,0x3c) # CONSTANTS KEY_UP = const(0) KEY_DOWN = const(1) keys = [['1', '2', '3', 'A'], ['4', '5', '6', 'B'], ['7', '8', '9', 'C'], ['*', '0', '#', 'D']] # Pin names for Pico cols = [19,16,15,23] rows = [2,4,5,18] # set pins for rows as outputs row_pins = [Pin(pin_name, mode=Pin.OUT) for pin_name in rows] # set pins for cols as inputs col_pins = [Pin(pin_name, mode=Pin.IN, pull=Pin.PULL_DOWN) for pin_name in cols] def init(): for row in range(0,4): for col in range(0,4): row_pins[row].value(0) def scan(row, col): """ scan the keypad """ # set the current column to high row_pins[row].value(1) key = None # check for keypressed events if col_pins[col].value() == KEY_DOWN: key = KEY_DOWN if col_pins[col].value() == KEY_UP: key = KEY_UP row_pins[row].value(0) # return the key state return key print("starting") # set all the columns to low init() while True: oled.fill(0) for row in range(4): for col in range(4): key = scan(row, col) if key == KEY_DOWN: oled.text("Key Pressed: ",10,0) print("Key Pressed", keys[row][col]) oled.text(keys[row][col], 55, 30) # afficher le caractère associe au touche presse oled.show() last_key_press = keys[row][col] |