Contrôleur de fil EL Arduino (activation sonore) (2 / 4 étapes)

Étape 2: Arduino Code

Voici le code. L’interruption définit un indicateur (pbPress) et le compteur (menuState) entre 0 - 4. À l’aide tandis que (pbPress == 0) {} ; Je reste dans l’un des éléments de menu suivants ; Au loin, Audio, Flash rapide, lent, Flash et de suite. Chaque fois que vous appuyez sur l’interrupteur momentané une interruption est déclenchée, le menu est avancé d’un pas et l’indicateur pbPress est défini sur 1 Quelles pauses la routine de l’existant en boucle et redémarre l’instruction switch avançant vers l’affaire suivante avec le tout prochain en boucle. Lorsque le menu est sur l’Audio, le microcontrôleur échantillonne le signal audio sur la broche A0 et calcule si le signal est supérieur à une des trois valeurs contenues dans le tableau de coupure []. Ces valeurs ont été déterminées empiriquement par essais et erreurs, avec différents niveaux de bruit ambiant. Le point de coupure [] qui est utilisée dépend de la position du commutateur S2_AUDIO_LEVEL correspondant à 0 - basse, 1 haut - MED et 2. Confusion, la dépression correspond à haute sensibilité (sons graves le fil el sur le déclencheur) et ainsi de suite.

 int triacGatePin = 5; // drive el inverter thru optoisolator controlling triacint monitorPin = 0; //from microphone //for audio processing int digInputA = 3; //pins to check for audio switch position int digInputB = 4; //pins to check for audio switch position int cutOff[] = {70, 110, 260}; //value to compare peaktopeak with const int sampleWindow = 50; // Sample window width in mS (50 mS = 20Hz) unsigned int sample; unsigned int signalMax, peakToPeak = 0; unsigned int signalMin = 1024; int menuState = 0; // variable to be updated by the interrupt int pbPress = 0; int triacState = LOW; long previousMillis = 0; long flashInterval = 0; //variables to keep track of the timing of recent interrupts volatile unsigned long button_time = 0; volatile unsigned long last_button_time = 0; void setup() { pinMode(triacGatePin, OUTPUT); pinMode(digInputA, INPUT); pinMode(digInputB, INPUT); //enable interrupt 0 (pin 2) which is connected to a button //jump to the increment function on falling edge attachInterrupt(0, increment, FALLING); //turn on interrupt for pin 2 } void loop() { if (pbPress == 1){ pbPress = 0; switch (menuState){ case 0: //off while(pbPress == 0){ //wait for next pbPress delay(10); } break; case 1: //audio while(pbPress == 0){ int audioLevel = getSwitchState(); // collect data for 50 mS unsigned long startMillis= millis(); // Start of sample window while (millis() - startMillis < sampleWindow) { sample = analogRead(monitorPin); if (sample < 1024) // toss out spurious readings { if (sample > signalMax) { signalMax = sample; // save just the max levels } else if (sample < signalMin) { signalMin = sample; // save just the min levels } } } peakToPeak = signalMax - signalMin; // max - min = peak-peak amplitude if (peakToPeak > cutOff[audioLevel]){ //turn on led digitalWrite(triacGatePin, HIGH); }else{ digitalWrite(triacGatePin, LOW); } resetValues(); } break; case 2: //switch fast bink flashInterval = 120; while(pbPress == 0){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > flashInterval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (triacState == LOW){ triacState = HIGH; }else{ triacState = LOW; } // set the LED with the triacState of the variable: digitalWrite(triacGatePin, triacState); } } break; case 3: //switch slow blink flashInterval = 700; while(pbPress == 0){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > flashInterval) { // save the last time you blinked the LED previousMillis = currentMillis; // if the LED is off turn it on and vice-versa: if (triacState == LOW){ triacState = HIGH; }else{ triacState = LOW; } // set the LED with the triacState of the variable: digitalWrite(triacGatePin, triacState); } } break; case 4: //switch on triacState = HIGH; digitalWrite(triacGatePin, triacState); while(pbPress == 0){ //wait for pbPress delay(10); } triacState = LOW; digitalWrite(triacGatePin, triacState); break; } } delay(100); } // Interrupt service routine for interrupt 0 void increment() { button_time = millis(); //check to see if increment() was called in the last 250 milliseconds if (button_time - last_button_time > 250) { pbPress = 1; if (menuState == 4){ menuState = 0; }else{ menuState += 1; } last_button_time = button_time; } } //for audio processing void resetValues(){ signalMax = 0; signalMin = 1024; peakToPeak = 0; } int getSwitchState(){ int pin2 = digitalRead(digInputA); int pin3 = digitalRead(digInputB); if (pin2 == 0){ return 1; //Medium volume } if(pin3 == 0){ return 2; //High volume; }else{ return 0; //Low volume; } } 

Articles Liés

Contrôleur de baignoire Compatible Arduino

Contrôleur de baignoire Compatible Arduino

Permet de démarrer avec une mise en garde : ce projet contrôle l'eau. Ne pas mélanger l'eau et électricité vraiment et il y a un risque réel d'électrocution et ou la mort si vous n'êtes pas prudent. Générez ce projet à vos propres risques, et je ne s
Contrôleur plug and Play Arduino température

