I work with an IR breakbeam sensor, a green, red and yellow LED.
If the sensor is "high", a green LED must be lit and the red and yellow LED must be off.
If the sensor is "low", the green LED must be off, the yellow LED must be on and after 3 seconds the yellow LED must be off, the red LED must be on. I have the problem that the yellow LED is still on.
How should I resolve this? Someone who knows?
My program is:
/*
IR Breakbeam sensor demo!
*/
#define LEDPIN 8
#define geelPin 9
#define roodPin 10
// Pin 13: Arduino has an LED connected on pin 13
// Pin 11: Teensy 2.0 has the LED on pin 11
// Pin 6: Teensy++ 2.0 has the LED on pin 6
// Pin 13: Teensy 3.0 has the LED on pin 13
#define SENSORPIN 2
// variables will change:
int sensorState = 0, lastState=0; // variable for reading the pushbutton status
void setup() {
// initialize the LED pin as an output:
pinMode(LEDPIN, OUTPUT);
pinMode(roodPin,OUTPUT);
pinMode(geelPin,OUTPUT);
// initialize the sensor pin as an input:
pinMode(SENSORPIN, INPUT);
digitalWrite(SENSORPIN, HIGH); // turn on the pullup
Serial.begin(9600);
}
void loop(){
// read the state of the pushbutton value:
sensorState = digitalRead(SENSORPIN);
// check if the sensor beam is broken
// if it is, the sensorState is LOW:
if (sensorState == HIGH) {
// turn LED on:
digitalWrite(LEDPIN, HIGH);
digitalWrite(roodPin,LOW);
digitalWrite(geelPin,LOW);
}
else {
// turn LED off:
digitalWrite(LEDPIN, LOW);
digitalWrite(geelPin,HIGH);
delay(3000);
digitalWrite(geelPin,LOW);
digitalWrite(roodPin,HIGH);
}
digitalWrite(geelPin,LOW);
if (sensorState && !lastState) {
Serial.println("Unbroken");
}
if (!sensorState && lastState) {
Serial.println("Broken");
}
lastState = sensorState;
}