Difficulté : Compétences :
●●●○○ ⚡👨🏻💻
En morse, chaque lettre c'est une suite de signaux courts et longs — "S" c'est ..., "O" c'est ---, d'où le fameux SOS. L'idée ici : reconstituer ça avec de l'électronique. Un ou deux boutons pour taper ta séquence, un buzzer qui bip à chaque appui, et un écran OLED qui affiche la lettre puis le mot au fur et à mesure. Un petit télégraphe de poche.
- Un bip au buzzer à chaque appui
- Le système doit faire la différence entre un appui court (point) et un appui long (trait)
- Une pause plus longue = fin de lettre → traduction et affichage sur l'écran
- Le mot se construit lettre après lettre à l'écran, sans tout effacer à chaque fois
- Les 26 lettres de l'alphabet, au minimum
- Arduino (Uno/Nano)
- Écran OLED I2C (SSD1306 128x64)
- 1 ou 2 boutons poussoirs
- 1 ou 2 buzzers
- Breadboard + câbles Dupont
Pas de delay() pour mesurer tes durées d'appui, sinon le programme devient tout raide et loupe des trucs — millis() est ton ami. Pense aussi au anti-rebond sur tes boutons, sinon un appui peut être compté plusieurs fois.
Un choix à faire toi-même : un seul bouton où tu mesures la durée pour savoir si c'est un point ou un trait, ou deux boutons dédiés (un point, un trait) ? Y'a pas de mauvaise réponse, juste des compromis différents à assumer.
- Une séquence connue affiche la bonne lettre
- Plusieurs lettres à la suite forment un mot lisible à l'écran
- Le buzzer réagit sans latence perceptible à chaque appui
Du plus simple au plus compliqué :
- Un son différent pour point vs trait (fréquence différente)
- Un bouton "espace" ou "effacer"
- Ajoute les chiffres et la ponctuation
- Mode inversé : donne un mot, le buzzer/une LED le rejoue en morse avec le bon timing
- Un historique de mots, qu'on peut faire défiler avec un bouton ou un joystick
- Un mode "chrono" qui calcule ta vitesse en mots par minute (WPM), la vraie unité utilisée en morse
- Sauvegarde en EEPROM pour garder le dernier mot tapé même après une coupure de courant
- Détection d'erreur intelligente : si la séquence ne correspond à rien, propose la lettre la plus proche
- Cherche une table du code morse international
- Bibliothèque Adafruit_SSD1306 / Adafruit_GFX (ou U8g2) pour l'écran
- Fonctions à connaître :
millis(), tone(), digitalRead()
Pas de solution toute faite ici, le but c'est de chercher et de se planter un peu. Un membre INTech est là si tu bloques trop.