Contrôleur plug and Play Arduino température

J'ai vu quelques projets de contrôleur température différente ici. Je voulais construire un, avec les contraintes suivantes :Appareil « idiot » contrôlé peut être branché directement dans l'appareil. Je ne voulais pas entailler dans l'appareil, mais
Dub Cadet: MIDI holographique & contrôleur de LED pour Arduino - partie 1

Dub Cadet: MIDI holographique & contrôleur de LED pour Arduino - partie 1

Selon moi, des instruments de musique holographiques sera monnaie courante dans l'avenir, apparaître dans le monde des écoles (pour l'éducation), à domicile (pour le fun), aux bureaux de médias (pour la créativité) et dans les studios de musique (de
Contrôleur de feux tricolores Arduino w/Remote Control

Contrôleur de feux tricolores Arduino w/Remote Control

j'ai eu un feu de circulation que j'ai remise à neuf.  La seule chose reste à faire est de construire le contrôleur pour les modèles de signal de la lumière.  Pour lui donner une touche, j'ai intégré une télécommande.  C'était aussi l'occasion rêvée
Contrôleur de piscine personnalisé - Arduino et Raspberry Pi

Contrôleur de piscine personnalisé - Arduino et Raspberry Pi

nous avons acheté une maison avec une piscine. Les deux premières semaines, que nous avons fait plusieurs erreurs coûteuses, y compris l'utilisation de l'appareil de chauffage pour chauffer toute la piscine plus de 90 degrés. Je pense que nous avons
Moteurs DC contrôle et stepper avec L298N double moteur contrôleur de Modules et Arduino

Moteurs DC contrôle et stepper avec L298N double moteur contrôleur de Modules et Arduino

Vous n'avez pas à dépenser beaucoup d'argent pour commander les moteurs avec un Arduino ou compatible. Après une chasse autour de nous trouve un module de contrôle moteur soignée basé sur l'IC H-pont L298N qui peut vous permet de contrôler la vitesse
Contrôleur de LED RBG Arduino

Contrôleur de LED RBG Arduino

Ce projet est adapté pour les utilisateurs de Arduino débutant. C'est mon premier Instrucable depuis l'acquisition d'un kit Arduino récemment. Ce projet intègre à l'aide des entrées réglables pour contrôler l'éclairage de couleur d'une LED RGB. Ceci
Contrôleur de température Arduino Basic - toute

Contrôleur de température Arduino Basic - toute

Ce code Arduino lit un capteur de température de Dallas Semiconductor One-Wire et rapports sur un portail exosites via l'Ethernet Shield. Cet article décrit les informations de branchement et code pour un dispositif de surveillance de température con
Sculpture de Robot (partie 8 de 9): contrôleur de moteur actionneur Arduino robotique

Sculpture de Robot (partie 8 de 9): contrôleur de moteur actionneur Arduino robotique

j'ai construit la sculpture depuis plus de dix ans et j'ai vu l'évolution de la technologie d'usinage aller de fraisage CNC pour l'impression 3D objet bureau. Ces « machines à fabriquer » ont formé un espace physique entre mes mains et les matériaux,
Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Pirater un contrôleur de jeu vidéo avec un Arduino pour une plus grande accessibilité (ou de la tricherie)

Tout le monde aime les jeux vidéo. Mais il peut être difficile d'apprécier certains jeux si vous êtes blessé ou désactivé et n'avez pas la dextérité nécessaire à la réalisation des combos de touche rapide. Heureusement, nous pouvons utiliser un Ardui
Arduino Rgb contrôleur de Vb.net

Arduino Rgb contrôleur de Vb.net

Salut, il s'agit de mon premier instractables, aujourd'hui je vais vous montrer comment faire un contrôleur RVB avec un arduino UNO R3, contrôlée par une demande faite en vb.netAvec ce projet, vous pouvez simplement commander votre bande de led et fa
Arduino contrôleur réglable Thermocouple avec relais

Arduino contrôleur réglable Thermocouple avec relais

j'ai créé récemment un programmateur réglable Arduino avec projet de relais pour contrôler mon chauffage au porche gaz millivolt (thermopile).  Les photos utilisées dans ce projet, ainsi que les photos utilisées dans ce projet, sont que les mêmes, ca
Contrôleur de l’objectif de l’Arduino - synchronisé Zoom/mise au point avec la manette classique Wii

Contrôleur de l’objectif de l’Arduino - synchronisé Zoom/mise au point avec la manette classique Wii

mon Lumix GH2 Micro Four Thirds caméra tire non seulement des vidéos fantastiques haute définition, mais avec des adaptateurs bon marchés je peux l'utiliser avec les anciennes lentilles manuelles qui sont bon marchés et souvent très haute qualité. Je
Contrôleur de MAME sans fil portable

Contrôleur de MAME sans fil portable

Description:Ce projet vous permettra de fabriquer un contrôleur sans fil Portable pour MAME. La boîte MAME (Multiple Arcade Machine Emulator) j'ai utilisé était un Pi de framboise Mame avancée en cours d'exécution, mais n'importe quelle boîte support