Arduino EL wire controller (ljud aktiverad) (2 / 4 steg)

Steg 2: Arduino kod

Här är koden. Avbrottet sätter en flagga (pbPress) och counter (menuState) mellan 0 - 4. Använda medan (pbPress == 0) {}; Jag bo inom en av följande menyobjekt; Av, ljud, blixt snabbt, Flash långsam, och å. När växeln momentan trycks ett avbrott avfyras, menyn är avancerad ett steg och flaggan pbPress har angetts till 1 vilka raster rutin från de befintliga slingan och startar om programsatsen switch framflyttning till nästa fallet med nästa medan slinga. När menyn är på ljud, mikrokontroller prover ljudsignalen på stift A0 och beräknar om signalen är större än ett av tre värden i matrisen cutOff []. Dessa värden bestämdes empiriskt genom att prova med olika nivåer av omgivande ljud. Artikeln från cutOff [] som används beror på den S2_AUDIO_LEVEL switch position motsvarar 0 - lågt, 1 - MED, och 2 - hög. Förvirrande, motsvarar låga hög känslighet (låga ljud utlösa el tråd på) och så vidare.

int triacGatePin = 5; köra el inverter thru optoisolator kontrollera triac
int monitorPin = 0; från mikrofon

för ljudbearbetning
int digInputA = 3; stift för att kontrollera för audio switch position
int digInputB = 4; stift för att kontrollera för audio switch position
int cutOff [] = {70, 110, 260}; värde att jämföra peaktopeak med
CONST int sampleWindow = 50; Provet fönsterbredd i mS (50 mS = 20 Hz)
unsigned int provet;
unsigned int signalMax, peakToPeak = 0;
unsigned int signalMin = 1024;

int menuState = 0; variabel uppdateras av avbrottet
int pbPress = 0;
int triacState = låg;
lång previousMillis = 0;
lång flashInterval = 0;
variabler att hålla reda på tidpunkten för senaste avbryter
volatile osignerade långa button_time = 0;
volatile osignerade långa last_button_time = 0;

void setup() {
pinMode (triacGatePin, produktionen);
pinMode (digInputA, ingång);
pinMode (digInputB, ingång);
Aktivera avbrott 0 (pin 2) som är ansluten till en knapp
hoppa till steg funktionen på fallande kant
attachInterrupt (0, mellanskillnad, faller); Aktivera avbrott för stift 2
}

void loop() {
om (pbPress == 1) {
pbPress = 0;
växel (menuState) {
fall 0: //off
While(pbPress == 0) {
vänta på nästa pbPress
Delay(10);
}
bryta;
fall 1: //audio
While(pbPress == 0) {
int audioLevel = getSwitchState();
samla in data för 50 mS
osignerade långa startMillis = millis(); Start av prov-fönstret
medan (millis() - startMillis < sampleWindow)
{
prov = analogRead(monitorPin);
om (prova < 1024) / / slänga ut falska avläsningar
{
om (prov > signalMax)
{
signalMax = provet; spara bara max nivåerna
}
annars om (prov < signalMin)
{
signalMin = provet; spara bara min nivåerna
}
}
}
peakToPeak = signalMax - signalMin; max - min = topp-topp amplitud
om (peakToPeak > cutOff[audioLevel]) {
slå på led
digitalWrite (triacGatePin, hög);
} annat {
digitalWrite (triacGatePin, låg);
}
resetValues();
}
bryta;
fall 2: //switch snabb bink
flashInterval = 120;
While(pbPress == 0) {
osignerade långa currentMillis = millis();

om (currentMillis - previousMillis > flashInterval) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;

om lysdioden är stänger den på och vice versa:
om (triacState == låg) {
triacState = hög;
} annat {
triacState = låg;
}
Set LED med triacState av variabeln:
digitalWrite (triacGatePin, triacState);
}
}
bryta;
fall 3: //switch långsam blink
flashInterval = 700;
While(pbPress == 0) {
osignerade långa currentMillis = millis();

om (currentMillis - previousMillis > flashInterval) {
spara den senaste gången du blinkade lysdioden
previousMillis = currentMillis;

om lysdioden är stänger den på och vice versa:
om (triacState == låg) {
triacState = hög;
} annat {
triacState = låg;
}
Set LED med triacState av variabeln:
digitalWrite (triacGatePin, triacState);
}
}
bryta;
fall 4: //switch på
triacState = hög;
digitalWrite (triacGatePin, triacState);
While(pbPress == 0) {
vänta på pbPress
Delay(10);
}
triacState = låg;
digitalWrite (triacGatePin, triacState);
bryta;
}
}
Delay(100);
}

