Stap 3: Combineren de sensoren en Test
Vervolgens zullen we deze twee dingen die wij hebben verbonden tot een intelligentere interactie combineren. Wij willen IR sensing wilt starten wanneer de Ambient Light Sensor valt hieronder is het mediane waarde, laten we zeggen 300. En we willen de IR te activeren wanneer de rivier boven haar lage waarde ontspringt, laten we zeggen 80, om het te geven een beetje speelruimte.
int led = 13; //We’re using the built in LED as a test int IRsensorPin = 2; //Infrared Sensor Pin int IRsense = 0; //IR Sensor Value int brightnessPin = 3; //Ambient Brightness Pin int brightness; //Ambient Light Value float period; //Storing our Pulse Width Period float hertz = 9; //Frequency of the flashing float width = 0.2; //The PWM of our Flashing float onTime, offTime; //Holders for actual Delay Times void setup() { pinMode(led, OUTPUT); //Set Power LED as OUTPUT Serial.begin(9600); //Start Serial period = (1/hertz)*1000; //convert Hertz into millisecond delay times onTime = period * width; //calculate On time offTime = period * abs(1-width); //calculate Off time } void loop() { brightness = analogRead(brightnessPin); //Read ambient light level // Serial.print(“B: “); Serial.println(brightness); //print out value for DEBUG if(brightness < 300) { //start IR sensing IF ambient light level is below this level IRsense = analogRead(IRsensorPin); //Read IR sensor // Serial.print(“IR: “); Serial.println(IRsense); //print out value for DEBUG if(IRsense > 80) { //if Infrared sensor detects IR light vertigo(); //Flash Light } else digitalWrite(led, LOW); //if not, keep LED OFF } } void vertigo() { //Flash LED bool flashing = 1; //a holder for the state of the flashing (true or false) while(flashing == 1) { //if flashing is TRUE //Flash LED at pre-determined rate digitalWrite(led, HIGH); delay(onTime); digitalWrite(led, LOW); delay(offTime); if(analogRead(brightnessPin) < 300) flashing = 1; //if ambient light levels rise (ie. you turn on a light) turn Flashing to FALSE else flashing = 0; //if they don't...keep on flashing } }
Probeer het uit! Krijgen van een IR-lichtbron (nacht visie, afstandsbediening, IR LED kaars... enz), zet de lichten uit en probeer het schijnt op de sensor. Bekijk de seriële monitoren om ervoor te zorgen dat alles OK is triggering, waarden naar wens aanpassen.