remplacement d'une led par un relais 5 volt

/* Arduino Security System with the Keypad and LCD 
 * Creator Mert Kılıç - Mert Arduino Tutorial and Project
 * Please subscribe for support
 * Thanks
 */

#include <LiquidCrystal.h> //include LCD library (standard library)
#include <Keypad.h> //include keypad library - first you must install library (library link in the video description)

#define redLED 10 //define the LED pins
#define greenLED 11

char* password ="3945"; //create a password
int pozisyon = 0; //keypad position

const byte rows = 4; //number of the keypad's rows and columns
const byte cols = 4;

char keyMap [rows] [cols] = { //define the cymbols on the buttons of the keypad

  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins [rows] = {2, 3, 4, 5}; //pins of the keypad
byte colPins [cols] = {6, 7, 8, 9};

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, rows, cols);

LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // pins of the LCD. (RS, E, D4, D5, D6, D7)

void setup(){

  lcd.begin(16, 2);
  pinMode(redLED, OUTPUT);  //set the LED as an output
  pinMode(greenLED, OUTPUT);
  setLocked (true);//state of the password
}

void loop(){

  char whichKey = myKeypad.getKey(); //define which key is pressed with getKey

  lcd.setCursor(0, 0);
  lcd.print(" MARION APPT 4 ");
  lcd.setCursor(0, 1);
  lcd.print(" TEL0680184xxx ");
 

  if(whichKey == '*' || whichKey == '#' || whichKey == 'A' ||       //define invalid keys
  whichKey == 'B' || whichKey == 'C' || whichKey == 'D'){

    pozisyon=0;
    setLocked (true);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" ENTER PASSWORD ");
    delay(2000);
    lcd.clear();
  }
  if(whichKey == password [pozisyon]){

    pozisyon ++;
  }
  if(pozisyon == 4){
    setLocked (false);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("******MERCI*****");
    delay(2000);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" CLAVIER BLOQUE ");
    lcd.setCursor(0, 1);
    lcd.print("PRESS A B C ou D");  // appuyer sur A B C ou D pour entrer le code à nouveau
    delay(3000);
    lcd.clear();
  }
  delay(100);
}

void setLocked(int locked){
  if(locked){
    digitalWrite(redLED, HIGH);
    digitalWrite(greenLED, LOW);
    }
    else{
      digitalWrite(redLED, LOW);
      digitalWrite(greenLED, HIGH);
      delay(5000);  // la led verte s'éteint mais il faut appuyer sur a b c ou d pour réarmer
      digitalWrite(redLED, HIGH);
      digitalWrite(greenLED, LOW);
    }
  }

Bonjour;
J'ai pris ce code sur internet pour, au final, mettre une gâchette électrique sur ma boite à lettre.
j'ai ajouté un délais de 5000 pour que le solénoïde ne chauffe pas mais comme vous pouvez le constater sur la photo, la led verte n'est pas allumé mais le relais est activé, pourtant la broche 'in' du relais est branché sur la led mais quelques millivolts passent apparemment, suffisant pour activer le relais

Pourriez vous m'aider pour corriger le code afin qu'il soit défini que greenLED est un signal pour activer un relais pendant 5 sec après que le code ait été entré.
je précise qu'avec le code d'origine, greenLED reste toujours allumé lorsque le code est entré, pour l'éteindre il fallait appuyer sur A, B, C, D, # ou *
Je suis novice, j'apprend grace à internet depuis peu. merci pour votre aide
voici le code d'origine:

Définir les touches du clavier
/ * Système de sécurité Arduino avec clavier et écran LCD 
 * Créateur Mert Kılıç - Tutoriel et projet Mert Arduino
 * S'il vous plaît abonnez-vous pour le soutien
 * Merci
 * /

#include <LiquidCrystal.h> // inclut la bibliothèque LCD (bibliothèque standard)
#include <Keypad.h> // inclut la bibliothèque du clavier - vous devez d'abord installer la bibliothèque (lien de la bibliothèque dans la description de la vidéo)

#define redLED 10 // définit les pins
#define greenLED 11

char * password = "1234"; //Créer un mot de passe
int pozisyon = 0; // position du clavier

lignes d'octets const = 4; // nombre de lignes et de colonnes du clavier
const byte cols = 4;

char keyMap [rows] [cols] = {// définit les cymbols sur les boutons du clavier

  {'1', '2', '3', 'A'},
  {'4', '5', '6', 'B'},
  {'7', '8', '9', 'C'},
  {'*', '0', '#', 'D'}
};

byte rowPins [rows] = {1, 2, 3, 4}; // broches du clavier
octets colpins [cols] = {5, 6, 7, 8};

