Arduino EL wire controller (muziekgestuurde) (2 / 4 stap)

Stap 2: Arduino Code

Hier is de code. De interrupt wordt ingesteld op een vlag (pbPress) en de teller (menuState) tussen 0 - 4. Met behulp van terwijl (pbPress == 0) {}; Ik verblijf in een van de volgende menuopdrachten; Uitschakelen, Audio, Flash snel, traag, Flash en. Op elk gewenst moment de pulsdrukker ingedrukt is een interrupt wordt afgevuurd, het menu is één stap gevorderd en de vlag pbPress is ingesteld op 1, welke einden de routine uit de bestaande lus en wordt opnieuw opgestart de schakelaarverklaring door te gaan naar het volgende geval met de volgende While-lus. Wanneer het menu op Audio is, de microcontroller monsters van het audio signaal op pin A0 en wordt berekend als het signaal groter dan één van de drie waarden in de matrix cutOff [] gehouden is. Deze waarden werden empirisch bepaald door trial and error met verschillende niveaus van ambient geluid. Het item uit cutOff [] die wordt gebruikt, hangt af van het standpunt dat overeenkomt met 0 - laag, 1 - MED, en 2 - hoog in de schakelaar van de S2_AUDIO_LEVEL. Verwarrend, de lage komt overeen met hoge gevoeligheid (lage geluiden trigger de draad van GR op), enzovoort.

 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; } } 

Gerelateerde Artikelen

ARDUINO SOLAR CHARGE CONTROLLER (versie 2.0)

ARDUINO SOLAR CHARGE CONTROLLER (versie 2.0)

Een jaar geleden, begon ik bouw mijn eigen zonnestelsel om macht voor mijn dorpshuis. In eerste instantie maakte ik een LM317 gebaseerde heffing controller en een energie-meter voor de bewaking van het systeem. Ik eindelijk PWM heffing controller. In
ARDUINO SOLAR CHARGE CONTROLLER (versie-1)

ARDUINO SOLAR CHARGE CONTROLLER (versie-1)

In mijn vorige instructables beschreef ik de details van energie monitoring van een off grid solar systeem. Ik heb de 123D circuits competitie daarvoor ook gewonnen. U ziet deze ARDUINO energie METER.Tot slot ben ik mijn nieuwe versie-3 heffing contr
Arduino Chicken Coop Controller

Arduino Chicken Coop Controller

De afgelopen paar jaar die mijn familie heeft het houden van ex-batterijkippen - ze zijn ongeveer 18 maanden oud en hebben hun hele leven binnen een gekooide omgeving geleefd. Zo veel als wij houden van deze kleine bundels van vreugde en eieren kan h
Mini Arduino Multi functie Controller w / LCD Display

Mini Arduino Multi functie Controller w / LCD Display

dit Instructable bouwt voort op de Arduino omgeving minimonitor en Arduino EEG minimonitor Instructables.U kunt maximaal 4 Relais met behulp van de tijd, temperatuur en/of licht, je geest, controle of welke sensor u wilt gebruiken.De voorbeelden zijn
Arduino compatibel badkuip controller

Arduino compatibel badkuip controller

Laten we beginnen met een waarschuwing: dit project regelt water. Elektriciteit en water echt niet mengen en er is een reëel gevaar voor elektrocutie en/of dood als je niet voorzichtig bent. Bouwen van dit project op uw eigen risico, en ik zal niet a
Sla voor Life - 101 Arduino gebaseerd geautomatiseerd Controller voor Aeroponics, Aquaponics, hydrocultuur, enz.  Intel Curie

Sla voor Life - 101 Arduino gebaseerd geautomatiseerd Controller voor Aeroponics, Aquaponics, hydrocultuur, enz. Intel Curie

SAMENVATTINGEen apparaat dat kan worden gebruikt voor het besturen van tot 4 verschillende Hydroponic/Aeroponic systemen tegelijk. Het apparaat zal bepalen van de componenten van het systeem en zal melding naar een LCD-scherm weergegeven en kan de ge
Arduino solar laden controller + output controle en gegevens registreren online met Xbee WiFi

Arduino solar laden controller + output controle en gegevens registreren online met Xbee WiFi

Een tijdje terug begon ik bezig met een zonne-heffing controller, het was gebaseerd op een PIC-microcontroller, een 20 x 4 tekens weergeven en de code is geschreven in assembler. Het werkte goed en werkte nog steeds toen ik besloot dat ik wilde meer
GOduino III - de breadboard-vriendelijke Arduino gebaseerde robot controller

GOduino III - de breadboard-vriendelijke Arduino gebaseerde robot controller

UPDATES16 nov 2012 gekenmerkt op DangerousPrototypes.com http://goo.gl/N4DIC3 oktober 2012: heb ik een PCB-adapter om te helpen positie IR & ultrasone sensoren 90 graden naar breadboard ter ondersteuning van GOduino III robot projecten ontworpen1 sep
Dual Core Arduino / Atemga328 - Robot Controller & audiospeler

Dual Core Arduino / Atemga328 - Robot Controller & audiospeler

Hallo daar collega beleidsmakers,Ik wil enkele ervaringen die ik heb opgedaan tijdens het werken aan mijn
Arduino Midi Foot Controller voor Ableton Live

Arduino Midi Foot Controller voor Ableton Live

Ik ben een geek. Ik weet het. Ik DIY'ing dingen. Ik kocht een 3D-printer (die zit in mijn kantoor niet werkt nu)... en zoals het bouwen van drones. Ik bijten meestal uit meer dan ik kan kauwen en vaak moet naar anderen om hulp. Dit keer rond, was het
3 as Arduino-Based CNC Controller

3 as Arduino-Based CNC Controller

ik heb gespeeld met verschillende CNC ontwerpen en Stepper controllers voor vele jaren. Ik begonnen met de bouw lang geleden CNC-machines. Mijn eerste inspiratie vandaan kwam Bruce Shapiro's eggbot. Ik probeerde een paar variaties van het en zelfs de
Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Arduino zelf evenwicht Controller met behulp van digitale IMU, eindelijk!

Wat is het?DIY Segway/balans controller met moderne digitale IMU sensor.Software voor een Arduino waarmee het standpunt om gegevens te lezen van een van de nieuwere digitale accelerometer/gyroscoop eenheden, processen, de gegevens met behulp van Kalm
Arduino tijd-tijdspanne Controller

Arduino tijd-tijdspanne Controller

dit project oorspronkelijk begon met een paar simpele onderdelen gegooid samen maken een zeer eenvoudige time-lapse controller voor een DSLR camera. Nadat ik blij met het eerste prototype was, die ik wilde maken van een definitieve versie die de prog
Adil Controller, Arduino gebaseerde draadloze controller

Adil Controller, Arduino gebaseerde draadloze controller

een nieuw project van multifunctionele afstandsbediening. Het zal worden gebruikt om verschillende robot-modellen met inbegrip van een op maat gemaakte quadcopter. Het is gebaseerd op de ArduinoMega2560 microcontroller. Links-naar-rechts met een 1200