[RESOLU] Allumage d'une LED si tension detectee

Bonjour,

Je cherche a faire un petit programme tout simple d'allumage d'une LED si une tension est detectee.

Voici mon petit bout de code :

const int led = 7;
const int input = 0;
int etat_led;
int etat = 0;

void setup()
  {
    pinMode(led, OUTPUT);
    pinMode(input, INPUT);
    digitalWrite(led, HIGH);
  }
  
void loop()
  {
    etat = analogRead(input);
    if(etat != 0)
      {
        digitalWrite(led, LOW);
      }
    if(etat = 0)
      {
        digitalWrite(led, HIGH);
      }
  }

Ma led est donc sensee s'allumer que si le PIN 0 detecte une tension differente de 0.
Malhereusement sans que je mette aucune entree, ma LED d'allume directement...
Par la suite le but est que il y aura deux etats pour que la LED s'allume :

  • Si 5V : LED allumee.
  • Si 0V : LED eteinte.

Je ne comprend pas d'ou cela vient....

Si quelqu'un arrive a m'eclairer...

Merci beaucoup...

PS : Desole pour les accents ;ais je suis sur un clavier qwerty XD

Bonjour,

Essaye ça :

const int led = 7;
const int input = A0;

void setup() 
{
  pinMode(led, OUTPUT);
  pinMode(input, INPUT);
  digitalWrite(led, LOW);
}
  
void loop()
{
  int etat = analogRead(input);
  if(etat > 5)
        digitalWrite(led, HIGH);
  else
        digitalWrite(led, LOW);
}

Ps: si tu laisse la broche analogique "volante" tu auras des parasite -> la led va faire n'importe quoi.
Il faut absolument quelle soit relié à une source de tension 0~5v.

Merci beaucoup,
Mais je viens juste de resoudre mon probleme :slight_smile: !
J'ai affiche les valeurs lu sur le terminal et effectivement qund il n'y avait rien, cela me retournait une valeur au environ de 250 au lieu de 0.
Bonne journee!

Attention!!!

if(etat != 0)
      {
        digitalWrite(led, LOW);
      }
    if(etat = 0)
      {
        digitalWrite(led, HIGH);
      }

Ton "if (etat = 0)" sera toujours vrai!!! en effet, entre les parenthèses, c'est une instruction que tu as mis, pas une condition. une condition d'égalité s'écrit "(etat == 0)". une instruction aussi basique que l'assignement d'une valeur à une variable renvoie toujours vrai (il n'y a pas eu d'erreur pendant l'éxécution de l'instruction). On rencontre parfois des if comme : if(z = x + y), le if n'est vérifié que si l'opération z = x + y s'est bien passée...

Dans ce code, la led sera toujours allumée, puisque le second if est toujours vérifié. En plus, après ce if, etat sera toujours égal à 0... C'est une erreur que j'ai souvent faite au début en C, peut-être est-ce une simple faute de frappe, mais c'est très handicapant quand on ne sait pas d'où vient l'erreur...

Super_Cinci:
Ton "if (etat = 0)" sera toujours vrai!!!

J'avais même pas fait gaffe au simple égal :stuck_out_tongue_closed_eyes:
Moi je pensai à une broche laissé flottante ... plus c'est simple moins je le vois :.

Sauf que de toute façon la broche flottante aurait posé problème à un moment ou un autre