EL Wire hatt: Sekvenserade och ljud aktiverat med fjärrkontroll - drivs med Arduino och Sparkfun (7 / 8 steg)

Steg 7: Funktionalitet och koden

Funktionalitet

Koden är ganska självförklarande och (tror jag för att vara) relativt väl kommenterade. Det finns också en följetong println kommando på varje steg på vägen för felsökning speciellt om du behöver justera koden för kalibrering av potentiometern.

När du slår upp enheten, kommer att EL kabeln "initiera." Med andra ord, blinkar de varje en gång i ordningsföljd, från stift 2 till stift 9.
Vi är nu i ett vänteläge tills på mode-knappen trycks. Varje tryck på knappen mode växlar genom en annan sekvens och blinkar Mode-LED (röd) en gång, så att operatören kan bekräfta en lägesändring (som operatören bär hatten).

Det finns 7 sekvenser som loopas kontinuerligt mellan läget ändras. Under dessa lägen, om operatören justerar potentiometern, ändras hastigheten på sekvensen.

Sekvenserade lägen
Läge 1 - steg igenom alla
Läge 2 - fylla upp från botten sedan tom från botten
Läge 3 - upp och ner
Läge 4 - svep i botten till toppen, sopa ut uppifrån och ned
Läge 5 - Stack och unstack
Läge 6 - suppleant blinkande
Läge 7 - Criss cross

Sund Sensor läge
Läge 8 - när du når detta läge läget ledde med flash 10 gånger snabbt för att låta dig veta att du är i detta speciella läge.
Potentiometern blir nu din ljudkänslighet kontroll.

Alla sekvenser
Läge 9 - Detta avslutar ljudläge och går kontinuerligt igenom flera slingor för varje steg från 1 till 7 (kontrollera på potentiometern är nu aktiv). När du trycker på knappen Mode, återvänder vi till läge 1.

KODEN
All kod som Arduino är både nedan och bifogade.

Instructables gör det glöda 2012 hatt Sequencer
ARDUINO UNO Rev. 3 + SPARKFUN EL Escudo Dos
//
=== DELAR och CONFIG ===
EL Escudo Dos: Shield monterad på Arduino UNO Rev. 3
EL Wire: Ansluten till El Escudo Dos på digitala ut Digital stift 2 -> 9(OUTPUT)
LED-indikator: anger lägesändring och sund upptäckt Pin-13(OUTPUT)
Momentan switch: läge switcher (normalt öppen) ansluten till Digital Pin 11(INPUT)
Potentiometer: Hastighet/ljud kontroll som är kopplad till Analog 0
DFRobot ljud Sensor: Mikrofonljudet Sensor kopplad till Analog 2

Skrivet av: Dovadil

DISCAIMER: Jag är mycket amatör programmerare, så snälla Döm inte förmodligen onödigt komplicerat koden.
Jag hade en idé och gjort det hända. Jag hoppas du kan använda delar av detta för ditt eget projekt.
DELA DEN!

konstanter för tryck på knapp ingång och 1 ledde produktion
CONST int buttonPin = 11; numrera av tryckknapp PIN-koden
CONST int ledPin = 13. antal LED stift

const_variable för kruka och ljud Sensor
CONST int analogInPin = A0; Analog ingång pin som potentiometern är kopplad till
CONST int analogInPinSound = A2; Analog ingång ljud Sensor
int potValue = 0; värdet läsa från potten
int tid = 100; tidsintervall

varibales
Boolean initiera = sant;
int buttonState = 0; variabel för att läsa tryckknapp status
int läge = 0;
int soundVal = 0;
int soundPotThresholdValue = 0;
int soundSensitivityLimit = 0;
int x;
int y;
int z;

void setup()
{
initiera seriell kommunikation på 9600 bps:
Serial.BEGIN(9600);
EL-kanaler är på stift 2 till 9
Initiera stiften som utgångar
pinMode (2, utgång); kanal A
pinMode (3, OUTPUT); kanal B
pinMode (4, OUTPUT); kanal C
pinMode (5, OUTPUT); kanal D
pinMode (6, OUTPUT); kanalen E
pinMode (7, OUTPUT); Channel F
pinMode (8, OUTPUT); kanalen G
pinMode (9, OUTPUT); Channel H
Vi har också två status lysdioder, stift 10 på Escudo,
pinMode (10, OUTPUT);
och ledPin (stift 13) på Arduino sig
pinMode (ledPin, produktionen);
pinMode (buttonPin, ingång);
}

