hello, everyone.
I face a probelm in programming my ardunio using IR sensor to do the following:
If IR sensor goes LOW, start counting until the it goes HIGH in which a varible called duration take the counting value, and then check for four states. While in each state there is a certain command.
The problem is I need counting goes to 0 after duration take its value, but it did not work becuase whenever I add count = 0; in the code the counting did not work.
Here is my code:
int LED1 = 4;
int LED2 = 5;
int LED3 = 6;
int LEDc = 7;
int IR = 2;
boolean currentstate; // Current state of IR input scan
unsigned long duration;
int count = 0;
void setup() {
pinMode(IR,INPUT);
Serial.begin(9600);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
pinMode(LED3,OUTPUT);
pinMode(LEDc,OUTPUT);
digitalWrite(LED1,HIGH);
digitalWrite(LED2,HIGH);
digitalWrite(LED3,HIGH);
digitalWrite(LEDc,HIGH);
delay(2000);
digitalWrite(LED1,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);
digitalWrite(LEDc,LOW);
}
void loop() {
count=0;
currentstate = digitalRead(IR);
if( currentstate == LOW )
{
digitalWrite(LEDc,HIGH);
count++;
Serial.print("Time: ");
Serial.println(count); //prints time since program started
delay(1000); // wait a second so as not to send massive amounts of data
}
if (currentstate == HIGH){
digitalWrite(LEDc,LOW);
duration = count;
if (duration <=4 && duration >0){
digitalWrite(LED1,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED3,LOW);}
else if (duration >4 && duration <=7){
digitalWrite(LED2,HIGH);
digitalWrite(LED1,LOW);
digitalWrite(LED3,LOW);}
else if (duration >7){
digitalWrite(LED3,HIGH);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);}
else if (duration ==0){
digitalWrite(LED3,LOW);
digitalWrite(LED2,LOW);
digitalWrite(LED1,LOW);}
}
Serial.print("duration: ");
Serial.println(duration); //prints time since program started
delay(1000); // wait a second so as not to send massive amounts of data
}