Avbrottstjänstens rutin för avbrott 0
void increment() {
button_time = millis();
Kontrollera om increment() kallades i de sista 250 millisekunder
om (button_time - last_button_time > 250)
{
pbPress = 1;
om (menuState == 4) {
menuState = 0;
} annat {
menuState + = 1;
}
last_button_time = button_time;
}
}
för ljudbearbetning
void resetValues() {
signalMax = 0;
signalMin = 1024;
peakToPeak = 0;
}
int getSwitchState() {
int pin2 = digitalRead(digInputA);
int pin3 = digitalRead(digInputB);
om (pin2 == 0) {
tillbaka 1. Medelhög volym
}
IF(PIN3 == 0) {
returnera 2. Hög volym;
} annat {
Return 0; Låg volym;
}
}

Se Steg
Relaterade Ämnen

Arduino Time-Lapse Controller

detta projekt som ursprungligen började med några enkla delar kastas tillsammans för att skapa en mycket enkel time-lapse controller för en DSLR-kamera. När jag var nöjd med den första prototypen, ville jag göra en slutlig version som planeringen av...

Ljud aktiverad lyser upp skjorta

Har du någonsin behövt något häftigt och kul att bära till en konsert eller en maskerad, men du visste inte vad? Bra nu är alla dina problem löst, eftersom jag hittade ett sätt att göra din egen DIY ljud aktiverad lyser upp t-shirt. Det är en enkel b...

Arduino Kyckling Coop Controller

Under de senaste åren min familj har hållit ex-burhöns - de är cirka 18 månader gammal och har levt hela sitt liv i en bur miljö. Så mycket som vi älskar dessa små buntar av glädjeämnen och ägg kan det vara en arbetsträl att stiga upp tidigt på morgo...

Arduino justerbar Timer Controller med relä

detta är mitt första inlägg här, så jag hoppas jag får allt rätt!Jag har en gasvärmare millivolt (termoelement högen) veranda som har en manuell kontroll på den. Jag tröttnade på att få upp och ner att slå på och stänga av den, så jag beslöt att göra...

GOduino III - skärbräda-vänlig Arduino-baserad robot controller

uppdateringar16 Nov 2012 med på DangerousPrototypes.com http://goo.gl/N4DIC3 okt 2012: Jag har designat en PCB-kortet att hjälpa position IR & ultraljudssensorer 90 graders till bakbord för att stödja GOduino III robot projektSep 1, 2012: Lagt till E...

Språket i regn - An Arduino-baserad regnrock med ljud och LED

Vi kommer att göra en magisk regnrock som kunde översätta språket i regnet med hjälp av en LED stripe och ett ljudkort.Människor har en blandning av känslomässiga reaktioner till regnet. Vissa människor njuta av det, medan andra inte gör. Men om du a...

Arduino kompatibel badkar controller

Kan börja med en varning: detta projekt styr vatten. El och vatten verkligen blanda inte och det finns en verklig risk för elchock och eller död om du inte är försiktig. Bygga detta projekt på egen risk och jag kommer inte att hållas ansvarig för all...

Dual Core Arduino / Atemga328 - Robot Controller & Audio Player