Clavier myKeypad = Clavier (makeKeymap (keyMap), rowPins, colPins, lignes, cols);

LiquidCrystal lcd (A0, A1, A2, A3, A4, A5); // broches de l'écran LCD. (RS, E, D4, D5, D6, D7)

void setup(){

  lcd.begin (16, 2);
  pinMode (redLED, OUTPUT); // met la LED en sortie
  pinMode (greenLED, OUTPUT);
  setLocked (true); // état du mot de passe
}

boucle vide () {

  char whoKey = myKeypad.getKey (); // définir quelle touche est pressée avec getKey

  lcd.setCursor (0, 0);
  lcd.print ("Bienvenue");
  lcd.setCursor (0, 1);
  lcd.print ("Enter Password");

  if (whichKey == '*' || whichKey == '#' || whichKey == 'A' || // définit des clés non valides
  whichKey == 'B' || whichKey == 'C' || quelle clé == 'D') {

    pozisyon = 0;
    setLocked (true);
    lcd.clear ();
    lcd.setCursor (0, 0);
    lcd.print ("clé non valide!");
    délai (1000);
    lcd.clear ();
  }
  if (whichKey == password [pozisyon]) {

    pozisyon ++;
  }
  si (pozisyon == 4) {
    setLocked (false);
    lcd.clear ();
    lcd.setCursor (0, 0);
    lcd.print ("*** Verified ***");
    retard (3000);
    lcd.clear ();
    lcd.setCursor (0, 0);
    lcd.print ("Mert Arduino");
    lcd.setCursor (0, 1);
    lcd.print ("Tutorial Project");
    délai (7000);
    lcd.clear ();
  }
  retard (100);
}

void setLocked (int locked) {
  si (verrouillé) {
    digitalWrite (REDLED, HIGH);
    digitalWrite (greenLED, LOW);
    }
    autre{
      digitalWrite (redLED, LOW);
      digitalWrite (greenLED, HIGH);
    }
  }

Salut

pourtant la broche 'in' du relais est branché sur la led mais quelques millivolts passent apparemment, suffisant pour activer le relais

Quelques millivolts ? cela serait étonnant. Et si tu mesurais la tension ?

@+

Bonjour,

Beaucoup de modules relais sont commandées au niveau bas. Tu es sûr que ce n'est pas le cas du tien ?

bonjour,, j'ai testé ce relais très simplement avec pinmode 13, digitalWrite 13, high puis Low et il fonctionne parfaitement donc niveau haut pour l'activer.
j'avais mesuré et il me semble qu'il y avait 1 mv sur cette led à l'état bas
je pense qu'il faut simplifier l'action de cette greenLED mais je ne sais pas trop où.

Quelque petits mV peuvent toujours être "vu au voltmètre" et non pas "mesuré".
Bien sur ils sont souvent une abération de mesure : tout dépend de la qualité de ton câblage, du diamètre des fils utilisés et de l'endroit où tu places la sonde 0V.
Un résultat de mesure doit toujours être critiqué, au début c'est difficile mais si tu en prend l'habitude tu vera que "cela viendra avec le temps" et que c'est bien utile de procéder ainsi pluôt que de croire aveuglément ce que dit un écran.

hello
peux tu tester ce code et nous dire que la led verte s'allume bien 3 secondes puis s'éteint 1 seconde

#define greenLED 11
void setup() {
 
  pinMode(greenLED, OUTPUT);
}
void loop() {
  digitalWrite(greenLED, HIGH); 
  delay(3000);                     
  digitalWrite(greenLED, LOW);    
  delay(1000);                      
}

magmasanne:
...
pourtant la broche 'in' du relais est branché sur la led
...

Comment est branché le relais exactement?

bonjour dfgh, j'ai testé ce code hier et le relais fonctionne correctement.
le relais est branché avec 5 volts sur le vcc, le gnd à la masse et le in a la broche arduino défini.
J'ai mesuré à nouveau et j'ai entre 3 et 4 mv sur le fil de greenLED à l'état bas, mesuré entre le fil et la résistance de 220 ohms.

mes fils sont des dupont achetées sur aliexpress, ainsi que le relais.
j'ai essayé avec un autre relais sans led rouge et verte, un relais basic avec 3 broches et ça fonctionne.
de toute façon, je ne vais pas branché la led verte avec le relais mais sur le solénoïde avec une résistance de 510 ohms vu que c'est du 12 volts.
En mesurant la tension du fil de la led, j'ai remarqué que lorsque le relais est sous tension, et que je touche l'anode de la led avec le fil venant du 'in', la led s'allume, mais pas si je la branche avant la résistance.
ce' in' ne dois pas etre alimenté normalement?

