/****************************************************************************************************************************************
Projet Piano Diatonique: Daniel Talbot Technicien
Pour Ez-Weekend-Project au Club Technique des Laurentides
Dans le cadre du programme C.I.P.A.D. (Cours d'initiation à la Programmation Arduino pour Débutant(e)s) gratuit et sans inscription.
Copiez ce lien pour accéder à toutes les leçons déjà publiées...
https://www.youtube.com/playlist?list=PLoffRtP427acSg1FbpFuH_g5ptz-aovFN
* *
****************************************************************************************************************************************/
/**** ENTÊTE DÉCLARATIVE ***/
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd1(0x25, 20, 4);
const int btnPins[8] = {12, 11, 10, 9, 8, 7, 6, 5};
const int Do4 = 262,
Re4 = 294,
Mi4 = 330,
FA4 = 349,
Sol4 = 392,
La4 = 440,
Si4 = 494,
Do5 = 523;
const int KeyTones[] = {Do4, Re4, Mi4, FA4, Sol4, La4, Si4, Do5};
const int piezo = 13; // Buzzer relié à la broche 13.
char* Notes[] = {"DO ", "RE ", "MI ", "FA ", "SOL", "LA ", "SI ", "DO "};
int btn;
void setup() { // Initialisation.
lcd1.init(); lcd1.backlight();
pinMode(piezo, OUTPUT); // définition du mode SORTIE à la broche 13.
for (int i = 0; i < 8; i++) {
pinMode(btnPins[i], INPUT_PULLUP);
}
lcd1.setCursor(8, 0); lcd1.print("Piano");
lcd1.setCursor(5, 1); lcd1.print("Diatonique");
lcd1.setCursor(8, 2); lcd1.print("Ready?");
delay(1000);
lcd1.setCursor(3, 2); lcd1.print("Press buttons");
}
void loop() { //Exécution: du code principal à exécuter de manière répétitive | Balaie en boucle l'état des boutons du Joystick.
PlayPiano();
}
void PlayPiano() {
int pitch = 0;
for (int i = 0; i < 8; i++) {
if (digitalRead(btnPins[i]) == LOW) {
pitch = KeyTones[i];
btn = i;
}
}
if (pitch) {
//lcd1.setCursor(0, 2); lcd1.print(" ");
lcd1.setCursor(btn * 2, 3); lcd1.print(Notes[btn]);
lcd1.setCursor(7, 2); lcd1.print("key: " + String(btn));
tone(piezo, pitch);
} else {
lcd1.setCursor(0, 3); lcd1.print(" ");
noTone(piezo);
lcd1.setCursor(0, 2); lcd1.print(" ");
}
}