Go Down

Topic: 1 photoresistor 2 leds (sorry for my english) (Read 1 time) previous topic - next topic

kevindorner

Mar 05, 2011, 12:34 pm Last Edit: Mar 05, 2011, 05:11 pm by kevindorner Reason: 1
Hi,
I am making a school project until the 14th, but i am new with programming.
A photoresistor controlls the leds. If i place my hand over the photoresistor, led2 goes on.
If I cover it, but then remove my hand, led1 goes on.

PLEASE HELP ME!

task:
1.read the photoresistor
2.wait 0,5 seconds
3.read the photoresistor again

a)if the light that reaches the photoresistor is interrupted for a short time, set led1 high
b)if the light that reaches the photoresistor is interrupted for a long time, set led2 high

=>that means: a)if i move my hand once over it, set led 1 high
b)if i cover it, set led 2 high

I need a programm that looks like this:

Quote

int photoIn = 1;
int led1 = 11;
int led2 = 12;
int setPoint = 350;

void setup()
{
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
}
void loop() {
 Value = analogRead(photoIn);
 
 if (Value < setPoint;
      delay(500);
     Value > setPoint;)
 {
   digitalWrite(led1, HIGH);
    delay(1000)
   digitalWrite(led1, LOW);
 }

 if (Value < setPoint;
      delay(500);
     Value < setPoint;)
 {
   digitalWrite(led2, HIGH);
    delay(1000)
   digitalWrite(led2, LOW);
 }



Coding Badly

Two things...

1. Please do not multi-post.

2. Do you have a question about robotics?

lemio

Nice to see that they are doing Arduino projects on your school :P
The code would be something like this:
Quote

int photoIn = 1;
int led1 = 11;
int led2 = 12;
int value = 0;
byte last_value = false;
/*
Change this value to the point where it works, 
 it depends on how light the area is.
 */
int setPoint = 350;

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}
void loop() {
  value = analogRead(photoIn);

  if (value < setPoint){
    if (last_value==true){
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
    }  
    last_value = false;
  }
  else{
    if (last_value==true){
      digitalWrite(led1,LOW);
      digitalWrite(led2,HIGH);
    }
    last_value = true;
  }
  delay(500);
}

But if you hold your hand for 0.1 seconds this script won't work. This only works if you hold your hand for 0.5 seconds. Success with your project.

kevindorner

I need somethig like this:


Code: [Select]
int photoIn = 1;
int led1 = 11;
int led2 = 12;
int value = 0;
int setPoint = 350;

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}
void loop() {
  value = analogRead(photoIn);

  if (value < setPoint){
    delay(500);
    if (value < setPoint){
      digitalWrite(led1,HIGH);
      digitalWrite(led2,LOW);
      delay(1000);
      digitalWrite(led1,LOW);} 
   
    else{digitalWrite(led2,HIGH);
      digitalWrite(led1,LOW);
      delay(1000);
      digitalWrite(led2,LOW);}
 
     }
else{
      digitalWrite(led1,LOW);
      digitalWrite(led2,LOW);
       }
   
}

Go Up