Mon premier code ascenseur ( je débute merci à tous )

Lien thinkercad

[Simulation du projet en cours] (Circuit design Projet ascenseur LEFEBVRE LAURENT | Tinkercad)

Bonjour la communauté. Je débute sur arduino.

J'ai fabriqué un ascendeur avec un monte charge issu d'un manitou.
Il est activé avec une pompe hydraulique monophasée.
La descente est activée avec une électrovanne 24V.

Je rencontre quelques soucis de boucle dans le code, auriez-vous des idées ?

Scénario souhaité :

Ascenseur position basse ou haute au départ; de préférence au rez de chaussé.
Lecture des capteurs.
Affiche de l'étage sur le capteur.
Si appui sur le premier étage LED 6 allumée pour activation du moteur., affichage LCD Montée en cours.
L'ascenseur arrive en haut de détecte la fin de course pin 10, il s'arrête et affiche premier étage sur le LCD.

Pour la descente :

Appui sur le bouton descente :
Activation de la sortie pin 13.
Affichage LCD descente en cours.
Quand le capteur bas est activé, Désactivation de la pin 13 affichage LCD Rez de chaussée.

Code à ajouter :

Quand l'ascenseur arrive en bas, il reste de la pression hydraulique.

Il faudrait donc afficher Rez de chaussée sur la ligne 1 du lcd.
Activer la pin 13 deux secondes pour évacuer la pression hydraulique et affiche Purge hydraulique sur le ligne 2 du LCD pendant ces deux secondes et ensuite éteindre la pin 13 et effacer le lcd pour laisser afficher la ligne 1 (Rez de chaussée).

Branchement des pins

Projet ascenseur.
Cahier des charges du branchement.

Deux boutons de commande.
pin 8 montée.
pin 7 descente.

Deux fin de courses.
pin 11 capteur bas.
pin 10 capteur haut.

LCD relié aux pin 2,3,4,5,9 et 12, contraste relié à la masse par un potentiomètre de 10k.

Pour simuler les états de sortie :
pin 13 LED descente pour commander un relais ultérieurement.
pin 6 LED montée pour commander un relais ultérieurement.

Code arduino

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 9, 5, 4, 3, 2); // Broches pour l'écran LCD

const int boutonMonteePin = 8;
const int boutonDescentePin = 7;
const int capteurFinDeCourseHautPin = 10;
const int capteurFinDeCourseBasPin = 11;
const int relaisMonteePin = 6; // Broche de contrôle du relais de montée
const int relaisDescentePin = 13; // Broche de contrôle du relais de descente

bool enMouvement = false;

void setup() {
  lcd.begin(16, 2); // Initialisation de l'écran LCD
  pinMode(boutonMonteePin, INPUT_PULLUP);
  pinMode(boutonDescentePin, INPUT_PULLUP);
  pinMode(capteurFinDeCourseHautPin, INPUT_PULLUP);
  pinMode(capteurFinDeCourseBasPin, INPUT_PULLUP);
  pinMode(relaisMonteePin, OUTPUT);
  pinMode(relaisDescentePin, OUTPUT);
 
  lcd.setCursor(0, 0);
  lcd.print("Etage 1");
}

void loop() {
  if (enMouvement) {
    if (digitalRead(capteurFinDeCourseHautPin) == LOW) {
      enMouvement = false;
      stopperAscenseur();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Etage 0");
    } else if (digitalRead(capteurFinDeCourseBasPin) == LOW) {
      enMouvement = false;
      stopperAscenseur();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Etage 1");
    }
  } else {
    if (digitalRead(boutonMonteePin) == LOW) {
      monterAscenseur();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Montee en cours");
    } else if (digitalRead(boutonDescentePin) == LOW) {
      descendreAscenseur();
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("Descente en cours");
    }
  }
}

void monterAscenseur() {
  digitalWrite(relaisMonteePin, HIGH);
  digitalWrite(relaisDescentePin, LOW);
  enMouvement = true;
}

void descendreAscenseur() {
  digitalWrite(relaisMonteePin, LOW);
  digitalWrite(relaisDescentePin, HIGH);
  enMouvement = true;
}

void stopperAscenseur() {
  digitalWrite(relaisMonteePin, LOW);
  digitalWrite(relaisDescentePin, LOW);
}

:warning:

Post mis dans la mauvaise section, on parle anglais dans les forums généraux. ➜ déplacé vers le forum francophone dans les projets finis

Merci de prendre en compte les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

merci. oups

Ce n'est pas un projet fini.
Fil de discussion déplacé dans la racine du forum francophone.

Merci de prendre quelques minutes pour lire les bonnes pratiques du forum francophone et les appliquer.

c'était ma faute, c'est moi qui l'ai mis là (il était posté dans le forum anglophone) - j'avais mal lu (juste les premières lignes)

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.