FC-04 ljud Sensor sköt sina gränser (11 / 14 steg)
Steg 11: Koden till Syncronize lysdioderna
Obs: Var noga med att kontrollera steg 13: "Ändringar i sista minuten" där jag har noterat en minst en förändring så långt som gjordes efter detta Instructable var 99% klar.
Här kan du gå! Den aktuella kodfilen är ansluten och kommer belastningen automatiskt till Arduino gränssnittet för dig, bara dubbelklicka på filen.
Kommentarerna nedan, kommer början av koden fil, förhoppningsvis besvara frågan/frågorna om hur allt detta kommer tillsammans. Även om jag kommer att lägga här, en gång, en anteckning om POTTEN på sund sensorn. Bli vän med den POTTEN, ta den till middag (eller drycker), sova med det, gör vad du har till för att förstå hur petiga hon är (ni gifta killar förstår). Damer - skojar bara! :-)
Några tråkiga specifikationerna är i nästa steg så jag säger adjö här. Lycka till bör du prova den här. Jag vet att du kommer svär jag galen och detta inte fungerar, det är tills du får att ljud sensor POTTEN under kontroll. Jag är alltid beredd att svara på frågor eller hjälpa på något sätt jag kan så bli inte blyg om du har en fråga (limit 2 per kund) :-)
Skrivet av Bradley S. Worthington-White 01/13/2016
/*
* Denna skiss är som följer;
*
* Det "genomsnittliga" sensor värdet är genomsnittet av tre sammanhängande behandlingar
* för det aktuella värdet för sensorer. Detta värde används inom en rad
* av värden att vända på specifika lysdioder.
*
* "På" uttalanden som aktiverar lysdioderna läses flera gånger
* innan alla "OFF" uttalanden är skrivskyddade. Hur många gånger på "ON"
* meddelanden läses bestäms av värdet av "räkningen"
* under avsnittet "CheckCount".
*
* "UseSeq" avgör vilka "På" uttalanden läses. Det finns
* två val för att aktivera lysdioderna. Ordnar en vänder på
* varje ledde individuellt, medan sekvens två grupper lysdioderna
* tillsammans (två per grupp) och vänder grupperna på.
*
* När värdet i räkningen är uppfyllt läses uttalandena som "OFF".
* Det finns fyra individuella "OFF" sekvenser, som en läses
* bestäms av värdet på OFFcount. Eftersom varje "OFF"-sekvens
* återställer "räknas" till noll och återgår till "CheckCount" bara en "OFF"
* sekvens avläses innan programmet återgår till uttalandena som "På"
* och processen börjar om igen.
*
*/
/ * Obs: gör inte några justeringar till värdena i det här skriptet om du
* har aktiverat den seriella monitorn (Serial.begin). Kör seriella
* monitor drastiskt minskar hastigheten på programmet och kommer att kasta
* allt av. Använda följetong bildskärmen om du behöver, men kom ihåg
* att stänga av innan du ändrar värden i skriptet.
*/
CONST int SenOut = A1; utdata från sensorn till Analog Pin A1
CONST int RLED1 = 3; tilldela digitala stift 3-12 lysdioder
CONST int RLED2 = 4;
CONST int RLED3 = 5;
CONST int RLED4 = 6;
CONST int RLED5 = 7.
CONST int RLED6 = 8;
CONST int RLED7 = 9;
CONST int RLED8 = 10;
CONST int RLED9 = 11;
CONST int RLED10 = 12;
int count = 0; räknare för # gånger funktionerna "På" läses
int UseSeq = 0; som "På" funktion sekvens att använda
int OFFcount = 0; räknaren för "OFF" funktioner
int sensVal [3]. skapar array för sensordata
int i, j. räknaren variabler
lång genomsnittet. butiker medelvärde sensor
void setup()
{
pinMode (RLED1, OUTPUT); ställa in digital pins som utgång
pinMode (RLED2, OUTPUT);
pinMode (RLED3, OUTPUT);
pinMode (RLED4, OUTPUT);
pinMode (RLED5, OUTPUT);
pinMode (RLED6, OUTPUT);
pinMode (RLED7, OUTPUT);
pinMode (RLED8, OUTPUT);
pinMode (RLED9, OUTPUT);
pinMode (RLED10, OUTPUT);
}
void loop()
{
CheckCount:
om (count > 1100) goto ledsOFF; / / gånger "På" uttalanden läsa före "OFF" uttalanden
count = (antal + 1); / / steg "räkna" med 1 varje körning genom uttalandena som "På"
sensVal[(i++) % 3] = analogRead(SenOut); Börja i genomsnitt sensor värde
genomsnittliga = 0;
för (j = 0; j < 3; j ++)
{
genomsnittliga += sensVal [j];
}
genomsnittliga = genomsnitt / 3; Slutet i genomsnitt sensor värde
UseSeq = 1; bestämmer vilka "På" ordning att använda
om (UseSeq == 1) goto ON1;
om (UseSeq == 2) goto ON2;
ON1: / / first "På" sekvens
om (i genomsnitt > 875 & & genomsnittlig < 885) digitalWrite (RLED1, hög);
om (i genomsnitt > 800 & & genomsnittlig < 815) digitalWrite (RLED2, hög);
om (i genomsnitt > 700 & & genomsnittlig < 703) digitalWrite (RLED3, hög);
om (i genomsnitt > 600 & & genomsnittlig < 604) digitalWrite (RLED4, hög);
om (i genomsnitt > 500 & & genomsnittlig < 503) digitalWrite (RLED5, hög);
om (i genomsnitt > 400 & & genomsnittlig < 404) digitalWrite (RLED6, hög);
om (i genomsnitt > 300 & & genomsnittlig < 303) digitalWrite (RLED7, hög);
om (i genomsnitt > 200 & & genomsnittlig < 203) digitalWrite (RLED8, hög);
om (i genomsnitt > 100 & & genomsnittlig < 103) digitalWrite (RLED9, hög);
om (i genomsnitt > 50 & & genomsnittlig < 52) digitalWrite (RLED10, hög);
gå till CheckCount; tillbaka till CheckCount
On2: / / andra "På" sekvens
om (i genomsnitt > 875 & & genomsnittlig < 878) digitalWrite (RLED1, hög);
om (i genomsnitt > 875 & & genomsnittlig < 878) digitalWrite (RLED2, hög);
om (i genomsnitt > 700 & & genomsnittlig < 703) digitalWrite (RLED3, hög);
om (i genomsnitt > 700 & & genomsnittlig < 703) digitalWrite (RLED4, hög);
om (i genomsnitt > 500 & & genomsnittlig < 503) digitalWrite (RLED5, hög);
om (i genomsnitt > 500 & & genomsnittlig < 503) digitalWrite (RLED6, hög);
om (i genomsnitt > 300 & & genomsnittlig < 303) digitalWrite (RLED7, hög);
om (i genomsnitt > 300 & & genomsnittlig < 303) digitalWrite (RLED8, hög);
om (i genomsnitt > 100 & & genomsnittlig < 103) digitalWrite (RLED9, hög);
om (i genomsnitt > 100 & & genomsnittlig < 103) digitalWrite (RLED10, hög);
gå till CheckCount;
ledsOFF: / / av sekvenser för lysdioder
OFFcount = (OFFcount + 1); räknar antalet gånger "OFF" uttalanden har lästs if(OFFcount == 1) goto OFF1; som "OFF" sekvens körs
annat if (OFFcount == 2) goto OFF3;
annat if (OFFcount == 3) goto OFF2;
annat if (OFFcount == 4) goto OFF4;
OFF1: / / first "OFF" sekvens
digitalWrite (RLED1, låg);
digitalWrite (RLED2, låg);
digitalWrite (RLED3, låg);
digitalWrite (RLED4, låg);
digitalWrite (RLED5, låg);
Count = 0; återställer värdet av antal under "CheckCount" till noll
gå till CheckCount; tillbaka till CheckCount
OFF2: / / andra "OFF" sekvens
digitalWrite (RLED6, låg);
digitalWrite (RLED7, låg);
digitalWrite (RLED8, låg);
digitalWrite (RLED9, låg);
digitalWrite (RLED10, låg);
Count = 0;
gå till CheckCount;
OFF3: / / tredje "OFF" sekvens
digitalWrite (RLED1, låg);
digitalWrite (RLED2, låg);
digitalWrite (RLED3, låg);
digitalWrite (RLED4, låg);
digitalWrite (RLED5, låg);
digitalWrite (RLED6, låg);
digitalWrite (RLED7, låg);
digitalWrite (RLED8, låg);
digitalWrite (RLED9, låg);
digitalWrite (RLED10, låg);
Count = 0;
gå till CheckCount;
OFF4: / / fjärde "OFF" sekvens
digitalWrite (RLED10, låg);
digitalWrite (RLED9, låg);
digitalWrite (RLED8, låg);
digitalWrite (RLED7, låg);
digitalWrite (RLED6, låg);
digitalWrite (RLED5, låg);
digitalWrite (RLED4, låg);
digitalWrite (RLED3, låg);
digitalWrite (RLED2, låg);
digitalWrite (RLED1, låg);
OFFcount = 0; återställer OFFcount till noll
Count = 0;
gå till CheckCount;
}