Stap 6: Extra uitdaging activiteit
Grote baan uitroeien van de zombies cadet! Als voorzorgsmaatregel, laten we toevoegen naar twee LEDs en twee draden met een gewijzigde versie van de code zodat u kunt lichten inschakelen wanneer een zombie wordt gedetecteerd.
Uw bestaande installatie zodat deze overeenkomen met het bovenstaande diagram te wijzigen. Je hebt een rode LED (verbonden met pin 7) en een groene LED (verbonden met pin ~ 9).
De Code
Kopieer en plak de code hieronder de lijn in de Arduino IDE software en uploaden naar de Arduino. Vindt u de nummers wilt wijzigen in de code hieronder om te wijzigen van de gevoeligheid van de sensoren?
#include <Arduion.h>#include <Wire.h> #include <ArdusatSDK.h>luminosity_t lum; temperature_t temp;int baselineTemp = 0; int baselineLight = 0;int greenLight = 7; int redLight = 9;void setup(void) { Serial.begin(9600); pinMode(greenLight, OUTPUT); pinMode(redLight, OUTPUT); if (!beginInfraredTemperatureSensor()) { Serial.println("can't init IR temperature sensor"); } if (!beginLuminositySensor()) { Serial.println("can't init luminosity sensor"); } digitalWrite(greenLight, HIGH); digitalWrite(redLight, HIGH); readInfraredTemperature(&temp); readLuminosity(&lum); baselineLight = lum.lux; baselineTemp = temp.t; for(int x = 0; x < 100; x++) { readInfraredTemperature(&temp); readLuminosity(&lum); baselineLight += lum.lux; baselineTemp += temp.t; baselineLight /= 2; baselineTemp /= 2; } digitalWrite(greenLight, LOW); digitalWrite(redLight, LOW); }void loop(void) { readInfraredTemperature(&temp); Serial.print("temp: \t"); Serial.println(temperatureToJSON("infared", &temp)); readLuminosity(&lum); Serial.print("lum: \t"); Serial.println(luminosityToJSON("luminosity", &lum)); if( lum.lux <= (baselineLight * .6) ) { if( temp.t >= (baselineTemp * 1.05 )) { digitalWrite( greenLight, HIGH ); digitalWrite( redLight, LOW ); } else if ( temp.t <= (baselineTemp * 1.03) ) { digitalWrite( redLight, HIGH ); digitalWrite( greenLight, LOW ); } else { digitalWrite( redLight, HIGH ); digitalWrite( greenLight, HIGH ); } } else if ( lum.lux >= (baselineLight *.9) ) { digitalWrite( redLight, LOW ); digitalWrite( greenLight, LOW ); } delay(100); }