Bonsoir,
Je suis en train de me faire une sonnette pour la porte d'entrée.
sonnette filaire musicale et ... clignotante.
tout est bon mis à part le clignottement.
j'aimerai que la led soit allumée quand un son est émis, pouvez vous m'aiguiller ?
sur ce code ça ne fonctionne pas comme je veux ( la led s'allume sur un son et s'éteind la durée du son suivant ...) et il y a certainement un "raccourci".
merci d'avance.
// entrée bouton
const int pinButton = 2;
// attribution led
const int led = 3;
void setup() {
pinMode(8, OUTPUT); // sortie HP
pinMode(pinButton, INPUT); // entrée bouton
pinMode(3, OUTPUT); // sortie led
digitalWrite(3, HIGH); // éteindre la led
}
void song_Test(){
tone(8, LA3, Q);
digitalWrite(3,LOW);
delay(1 + Q); //delay duration should always be 1 ms more than the note in order to separate them.
tone(8, LA3, Q);
digitalWrite(3, HIGH);
delay(1 + Q);
tone(8, LA3, Q);
digitalWrite(3,LOW);
delay(1 + Q);
tone(8, F3, E + S);
delay(1 + E + S);
digitalWrite(3, HIGH);
tone(8, C4, S);
delay(1 + S);
}
void loop()
{
while (digitalRead(pinButton)== LOW)
song_Test();
}
EDIT
Voilà ça fonctionne comme je le souhaite et donc je vous fait part du schéma et du code !
petite modif avec ajout du potar pour ajuster le volume.
je suis ouvert aux remarques pour améliorer mon montage ou mon programme.
// sonette Star Wars
#define Do1 260
#define Do1d 276
#define Re1 296
#define Re1d 312
#define Mi1 332
#define Fa1 348
#define Fa1d 372
#define So1 392
#define So1d 416
#define La1 440
#define La1d 468
#define Si1 492
#define Do2 520
#define Do2d 552
#define Re2 592
#define Re2d 624
#define Mi2 664
#define Fa2 696
#define Fa2d 744
#define So2 784
#define So2d 832
#define La2 880
#define La2d 936
#define Si2 984
// DURATION OF THE NOTES
#define BPM 150 // you can change this value changing all the others
#define H 2*Q //half 2/4
#define Q 60000/BPM //quarter 1/4
#define E Q/2 //eighth 1/8
#define S Q/4 // sixteenth 1/16
#define W 4*Q // whole 4/4
// entrée bouton
const int pinButton = 2;
// attribution led
const int ledB = 3; //led bleue
const int ledV = 4; //led verte
const int LedR = 5; //led rouge
// attribution HP
const int buzz = 8; // HP
void setup() {
pinMode(8, OUTPUT); // sortie HP
pinMode(pinButton, INPUT); // entrée bouton
pinMode(3, OUTPUT); // sortie led bleue
digitalWrite(3,HIGH); // éteindre la ledB
pinMode(4, OUTPUT); //sortie led verte
digitalWrite(4, HIGH); // éteindre led verte
pinMode(5, OUTPUT); //sortie led rouge
digitalWrite(5, HIGH); //éteindre led rouge
}
void song(){
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, Re1, E);
delay(1 + E); //delay doit être plus long de 1ms pour la séparation
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, Re1, E);
delay(1 + E);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, Re1, E);
delay(1 + E);
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, So1, H);
delay(1 + H);
digitalWrite(5, LOW); //LedR
digitalWrite(4, HIGH);
tone(8, Re2, H);
delay(1 + H);
digitalWrite(5,HIGH);
digitalWrite(4, LOW);
tone(8, Do2, E);
delay(1 + E);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, Si1, E);
delay(1 + E);
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, La1, E);
delay(1 + E);
digitalWrite(5, LOW); //ledR
digitalWrite(4, HIGH);
tone(8, So2, H);
delay(1 + H);
digitalWrite(5,HIGH);
digitalWrite(4, LOW);
tone(8, Re2, Q);
delay(1 + Q);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, Do2, E);
delay(1 + E);
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, Si1, E);
delay(1 + E);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, La1, E);
delay(1 + E);
digitalWrite(3,HIGH); // ledR
digitalWrite(5, LOW);
tone(8, So2, H);
delay(1 + H);
digitalWrite(3, LOW);
digitalWrite(5, HIGH);
tone(8, Re2, Q);
delay(1 + Q);
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, Do2, E);
delay(1 + E);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, Si1, E);
delay(1 + E);
digitalWrite(3,HIGH);
digitalWrite(4, LOW);
tone(8, Do2, E);
delay(1 + E);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
tone(8, La1, H);
delay(1 + H);
digitalWrite(3,HIGH);
}
void loop() {
while (digitalRead(pinButton)== LOW) // bouton allumer mélodie
song();
}