Go Down

Topic: test med to LDR motstander (Read 2608 times) previous topic - next topic

BjornTore

Koplet en 3K LDR(1) til 5V og vidre til AnalogPin A1 og så en 22K resistor mellom A1 og Gnd.
Koplet en 3K LDR(2) til 5V og vidre til AnalogPin A2 og så en 22K resistor mellom A2 og Gnd.
Ønsker å få den interne LED13 til å tenne dersom LDR(1) mottar mer lys enn LDR(2).

Fikk det ikke til. LED13 lyste hele tiden. Hva er feil?

Brukte dette sketchet:

#define ledPin 13

int ldr1 = 1;            //LDR1 is connected to analog pin0
int ldr2 = 2;            //LDR2 is connected to analog pin1
int ldr1_value = 0;        //variable to store LDR1 values
int ldr2_value = 0;        //variable to store LDR2 values

void setup(){
pinMode (ledPin, OUTPUT);
}
void loop()
{
  ledPin, LOW;
  analogRead(ldr1);          //reads the light hitting LDR1
  ldr2_value = analogRead(ldr2);          //reads the light hitting LDR2
 
  delay(5000);   
if (ldr1_value > 1)
{
  ledPin, LOW;
  delay(5000);
}
}

BjornTore

Erni

der er et par ting:

ledPin, LOW;

Jeg tror du mener

digitalWrite(ledPin, LOW);

if (ldr1_value > 1)

ldr1_value , bliver ikke tildelt nogen værdi

analogRead(ldr1);

skulle være  ldr1_value= analogRead(ldr1);

Prøv at udskrive måleværdierne, så du kan se om din IF sætning giver mening

BjornTore

Tusen takk for hjelpen. Du har helt rett, det var flere elementære feil.
Fant knappen for "serial monitor" og da ble det så mye enklere å se hva som hendte.

Det endelige scetchet ble slik:

#define LED 13
#define LED2 11
#define BUTTON 7


int ldr1 = 0;            //LDR1 is connected to analog pin0
int ldr2 = 1;            //LDR2 is connected to analog pin1
int ldr3 = 2;           //variable to store BUTTON values
int ldr1_value = 0;        //variable to store LDR1 values
int ldr2_value = 0;        //variable to store LDR2 values
int ldr3_value = 0;        //variable to store LDR2 values

void setup()
{
  Serial.begin(9600);   //start outputting data to serial monitor
}


void loop()
{
  ldr1_value = analogRead(ldr1);          //reads the light hitting LDR1
  ldr2_value = analogRead(ldr2);          //reads the light hitting LDR2
  ldr3_value = analogRead(ldr3);          //reads the button
 
  Serial.print("LDR1 reading= ");
  Serial.println(ldr1_value);                 //prints the LDR values to serial monitor
  Serial.print("LDR2 reading= ");
  Serial.println(ldr2_value);                 //prints the LDR values to serial monitor
  Serial.print("BUTTON reading= ");
  Serial.println(ldr3_value);                 //prints the LDR values to serial monitordelay(3000);                  //wait for 50 ms
delay (1000);

if (ldr1_value > ldr2_value)
{
digitalWrite (LED, HIGH);
delay(1000);
digitalWrite (LED, LOW);
if (ldr3_value < 100)
{
digitalWrite (LED, LOW);
digitalWrite (LED2, HIGH);
delay(10000);
digitalWrite (LED2, LOW);
delay(10000);
}
}}
BjornTore

Go Up