void loop()
{
Starta program med en enda körning av LED-belysning
om (initiera == true)
{
Delay(10);
Serial.println("");
Serial.println("");
Serial.println("Initialising...");
Serial.println("");
int status;
Gå igenom alla åtta EL kanaler (stift 2 till 9)
för (x = 2; x < = 9; x ++)
{
digitalWrite (ledPin, hög); Aktivera LED
digitalWrite (x, hög); Aktivera kanalen EL
Delay(100); vänta för 1/10 sekund
digitalWrite (ledPin, låg); Inaktivera LED
digitalWrite (x, låg); Inaktivera EL kanalen
Delay(50); vänta för 1/10 sekund
digitalWrite (ledPin, hög); Aktivera LED
digitalWrite (x, hög); Aktivera kanalen EL
Delay(100); vänta för 1/10 sekund
digitalWrite (ledPin, låg); Inaktivera LED
digitalWrite (x, låg); Inaktivera EL kanalen
Delay(50);
avbryts körningen av initiering efter en iteration
initialisera = false;
}
Serial.println("");
Serial.println ("initiering gjort!");
Serial.println ("väntar läge trigger");
}
detail();

=== LÄGE 1 (steg igenom alla åtta EL kanaler) ===
om (läge == 1)
{
Gå igenom alla åtta EL kanaler (stift 2 till 9)
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (x, låg); Inaktivera EL kanalen
}
}

=== LÄGE 2 (fyll upp från botten då tom från botten) ===
om (läge == 2)
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
}
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, låg); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
}
}

=== LÄGE 3 (upp ner upp ner) ===
om (läge == 3)
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (x, låg); Inaktivera EL kanalen
}
för (x = 2; x < = 9; x ++)
{
detail();
y = 11-x;
digitalWrite (y, hög) Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (y, låg) Inaktivera EL kanalen
}
}

=== LEVERANSSÄTT 4 (sopa i botten till toppen, sopa ut uppifrån och ned) ===
om (läge == 4)
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög);
Delay(Time);
}
för (x = 9; x > = 2; x--)
{
detail();
digitalWrite (x, låg);
Delay(Time);
}
}

=== LÄGE 5 (stapla och unstack) ===
om (läge == 5)
{
för (x = 2; x < = 9; x ++)
{
för (y = 9; y > = x; y--)
{
digitalWrite (y, hög)
Delay(Time);
digitalWrite (y, låg)
detail();
}
digitalWrite (x, hög);
}
för (x = 9; x > = 2; x--)
{
för (y = x; y < = 9; y ++)
{
digitalWrite (y, hög)
Delay(Time);
digitalWrite (y, låg)
detail();
}
}
digitalWrite (y, låg)
Delay(Time+20);
}

=== LÄGE 6 (alternativa blinkar) ===
om (läge == 6)
{
detail();
digitalWrite (2, hög).
digitalWrite (4, hög).
digitalWrite (6, hög).
digitalWrite 8, hög.
Delay(Time+75);
detail();
digitalWrite (2, låg).
digitalWrite (4, låg).
digitalWrite (6, låg).
digitalWrite 8, låg.
digitalWrite (3, hög).
digitalWrite 5, hög,
digitalWrite (7, hög).
digitalWrite (9, hög).
Delay(Time+75);
detail();
digitalWrite (3, låg).
digitalWrite (5, låg).
digitalWrite (7, låg).
digitalWrite (9, låg).
}

=== LÄGE 7 (criss cross) ===
om (läge == 7)
{
för (x = 2; x < = 9; x ++)
{
y = 11-x;
digitalWrite (x, hög); Aktivera LED (HIGH är spänningsnivån)
digitalWrite (y, hög) Aktivera LED (HIGH är spänningsnivån)
om (x == 5)
{
Delay(Time/2);
}
annat
{
Delay(Time);
}
digitalWrite (x, låg);
digitalWrite (y, låg)
detail();
}
}

=== LÄGE 8 (ljudläge) ===
om (läge == 8)
{
Ljudtest
detailSound();
om ((soundVal,DEC) == 512)
{
ljud flash upp
för (x = 2; x < = 9; x ++)
{
digitalWrite (x, hög);
Delay(40);
}
för (x = 9; x > = 2; x--)
{
digitalWrite (x, låg);
Delay(40);
}
}
}

