[Conseil] Projet d'éclairage d'escalier par rampe de LED. Prob dans mon program?

Bonjour à tous

Voilà je commence un projet pour faire un éclairage d'escalier en LED. Je pense que pas mal de personne on déjà réalisé ce type de projet, du coup je pense que l'on pourra m'aider un peu car je bloque sur un point actuellement.

Je n'ai pas l'habitude de programmer, donc mon code est surement très basic mais je pense qu'il devrait faire l'affaire.

Voilà mon but dans un premier temps :
réaliser le programme qui me permettra d'allumer les marches une à une, dès que l'utilisateur sera détecté par un capteur US (soit en HAUT soit en BAS).
Pour le moment je ne m'occupe que de l'allumage et extinction des marches.

J'ai pour cela :

  • un arduino MEGA
  • une barre de 16 relais
  • une alimentation 12V
  • un peu de câble
  • des rubans de led
  • et deux capteurs US

je fais un test avec un programme simple pour allumer seulement deux barres de LED et les éteindre. Comme ça a fonctionné je me suis lancé dans la duplication pour les 13 marches.
L'idée, ici est uniquement de faire commuter les 13 relais de la bonne manière.

Voilà donc mon programme :

//declaration des pins
//pins des marches (1 pour la marche du bas / 13 pour la marche du haut)

const int Marche_1 = 1;
const int Marche_2 = 2;
const int Marche_3 = 3;
const int Marche_4 = 4;
const int Marche_5 = 5;
const int Marche_6 = 6;
const int Marche_7 = 7;
const int Marche_8 = 8;
const int Marche_9 = 9;
const int Marche_10 = 10;
const int Marche_11 = 11;
const int Marche_12 = 12;
const int Marche_13 = 13;

void setup()
{
 //initialisation du mode des Pins
 

pinMode(Marche_1, OUTPUT);
pinMode(Marche_2, OUTPUT);
pinMode(Marche_3, OUTPUT);
pinMode(Marche_4, OUTPUT);
pinMode(Marche_5, OUTPUT);
pinMode(Marche_6, OUTPUT);
pinMode(Marche_7, OUTPUT);
pinMode(Marche_8, OUTPUT);
pinMode(Marche_9, OUTPUT);
pinMode(Marche_10, OUTPUT);
pinMode(Marche_11, OUTPUT);
pinMode(Marche_12, OUTPUT);
pinMode(Marche_13, OUTPUT);

}

void loop()
{   
       
// programme pour allumer les marches de bas en haut (détection du capteurBas)
    
    digitalWrite(Marche_1, LOW);
    delay(250);
    digitalWrite(Marche_2, LOW);
    delay(250);
    digitalWrite(Marche_3, LOW);
    delay(250);
    digitalWrite(Marche_4, LOW);
    delay(250);
    digitalWrite(Marche_5, LOW);
    delay(250);
    digitalWrite(Marche_6, LOW);
    delay(250);
    digitalWrite(Marche_7, LOW);
    delay(250);
    digitalWrite(Marche_8, LOW);
    delay(250);
    digitalWrite(Marche_9, LOW);
    delay(250);
    digitalWrite(Marche_10, LOW);
    delay(250);
    digitalWrite(Marche_11, LOW);
    delay(250);
    digitalWrite(Marche_12, LOW);
    delay(250);
    digitalWrite(Marche_13, LOW);
    
    // temps durant lequel les marches restent allumées
    delay(7000);

    // extinction des marches de bas en haut
    
    digitalWrite(Marche_1, HIGH);
    delay(250);
    digitalWrite(Marche_2, HIGH);
    delay(250);
    digitalWrite(Marche_3, HIGH);
    delay(250);
    digitalWrite(Marche_4, HIGH);
    delay(250);
    digitalWrite(Marche_5, HIGH);
    delay(250);
    digitalWrite(Marche_6, HIGH);
    delay(250);
    digitalWrite(Marche_7, HIGH);
    delay(250);
    digitalWrite(Marche_8, HIGH);
    delay(250);
    digitalWrite(Marche_9, HIGH);
    delay(250);
    digitalWrite(Marche_10, HIGH);
    delay(250);
    digitalWrite(Marche_11, HIGH);
    delay(250);
    digitalWrite(Marche_12, HIGH);
    delay(250);
    digitalWrite(Marche_13, HIGH);

}

Si vous voyez des incohérences n'hésitez pas car le résultat n'est pas à l'attendu une fois le montage réalisé :slight_smile:

voilà pour la théorie, passons à la pratique.

Je branche mes pins 1 à 13 sur les pins des relais 1 à 13 je branche l'alimentation 12V à la fois en alimentation de l'arduino (Vin GND) et la plaque relais (DC+ DC-)
je relie les 5V et GND de la plaque relai avec le 5V et GND de l'arduino et je crois que c'est à peu près tout

Malheureusement : les relais commutent bien mais pas dans l'ordre voulu :
ordre voulu : allumage 1 puis 2 puis 3 puis 4 puis 5 puis...puis 13.
ordre récupéré : allumage simultané 1 et 3 puis 2 puis 4 puis 5 puis...puis 13

même écart lors de l'extinction.