Hej där stipendiaten beslutsfattare,Jag vill dela några erfarenheter som jag har fått när han arbetade på mitt projekt, som ledde mig att använda 2 Arduino.Varför?Kort version: eftersom det ser ut som ett roligt projekt.Lång version: Jag körde slut p...

Arduino 1-wire sniffer

Medan du arbetar på ett 1-wire bussystem - t.ex. bygga en Arduino Uno 1-wire slav enhet med en OneWireSlave bibliotek eller gör de allmänna utveckling och felsökning - en logik analyzer att utvärdera och tolka lite trafik på bussen kan vara bra. Jag...

Arduino solar storma controller + effektreglering och data loggning online med Xbee WiFi

För ett tag sedan jag började arbeta på en sol laddningsregulatorn, det var baserat på en PIC mikrokontroller, en 20 x 4 tecken display och koden är skriven i assembler. Det fungerade bra och arbetade fortfarande när jag bestämde mig att lägga mer ti...

Ljud aktiverad kamera avtryckare för hög hastighet fotografering

För att göra ett ljud är aktiverad kamera avtryckare det viktigaste du behöver en kamera som accepterar en extern trigger.Kameran jag använder för det här exemplet är en Samsung NX1000 Smart kamera. Kameran är aktiverad när extern trigger kontakterna...

3 axel Arduino-baserad CNC Controller

jag har spelat med olika CNC design och Stepper Controller i många år nu. Jag började bygga CNC-maskiner länge sedan. Min första inspiration kom från Bruce Shapiro eggbot. Jag försökte några varianter av det och även styrelsen från onda galen vetensk...

Lätt att bygga Oxygen Analyzer använder en Arduino kompatibel Micro Controller

Som en byggare av prylar och en dykare har jag försökt att bygga en syre analysator för lite nu. Det stora problemet är att de flesta mikrokontrollanter inte kan läsa den mv som sensorn ger ut. Jag spelade med opamps, men aldrig fick det att fungera...

Ännu en annan Arduino 110v Power Controller

detta Instructable visar dig hur man bygger en fyra-gänget utlopp låda där varje uttag styrs via en Arduino (eller några andra TTL nivå signaler).Det skiljer sig från andra relay rutorna den använder ingen kretskort och har väldigt få delar (en marke...

Bygga en grundläggande MIDI-Controller del 1 - lätt 3 effekter Pot (Potentiometer) Arduino Uno MIDI-Controller (Serial-USB)... Snabb, enkel och billig!

Hej alla,Jag är relativt ny på Arduino och så har kämpat mitt sätt att göra min egen MIDI-controllers. Det finns en enorm mängd information runt om men jag kunde inte hitta en enkel handledning för sådan en enkel enhet; så här går.Min ursprungliga av...

Baserade Arduino seriell servo controller

detta är en enkel serial controller för flera servon bygger på Arduino. (min första instructable alltför :))Mesta av arbetet i detta kom från att få programvaran att prata med arduino och göra ett protokoll för de data som ska skickas. När det gäller...

Arduino Midi fot Controller för Ableton Live

Jag är en nörd. Jag vet det. Jag gillar DIY'ing saker. Jag köpte en 3d-skrivare (som sitter på mitt kontor fungerar inte just nu)... och som att bygga drönare. Jag bita brukar bort mer än jag kan tugga och ofta måste gå till andra om hjälp. Den här g...

Arduino skrivbord Fan Controller

När jag nyligen bytt roller inom företaget, flyttade jag platser, flyttar från Bradford till vårt huvudkontor i Wakefield. Jag sa adjö till min trogna gamla skrivbord med måste ha skrivbord fläkt att svalka mig medan alla runt omkring mig... Hur som...

Arduino RBG LED-Controller

Detta projekt är lämplig för nybörjare Arduino användare. Detta är min första Instrucable sedan förvärva en Arduino kit nyligen. Detta projekt innehåller med justerbara ingångar för att styra färg belysning från en RGB-LED. Detta liknar humör lamp pr...