//=================MODE 9 ==================
om (läge == 9)
{
runAllSequences();
}

//=================MODE 10 ==================
om (läge == 10)
{
}
}

// =========================================
=== FUNGERAR ===
// =========================================

void detail()
{
läsa analogt värde och karta den till intervallet för tiden
om ((mode == 8) || (mode == 0)) om inte i ljudläge, eller om programmet inte har bara börjat
{
gör ingenting
}
annat
{
om ((potValue! = analogRead(analogInPin))) //pot ändras inte
{
tid = karta (potValue, 0, 1024, 40, 200);
skriva ut resultatet till seriell bildskärmen:
Serial.Print ("\n Potentiometer =");
Serial.Print(potValue);
Serial.Print ("\t tidsfördröjning =");
Serial.Print(Time);
Serial.Print ("MS");
vänta 2 millisekunder innan nästa slingan
för analog till digital omvandlare att bosätta sig
efter den sista behandlingen:
Delay(2);
potValue = analogRead(analogInPin);
}
}
Läs statligt av tryckknapp värdet:
buttonState = digitalRead(buttonPin);
om (buttonState == hög)
{
buttonPressed();
digitalWrite (ledPin, låg);
}
}

void detailSound()
{
soundPotThresholdValue = analogRead(analogInPin); tröskel
soundSensitivityLimit = karta (soundPotThresholdValue, 0, 1024, 0, 512);
soundVal=analogRead(analogInPinSound); faktiska ljud värdet
om (soundVal > soundSensitivityLimit)
{
Serial.Print ("\n tröskelvärdet =");
Serial.println(soundSensitivityLimit);
Serial.Print ("\n ljud ingång nivå =");
Serial.println(soundVal);
digitalWrite (ledPin, hög);
för (x = 2; x < = 9; x ++)
{
digitalWrite (x, hög);
Delay(15);
}
för (x = 2; x < = 9; x ++)
{
digitalWrite (x, låg);
Delay(15);
}
}
digitalWrite (ledPin, låg);
Delay(10);
}

