Bonjour à tous,
Je m'appelle jean-louis et j'ai 55 ans.
C'est la première fois que je m'inscris sur un forum et je ne sais pas comment il faut s'y prendre.
Donc je vous demande d'être tolérant sur mes erreurs et vous en remercie d'avance sincèrement.
Je vous expose ici la raison de ma présence. Un ami à un projet de maquette d'une salle multi sports demandé par les élus de sa ville.
Cette maquette à comme particularité d'avoir l'étage de la salle multi sports qui se soulève pour laisser entrevoir le RDC au visiteurs.
L'étage se soulève par deux vis sans fin muent par un motoréducteur piloté par une carte Arduino uno.
Le système comporte un capteur capacitif sensible au touché d'une zone métallique ou tout autres moyens de détecter la présence de visiteurs (capteur radar).
Il comporte aussi un fin de course haut, un fin de course bas et un shield relais enfiché sur la carte Arduino et un témoin LED d'allumage des diverses lampes d'éclairage de la maquette.
Description du fonctionnement: Un visiteur touche la zone sensible : - allumage des éclairage de la maquette (relais lumière RL),
- petite temporisation,
- mise sous tension du motoréducteur dans le sens de la montée (relais montée RM),
- arrêt du motoréducteur sur fin de course haut (fin de course haut FCH),
- temporisation,
- mise sous tension du motoréducteur dans le sens de la descente (relais descente RD),
- arrêt du motoréducteur sur fin de course bas (fin de course bas FCB)
- temporisation avant retour à la détection au début du programme.
Mon problème est que ma logique de fonctionnement, influencée par les anciens automates séquentiels programmés en grafcet, n'est pas la logique Arduino.
Après avoir étudié le langage Arduino avec l'aide de nombreux livres et réalisé les exemples de programmation, je me suis dis que réaliser l'automatisme de cette maquette sera aisé compte tenu du peu d'organes périphériques.
Après de nombreux essais, dont un avec les fins de course directement dans le circuit de puissance du motoréducteur et diverses temporisation qui fonctionne très bien.
Je suis insatisfait de mon travail aux vus des capacités de la carte Arduino.
Je souhaiterais que tous les périphériques, fins de course, détecteurs, témoins soient directement raccordés sur la carte Arduino.
Et c'est là que ma logique ne fonctionne pas.
Je sollicite donc de l'aide pour m'aider à comprendre pourquoi le programme que je joins ne fonctionne pas.
Je vous remercie par avance de l'aide que vous m'apporterez.
Code:#define CC 3 //capteur capacitif en pin 3 #define FCH 5 //fin de course haut en pin 5 #define FCB 6 //fin de course bas en pin 6 #define RL 2 //relais éclairage maquette en pin 2 (pin imposé par le shield relais) #define RM 7 //relais monté étage en pin 7 (pin imposé par le shield relais) #define RD 8 //relais descente étage en pin 8 (pin imposé par le shield relais) #define LL 9 //Led témoin éclairage maquette en pin 9 #define LED 13 //Led témoin moteur en Pin 13 (led sur la carte) int ETAT_CC=0; //variable état du capteur capacitif int ETAT_FCH=0; //variable état fin de course haut int ETAT_FCB=0; //variable état fin de course bas void setup() { pinMode(CC,INPUT); //pin (3) capteur capacitif en entrée pinMode(FCH,INPUT); //pin (5) fin de course haut en entrée pinMode(FCB,INPUT); //pin (6) fin de course bas en entrée pinMode(RL,OUTPUT); //pin fin (2) relais lumière en sortie pinMode(RM,OUTPUT); //pin relais (7) montée en sortie pinMode(RD,OUTPUT); //pin relais (8) descente en sortie pinMode(LL,OUTPUT); //pin led témoin (9) éclairage maquette en sortie pinMode(LED,OUTPUT); //pin led témoin (13) moteur en sortie digitalWrite(RL,LOW); //forcage relais lumière au repos au demarrage digitalWrite(RM,LOW); //forcage relais montée au repos au demarrage digitalWrite(RD,LOW); //forcage relais descente au repos au demarrage Serial.begin(9600); } void loop() { ETAT_CC=digitalRead(CC); //lecture et sauvegarde état capteur if (ETAT_CC==1) { //si capteur touché digitalWrite(RL,HIGH); //éclairage maquette digitalWrite(LL,HIGH); //allumage led témoin } delay(2000); //tempo de 2 secondes digitalWrite(RM,HIGH); //mise sous tension moteur en montée digitalWrite(LED,HIGH); //allumage led témoin ETAT_FCH=digitalRead(FCH); //lecture et sauvegarde état fin de course haut if (ETAT_FCH==1) { //si fin de course actionné digitalWrite(RM,LOW); //arrêt montée digitalWrite(LED,LOW); //extinction led témoin } delay(2000); //tempo 2 secondes digitalWrite(RD,HIGH); //mise sous tension moteur en descente digitalWrite(LED,HIGH); //allumage led témoin ETAT_FCB=digitalRead(FCB); //lecture et sauvegarde état fin de course bas if (ETAT_FCB==1) { //si fin de course actionné digitalWrite(RD,LOW); //arrêt descente digitalWrite(LED,LOW); //extinction led témoin } delay(2000); //tempo 2 secondes digitalWrite(RL,LOW); //extinction éclairage maquette digitalWrite(LL,LOW); //extinction led témoin éclairage maquette }
-----