//Zappeur Analog 12_03_2018 Pour Arduino Nano et compatible //Coupe un triac , ou un relais, pendant Att secondes en claquant des mains //¨Pour filtrer les bruits usuels il faut 2 claps distants de moins de Del2 secondes //Par exemple pour une radio dont on veut zapper les pubs pendant Att secondes //Une charge est connectée en 220V sur le triac/relais, activé en position repos //On claque des mains, la charge est débranchée pendant Att secondes //*******************Valeurs adaptables********************** float Att = 120; //Temps de debranchememnt de la charge en secondes float Del2 = 1;//Delai pour valider le 2éme clap en secondes //********************************************************* int Seuil = 5;//Seuil du bruit.Ne declenche pas tant que Mic <= Seuil int Clap = 0; //1 quand valide pour debranchement //Eventuellement adaptable, Seuil = 1 correspond à 5 mV. #define Mic analogRead(A7) // Micro connecté directement sur l' entrée analogique A7 #define brancher digitalWrite(5,1) //Activer le triac/relaispour brancher la charge #define debrancher digitalWrite(5,0) //Desactiver le triac/relais pour debrancher la charge #define Led_ON digitalWrite(13,1) //Temoin de l'activation du triac/relais #define Led_OFF digitalWrite(13,0) void AttClap2() { Clap = 0; delay(100);//Attente fin clap1 float gf = 1; while (gf < Del2 * float(7500)) //En gros, 1 seconde = 7500 passages { gf++; if (Mic > Seuil)Clap = 1;//Clap validé } } void Mondelai() //Attendre Att secondes { float gf = 1; while (gf < Att * float(7500)) //En gros, 1 seconde = 7500 passages { gf++; if (Mic > Seuil) { AttClap2(); if (Clap == 1)break; //si clap2 valide, ne plus attendre } } } void setup() { pinMode(5, OUTPUT);//Sortie vers la gachette du triac (ou bobine du relais) pinMode(13, OUTPUT);//vers LED standard de l'Arduino, recopie l'etat du triac/relais delay(100); //Evite des parasites d'initialisation brancher; Led_ON; //Activer le triac/relais pour brancher la charge } void loop() { while (Mic <= Seuil); //Attendre clap 1 ici, la charge est branchée AttClap2(); if (Clap == 1) //si clap2 valide { Clap = 0; debrancher; Led_OFF; //On a claqué des mains, couper le triac/relais pour debrancher la charge delay(1000); //Attendre fin du claquement, retombée du signal du micro Mondelai(); //Attendre pendant ATT secondes, charge débranchée delay(100); brancher; Led_ON; // Reactiver le triac/relais pour rebrancher la charge } }