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é
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