void buttonPressed()
{
digitalWrite (ledPin, hög);
Delay(300); paus för att styra programmet. att säkerställa enda lägesändring
läge = läge + 1. Increment läge
om (läge > 9) / / om läget är större än 9, starta från läge 1
{
läge = 1;
Serial.println("");
Serial.println ("återställa läget sekvens");
Serial.println("");
för (x = 0; x < = 3; x ++)
{
digitalWrite (ledPin, låg);
Delay(100);
digitalWrite (ledPin, hög);
Delay(100);
digitalWrite (ledPin, låg);
}
}
Serial.println("");
Serial.println("");
Serial.println ("knappen");
Serial.Print ("läge:");
Serial.Print(mode);
Serial.println("");
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}
om läget är ljudläge, blink ledde 10 gånger snabbt
om (läge == 8) //sound
{
för (x = 0; x < = 10; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (ledPin, hög);
Delay(50);
digitalWrite (ledPin, låg);
Delay(25);
}
}
}
void runAllSequences()
{
=== LÄGE 1 (steg igenom alla 8 kanaler) ===
för (z = 0; z < = 7; z ++) //because detta är relativt kort sekvens, gör det några gånger gånger
{
Gå igenom alla åtta EL kanaler (stift 2 till 9)
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (x, låg); Inaktivera EL kanalen
}
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LÄGE 2 (fyll upp från botten då tom från botten) ===
för (z = 0; z < = 3; z ++) //because detta är relativt kort sekvens, gör det några gånger gånger
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
}
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, låg); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
}
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LÄGE 3 (upp ner upp ner) ===
för (z = 0; z < = 3; z ++) //because detta är relativt kort sekvens, gör det några gånger gånger
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög); Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (x, låg); Inaktivera EL kanalen
}
för (x = 2; x < = 9; x ++)
{
detail();
y = 11-x;
digitalWrite (y, hög) Aktivera kanalen EL
Delay(Time); vänta för 1/10 sekund
digitalWrite (y, låg) Inaktivera EL kanalen
}
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LEVERANSSÄTT 4 (sopa i botten till toppen, sopa ut uppifrån och ned) ===
för (z = 0; z < = 3; z ++) //because detta är relativt kort sekvens, gör det några gånger gånger
{
för (x = 2; x < = 9; x ++)
{
detail();
digitalWrite (x, hög);
Delay(Time);
}
för (x = 9; x > = 2; x--)
{
detail();
digitalWrite (x, låg);
Delay(Time);
}
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LÄGE 5 (stapla och unstack) ===
för (z = 0; z < = 3; z ++) //because detta är relativt kort sekvens, gör det några gånger gånger
{
för (x = 2; x < = 9; x ++)
{
för (y = 9; y > = x; y--)
{
digitalWrite (y, hög)
Delay(Time);
digitalWrite (y, låg)
detail();
}
digitalWrite (x, hög);
}
för (x = 9; x > = 2; x--)
{
för (y = x; y < = 9; y ++)
{
digitalWrite (y, hög)
Delay(Time);
digitalWrite (y, låg)
detail();
}
}
digitalWrite (y, låg)
Delay(Time+20);
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LÄGE 6 (alternativa blinkar) ===
för (z = 0; z < = 10; z ++) //because detta är en kort sekvens, gör det kanske gånger
{
detail();
digitalWrite (2, hög).
digitalWrite (4, hög).
digitalWrite (6, hög).
digitalWrite 8, hög.
Delay(Time+75);
detail();
digitalWrite (2, låg).
digitalWrite (4, låg).
digitalWrite (6, låg).
digitalWrite 8, låg.
digitalWrite (3, hög).
digitalWrite 5, hög,
digitalWrite (7, hög).
digitalWrite (9, hög).
Delay(Time+75);
detail();
digitalWrite (3, låg).
digitalWrite (5, låg).
digitalWrite (7, låg).
digitalWrite (9, låg).
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}

=== LÄGE 7 (criss cross) ===
för (z = 0; z < = 10; z ++) //because detta är en kort sekvens, gör det kanske gånger
{
för (x = 2; x < = 9; x ++)
{
y = 11-x;
digitalWrite (x, hög); Aktivera LED (HIGH är spänningsnivån)

digitalWrite (y, hög) Aktivera LED (HIGH är spänningsnivån)
om (x == 5)
{
Delay(Time/2);
}
annat
{
Delay(Time);
}
digitalWrite (x, låg);
digitalWrite (y, låg)
detail();
}
}
för (x = 2; x < = 9; x ++) //turn alla kanaler-reset för nästa slinga
{
digitalWrite (x, låg);
}
}

Se Steg
Relaterade Ämnen

Styra din Tv, Dvd och ljud system med Arduino och Android

Hej alla, detta är min andra instructable och min första på engelska, så, ledsen för misstag.Jag vill dela detta projekt det handlar om hur du kan styra din Tv, DVD och ljudanläggningen med Arduino och en app för Android med app inventor.Om du gillar...

Ljud-aktiverat och lätta upp tillbehör

jag gjorde några EL-wire halsdukar som julklappar för flera år sedan. De båda har "ljud aktiverat förare", vilket innebär att de lyser upp enligt omgivande ljudintensitet.Jacka och mössa jag gjorde för min gymnasieskola vintern formella dans.Mes...

Hand gest styrd robot med ljud aktiverat ljus system

I detta Instructable visar jag steg för steg instruktion för hur man gör finger styrd robot med ljud aktiverat ljus systemdenna robot kan styras med fingrarna fyra av din hand(left/right). Och roboten växla automatiskt på/av dess ljus när det behövs...

Bildskärmsmenyn ljud ATM-7 Smartphone talaren med Arduino och Blynk

Dessa dagar finns det flera sätt att genomföra flera zoner ljudet med smartphone baserad kontroll men de flesta är begränsade till ett par zoner eller kräver dyra egna rutor i varje läge (Hej! Sonos). En talare väljare ansluten till en mottagare med...

Spela upp ljud på dator med arduino och progduino

Idag kommer jag visa dig hur lätt det är att bygga en enkel spelare och kör det på datorn med arduino och progduino.Läs mer om progduino: http://www.progduino.comSteg 1: Arduino kod - spelaren på din dator.Kopiera koden till din arduino redaktör.void...

Mäta hastigheten på ljud med Arduino microcontroller och ultrasonic sensor

Min 6-åriga dotter, Kennet, visar hur man mäter ljudets hastighet i luft med Arduino Uno microcontroller och ultrasonic sensor.Jag tycker detta är ett bra projekt för barn att blir exponerade för vetenskap, teknik och matematik.Steg 1: Vi behöver 1....

Ljud aktiverat LED spektrumanalysator

Denna guide visar dig hur man bygger en LED spektrumanalysator. Jag byggde detta som ett tillägg till min arkad kabinett, även om du kan återanvända denna guide och använda ljuset bar någonstans du en ljud-aktiverat ljus display.Den ljusa baren använ...

Kontrollera allt och spara energi med Arduino

Jag använde detta för min egen mycket specifikt problem men det skulle kunna användas för någonting egentligen.Problemet:De flesta högtalare är inte smart, och så du måste stänga dem off manuellt, särskilt studio typ monitorhögtalare. På grund av det...

EL Wire belysning upp till ljud

för detta instructables projekt, jag trodde jag skulle ta en audio sensor, EL Wire och en jacka och har EL wire bildar en (A) för Alabama. Målet för projektet: Jag vill ha EL tråd att lysa upp när någon gjorde ljud.Nedan är en video av en demonstrati...

Piano trappor med Arduino och Raspberry Pi

Vem älskar inte musik? Dessa Piano trappor är en interaktiv och relativt smidig musikaliska installation som kan tillämpas på i princip alla trapphus. Jag byggde dem för HackPrinceton tillsammans med mina vänner Erica Portnoy och Vincent Castaneda, o...

Power övervakning med Arduino och logga in i Google blad

Sedan senaste veckorna tänkte jag på att göra ett projekt som kan hjälpa mig att hålla ett spår på min dagliga energi användningsområden. I detta projekt använder jag en 30A övervakning styrelse. denna styrelse har 6 strömsensor som kan läsa upp till...

Hur man har kul med Arduino (och bli en nörd i processen)

vill du tjäna din geek-kort - pronto? Låter komma igång! Denna guide börjar du på sökvägen till den mörka sidan med hjälp av öppen källkod Arduino utveckling och prototyping plattformen. Det kommer att introducera dig till mikrokontroller, komma igån...

Ljud Ranging för synskadade med Arduino prototypen designkoncept

detta var min idé för en enhet som skulle hjälpa den synskadade med hjälp av en ultra sonic sträcker sig sensor monterad på en hatt. I grunden är tanken att enheten skulle tona ut avstånd för en synskadad person ger dem möjlighet att i grunden se med...

Taligenkänning med Arduino och BitVoicer Server

I detta Instructable ska jag visa hur man använder en Arduino ombord och BitVoicer Server för att kontrollera några lysdioder med röstkommandon. Jag kommer att använda Arduino Micro i detta Instructable, men du kan använda en Arduino ombord du har ti...

Gå av i soffan, med Arduino, 3d tryckta inhägnad och programmerade med Embrio

Den grundläggande idén är att skapa något som kan upptäcka när mina hundar får på soffan när inte jag är där och "uppmuntra dem att få bort". Detta sker med en passiv IR-sensor och gör oljud att hundar inte gillar.Jag såg ett annat liknande proj...

Ljud aktiverat utlopp

Clapper var en populär gadget i 80 och 90-talet. Det kan du vända apparater på och av genom att bara klappa. Det kan vara ganska användbart, men det har vissa begränsningar. Först finns problemet med höga ljud av misstag stänga ljuset. Också, du kan...

2WD röst kontrollerat Robot med Arduino och BitVoicer Server

I detta Instructable ska jag visa hur man bygger en 2WD röststyrd robot. Även om jag kontrollera endast DC motorer om du vill flytta roboten, samma tillvägagångssätt kan användas till röststyrning stegmotorer och servomotorer, så om du planerar att b...

Taligenkänning och syntes med Arduino

I min tidigare Instructable visade jag hur man styr ett par lysdioder med en Arduino ombord och BitVoicer Server. I detta Instructable ska jag göra saker lite mer komplicerat. Jag kommer också att syntetisera tal med Arduino DUEdigital till analog om...

Röst aktiverat LED-belysning med Arduino

Detta projekt är ett tillägg för taligenkänning med Arduino med leandro4b (). Men istället för att använda 3 separata färgade lysdioder, använde jag en multicolor 4-kanals RGBW LED utsläppskälla. Jag hade tillfälle att arbeta på LED Engin förra somma...