Est-ce que ce genre de défaut est le genre de défaut qu'un débutant comme moi fait en apprenant à programmer sur un arduino où est-ce plus subtile selon vous?

Merci à ceux qui pourront me filer un coup de main.

Si vous avez besoin de plus d'info n'hésitez pas

Merci d'avance

Bonjour,

Si les relais 1 et 3 commutent ensemble c'est vraisemblablement du à un problème de cablage (ou un problème sur la carte relais) et pas à un problème soft
La sortie 1 est utilisée pour Tx, mais je ne pense pas que ce soit ça le problème.

Remarque: au lieu d'aligner les instructions tu devrais utiliser une boucle 'for'.

Bonjour,

J'ai realisé un projet similaire à la maison, mais avec 2 relais (escalier 1 : 17 marches, escalier 2 : 9 marches)
l'allumage se fait par 4 PIR (au dessus et en dessous de chaque escalier)
l'avantage est que ça fonctionne très bien, l'inconvénient est que c'est moins design car les marches ne s'allument pas une à une, mais ensemble.

Tout comme Kamill, je pense plus à un problème de cablage
Par contre, je te conseille d'utiliser une alimentation externe pour le 5v des relais, 16 ça fait beaucoup de consommation pour l'arduino. au delà de 4 relais, il vaut mieux une alim externe

moi perso, je ne partirai pas sur des relais, mais plus sur des transistors... mais apres tout chacun ses choix....

Bonjour
déjà merci à tous pour vos remarques:

moi perso, je ne partirai pas sur des relais, mais plus sur des transistors... mais apres tout chacun ses choix....

quel est l'intérêt des transistors à la place des relais?

@ Aegnor1975 et kamill

Je vous donne raison, j'ai rien changé au programme mais j'ai commencé sur le relai 4 jusqu'au 16 (soit 13 relais encore :)) et la magie cela fonctionne

Du coup soit mes câblages d'avant n'était pas corrects soit il y a un soucis interne à la plaque au niveau des relai 1 et 3 :s

Bon je m'oriente maintenant sur la comprehension du fonctionnement des capteurs US pour le lancement des programmes :slight_smile:

Encore merci à tous pour l'orientation

Poste pour suivre, j'ai ce projet dans un coin de ma tête aussi mais avec allumage/extinction des marches en fonction de la position de la personne !

quel est l'intérêt des transistors à la place des relais?

ben deja il n'y a pas le son des relais, meme si il reste faible, de deux, les relais sont mecanique, donc dans le temps ( 4/5 ans) suivant la qualité des relais, ils ne collent plus, ou un risque de dysfonctionnement de la part des relais

dans ma futur maison livré en octobre, je penses faire la même chose avec un detecteur pir ou IR en haut et bas des marches, et des bande leds sur chaque marche. le tout gerer par des transistors pour chaque marche pour la puissance des leds

Question bête mais l'usage d'ultrasons est obligatoire ? Les animaux domestiques vont peut être pas aimer !
Je suis pas fan de l'IR, je trouve ça trop sensible ...

@ BrUnO14200 tout ce qui est capteur de proximité pourrait être utilisé tant qu'il envoie le signal vers l'arduino.

Maintenant, pour allumer marche par marche suivant la position de la personne, le PIR est à procrire car il va détecter sur plusieurs marches d'un coup (par contre, pour l'allumage global, c'est sympa) on pourrait plutôt envisager l'utilisation d'un capteur laser sur chaque marche

chez moi, j'ai couplé ça à une photorésistance de manière à ce que ça ne s'allume pas en journée

Bonjour à tous!

Je relance mon poste que j'avais un peu laissé pendant que je bossais sur mon projet...

Je suis en stand by pour le moment car j'ai des difficultés techniques de dimensionnement de transistor.

Pour le moment mon projet est finissable dans l'état :

-> Led sur chaque marches posées
-> détecteur US en haut et en bas
-> relais pour piloter en ON/OFF l'éclairage

Mon programme est, à priori, fini et moyennant quelques modif il devrait fonctionner.

Voilà ma stratégie :

Je projette d'utiliser mon capteur de luminosité afin de réduire la puissance des led en fonction de la luminosité extérieur

j'ai un arduino méga mais j'ai une pin PWM qui ne fonctionne plus...

malheureusement il m'en reste 12 et j'ai 13 marches..

Je compte donc :

Dans un premier temps :

utiliser une sortie PWM pour piloter l'arrivée 12V de mon alim pour le 12V de toutes les marches d'un coup. -> Via un transistor (1)

Dans un deuxième temps :

utiliser des sorties classiques pour alimenter les marches mais via des transistors (2) également pour supprimer les relais actuellement en place.

Ma demande :

Etant novice en transistor, pouvez vous m'expliquer les bases de dimensionnement :
Données :
-> commande du transistor (1) : 5V de l'arduino (besoin d'une résistance dans le circuit?)
-> puissance du transistor (1) : 100W environ pour l'ensemble des leds en 12V

Si je comprends pour le transistor (1) je tenterai pour le (2) et je vous demanderai si c'est bon.

hello
notre ami 68tjs nous a fait un super tuto

ICI

ok je vais essayer par moi même avec ce tuto du coup...