Pages: [1]   Go Down
Author Topic: Détect if a led is HIGH  (Read 265 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 5
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 ");
  }
 
}


Logged

Global Moderator
UK
Offline Offline
Brattain Member
*****
Karma: 238
Posts: 24317
I don't think you connected the grounds, Dave.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Have you tried
Code:
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)
Logged

"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.

France
Offline Offline
God Member
*****
Karma: 29
Posts: 898
Scientia potentia est.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut, sans utiliser de delay tu peux faire comme ça:
Code:
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 smiley
Logged

Pages: [1]   Go Up
Jump to: