Go Down

Topic: Détect if a led is HIGH (Read 371 times) previous topic - next topic

raphael753

Hello !!

I tried to detect when a light is On and write on the serial port, but I don't find how.

Maybe someone can help me ? I just begin



Quote


/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
*/

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int derniere = 0;
int led = 13;

// the setup routine runs once when you press reset:
void setup() {     

Serial.begin(9600);
         
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
 
 
    if ( derniere == HIGH){
    Serial.print("The Lamp is ON ");
    Serial.println("The Lamp is ON ");
  }
 
}



AWOL

"derniere" is initialised to be zero, and because you never write to it, that is how it will stay.

Have you tried
Code: [Select]
derniere = digitalRead (led);?

(of course, because you are the one doing the writing of "led", you should always know whether it is on or off)
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

guix

Salut, sans utiliser de delay tu peux faire comme ça:
Code: [Select]

unsigned long old_millis;
bool light_state;

void loop()
{
  if ( millis() - old_millis >= 1000 )
  {
    light_state = !light_state;
    digitalWrite( led, light_state );
    Serial.println( light_state ? "The Lamp is ON" : "The Lamp is OFF" );
    old_millis = millis();
  }
}


Dans ton code, même si tu assigne une valeur HIGH à "derniere", puis une valeur LOW une seconde plus tard, alors ton "if (derniere == HIGH)" ne sera jamais true, puisque le code est séquentiel :)

Go Up