Eld reaktiva LED (3 / 4 steg)
Steg 3: kodning
Detta är koden jag använde för mitt projekt:
int soundDetectedPin = 10; Använda Pin 10 som vårt bidrag
int soundDetectedVal = hög; Det är där vi spela in vår ljud mätningen boolean bAlarm = false; osignerade långa lastSoundDetectTime; Registrera den tid att vi mätt en sund osignerade långa CurrentTime; osignerade långa ElapsedTime;
int soundAlarmTime = 50;
int isFlamePin = 7. Detta är vår ingångsstift int isFlame = hög; HÖG INNEBÄR INGEN LÅGA
int soundCounter = 0;
int redPin = 6; int greenPin = 5; int bluePin = 3;
int ledde = 13.
int temp5v = 2;
#define COMMON_ANODE
void setup() {pinMode (temp5v, produktionen); pinMode (ledde, OUTPUT); pinMode (isFlamePin, ingång), pinMode (redPin, produktionen); pinMode (greenPin, produktionen); pinMode (bluePin, produktionen); pinMode (soundDetectedPin, ingång); Serial.BEGIN(9600); }
void loop() {digitalWrite (temp5v, hög), soundDetectedVal = digitalRead (soundDetectedPin); / / läsa ljud alarm tid isFlame = digitalRead(isFlamePin);
IF(isFlame == low) {//if vi upptäcka flame Serial.println("Lit"); om (soundCounter == 1){setColor(255,0,0);} //set färg till röd om (soundCounter == 2){setColor(0,255,0);} //set färg till grön om (soundCounter == 3){setColor(0,0,255);} //set färg till blå om (soundCounter == 4){setColor(0,255,255);} //set färg till aqua if (soundCounter == 5){setColor(255,255,255);} //set färg till vit-ish delay(50);} annat {Serial.println ("kallt af"); setColor(0,0,0);}
IF(soundDetectedVal == low) {/ / lastSoundDetectTime = millis(); / / / / if(!bAlarm) {/ / soundCounter ++; / / Serial.println(soundCounter); / / bAlarm = true; / /} / /} annat {/ / if((millis()-lastSoundDetectTime) > soundAlarmTime & & bAlarm) {/ / bAlarm = false; / /} / /}
om (soundDetectedVal == låg) / / om vi hör ett ljud {lastSoundDetectTime = millis(); / / spela in tiden för ljud larm / / följande är så att du inte rulla på skärmen utdata om (! bAlarm) {/ / Serial.println(ElapsedTime); soundCounter ++; Serial.println (högt, högt"); Serial.println(soundCounter); bAlarm = sant; {}} annat {om ((millis()-lastSoundDetectTime) > soundAlarmTime & & bAlarm) {Serial.println("quiet"); digitalWrite (led, låg); bAlarm = false;}}
CurrentTime = millis(); ElapsedTime = CurrentTime - StartTime;
Återställ de counter if(soundCounter == 6) {soundCounter = 1;}
}
Annullera setColor (int rött, int grön, int blå) {#ifdef COMMON_ANODE röd = 255 - röd, grön = 255 - grön, blå = 255 - blå, #endif analogWrite (redPin, röd), analogWrite (greenPin, grön); analogWrite (bluePin, blå);}