Pas clair du tout.
Je pense et j'espère que tu as fait la manip suivante :

  • Sans utiliser de cartes avec un programme dedans, alimenter simplement le relais en 5V avec n'importe quel bloc alim de smartphone : maintenant ils délivrent tous au minimum 1 A.

Connecter la broche "In" à la masse puis au 5 V : est-ce que le relais fonctionne normalement ?
Si tu passe ta main sur les composants ou si tu vrille (légèrement sans brutalité) la carte, est-ce que cela continue de fonctionner ?
Parce que si le défaut vient du relai tu pourra passer des heures ou des mois sur le code pour rien, autant uriner dans un Stradivarius (forme politiquement correcte d'une expression populaire :slight_smile: ).

Ensuite je dirai :
Tes fils Dupont ne sont pas moulés mais serti avec le cache noir parallélépipédique -> c'est une bonne chose.
S'il est serti c'est que le fil a suffisamment de brins de cuivre sinon le sertissage serait impossible,
S'il est moulé j'en ai ouvert un : 3 brins de cuivre -> le lot à la poubelle.

Ton câblage est brouillon, c'est ce que j'appelle "affectueusement et moqueusement" des "perchoirs à mouche".
Adapte la longueur des fils juste à la longueur qu'il faut et ne prend pas le premier cordon qui tombe dans la main.
Quand j'ai un fil de signal je le torsade toujours avec son fil de masse et j'immobilise les fils sur un support avec du scotch.

Cela peut paraître exagéré, c'est des méthodes de travail du temps (lointain) où j'étais un professionnel de l'électronique dans les centaines de MHz et dizaines de gigaHertz, rien à voir avec le domaine de l'arduino. Néanmoins je les ai conservées et je n'ai pas de faux contacts où de parasites inexpliqués.

Précision : je te donne mon avis, tu fais comme tu le veux.

le montage n'est pas définitif, je le test et le corrige pour ne pas avoir de surprise lorsque je le poserai correctement dans la boite à lettre
j'ai branché le in à la masse et il se déclenche aussi, j'en ai testé un neuf, pareil, j'ai testé indépendemment le relais, je le dit 2 fois plus haut et il fonctionne normalement alors le problème vient du montage ou du code.
J'en ai un sans led verte et rouge intégré et celui là fonctionne bien
je pensais que comme il faut appuyer sur une touche rouge pour pouvoir entrer le code à nouveau, le problème venait peut être de là
J'ai prévu de souder tout les fils lors du montage dans la boite, il n'y aura pas de dupont, ça fonctionnera mieux évidemment
Bon et bien si le code ne souffre d'aucun défaut, je vais laisser ça comme ça et faire le montage ds la boite
Merci

Laisse tomber ton gros programme et teste une chose à la fois avec des petits programmes.
Quand tout fonctionne individuellement commence à assembler mais fonction par fonction. Le systématique pas par pas ne fait pas perdre du temps, au conraire au final on en gagne.

bonsoir

clarifions un peu si vous le permettez : il y a des erreurs dans votre programme :

vous faite de la traduction anglais français de de commentaires //ok

de la traduction anglais français "d'entete ..." void loop devient =>boucle vide

des modification de non de tableau mais juste une fois dans le programme
char whichKey devient char whoKey mais juste a la ligne 45??

de la traduction anglais français de fonctions
a la ligne 80 delay(100); devient a la ligne 81 retard (100);

le code d' origine, le vrai <http://mertarduinotutorial.blogspot.com/2017/01/arduino-tutorial-22-security-panel.html >
commence par /* blabla bla......
et pas par Définir les touches du clavier.... sans les symboles /* ou méme //

sur un des deux précédent topics vous aviez confondu touche invalide et
et touche de réinitialisation

pour ma part j 'utilise Notepad ++ en double fenétre pour verifier les modifs
et avoir les numéros de lignes.

ensuite votre relais est un relais sans optocoupleur mais avec transistor
de commande donc logiquement avec un seuil de déclenchement a 0,7 volts
0,7 volts sont peut êtres (surement ) insuffisant pour allumer la led mais suffisant
pour déclencher le transistor qui dérive la tension sur la bobine du relais.

ensuite votre relais est un relais sans optocoupleur mais avec transistor
de commande donc logiquement avec un seuil de déclenchement a 0,7 volts

J'ose espérer qu'il a une résistance dans la base du transistor de commande du relai,
Si l'entrée In entre directement sur la base du transistor du relai, celui ci et celui de sortie du micro ont du faire la gueule.