Ce mini projet Arduino permet de créer du texte (variable String) avec le module encodeur et de le stocker dans la RAM du microcontrôleur. Vous pouvez utiliser le code dans vos propres programmes, par exemple pour écrire des informations dans l’EEPROM (mémoire morte programmable effaçable électriquement) ou pour créer un fichier sur une carte SD. Pour ce mini-projet, il suffit de connecter l’encodeur à la carte sans utiliser l’afficheur 16×2 i2c.
Ce dont vous aurez besoin
- Arduino Uno / Arduino Nano / Arduino Mega
- encodeur rotatif
- afficheur LCD 16×2 i2c
- fils de connexion;
- librairies LiquidCrystal_I2C.h et RotaryEncoder.h
Matériel supplémentaire sur ce sujet:
Saisie de texte avec un encodeur rotatif

| Encoder | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| + | 5V | 5V | 5V |
| SW | 6 | 6 | 6 |
| DT | 4 | 4 | 4 |
| CLC | 2 | 2 | 2 |
Pour le premier programme d’exemple, connectez l’encodeur rotatif (ky-040) à l’Arduino selon le schéma ci-dessus et installez la bibliothèque RotaryEncoder.h. La bibliothèque peut être téléchargée sur notre site Internet arduino-spain.site. Toutes les informations seront affichées sur le moniteur du port Arduino IDE. Et la chaîne finale sera stockée dans la variable String stroka. La plupart des paramètres du programme peuvent être modifiés à volonté.
Programme Arduino saisie de texte avec un encodeur
#include "RotaryEncoder.h" RotaryEncoder encoder(4, 2); // (DT, CLK) #define SW 6 // SW byte scale = 5; char massiv[39] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '-', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; String simvol; String stroka; byte w; int pos; int newPos; boolean buttonWasUp = true; void setup() { Serial.begin(9600); pinMode(SW, INPUT_PULLUP); simvol = massiv[pos]; Serial.println(simvol); } void loop() { while (w < scale) { encoder.tick(); newPos = encoder.getPosition(); if (newPos > 38) { encoder.setPosition(0); } if (newPos < 0) { encoder.setPosition(38); } if (pos != newPos && newPos <= 38 && newPos >= 0) { pos = newPos; simvol = massiv[pos]; Serial.println(simvol); } boolean buttonIsUp = digitalRead(SW); if (buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(SW); if (!buttonIsUp) { w = w + 1; stroka = stroka + simvol; Serial.println(stroka); encoder.setPosition(0); } } buttonWasUp = buttonIsUp; } Serial.println(stroka); delay(1000); }
Explication du code saisie de texte avec un encodeur:
- le tableau char massiv contient 39 caractères, dont la numérotation commence à zéro. Par exemple, la position « 0 » du codeur correspond au caractère « A »;
- la boucle while est exécutée 5 fois dans le programme Arduino – ceci est spécifié dans la variable byte scale, qui est responsable de la longueur finale de la chaîne entière.
Création de variables String avec un encodeur

| LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
| GND | GND | GND | GND |
| VCC | 5V | 5V | 5V |
| SDA | A4 | A4 | 20 |
| SCL | A5 | A5 | 21 |
Dans l’exemple de programme suivant, la fonction d’utilisation de l’affichage pour la sortie de caractères et de lignes a été ajoutée. Si nécessaire, le codeur peut être connecté à d’autres ports (y compris les broches analogiques du microcontrôleur) en apportant les modifications nécessaires au croquis. Connectez l’écran et le codeur 1602 à l’Arduino Uno selon le schéma ci-dessus et chargez la deuxième version du programme sur la carte Arduino.
Programme Arduino création String avec un encodeur rotatif
#include "Wire.h" #include "LiquidCrystal_I2C.h" LiquidCrystal_I2C LCD(0x27,20,2); #include "RotaryEncoder.h" RotaryEncoder encoder(4, 2); // DT, CLK #define SW 6 // SW byte scale = 5; char massiv[39] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'G', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ' ', '-', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; String simvol; String stroka; byte w; int pos; int newPos; boolean buttonWasUp = true; void setup() { LCD.init(); LCD.backlight(); pinMode(SW, INPUT_PULLUP); simvol = massiv[pos]; LCD.setCursor(w, 0); LCD.print(simvol); } void loop() { while (w < scale) { encoder.tick(); newPos = encoder.getPosition(); if (newPos > 38) { encoder.setPosition(0); } if (newPos < 0) { encoder.setPosition(38); } if (pos != newPos && newPos <= 38 && newPos >= 0) { pos = newPos; simvol = massiv[pos]; LCD.setCursor(w, 0); LCD.print(simvol); } boolean buttonIsUp = digitalRead(SW); if (buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(SW); if (!buttonIsUp) { w = w + 1; stroka = stroka + simvol; encoder.setPosition(0); LCD.setCursor(w, 0); LCD.print(simvol); } } buttonWasUp = buttonIsUp; } LCD.clear(); LCD.setCursor(0, 0); LCD.print("ITOG:"); LCD.setCursor(0, 1); LCD.print(stroka); delay(1000); }
Explication du code création String avec un encodeur:
- la variable w dans ce programme est responsable non seulement de la sortie de la boucle while, mais aussi de la position du curseur sur l’écran ligne 1602;
- lorsque le bouton de l’encodeur est pressé, la variable w est incrémentée, le caractère est stocké dans une chaîne de caractères et la position de l’encodeur est mise à zéro.
Conclusion. Saisie de texte avec un encodeur rotatif. Utilisez la fonction delay Arduino dans le langage de programmation. Ce code peut être mis en œuvre dans vos projets lorsque vous avez besoin de créer une variable texte. Si vous avez des questions sur ce mini-projet ou des ajouts, vous pouvez les laisser dans les commentaires de ce post.








Bonjour,Admin
Tu fais ce projet où il faut faire un code spécial pour que sur l’écran si c’est le bon code ça affiche soit verrouillé ou déverrouillé.
C’est une bonne idée