Comment faire l'automatisme d'un ascenseur

Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 27 14:33

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

patrice_b a écrit : 27 avr. 2025, 14:09
likiki a écrit : 27 avr. 2025, 12:45 Ont continue avec l'ajout d'un encodeur rotatif et la création de menus ...

Etape suivante :

Régler finement les arrêt et enregistrement (volatil dans un 1er temps) des novelles positions.

Modification du programme de sélections qui passera de 170 lignes de codes a .... 40 lignes.


:a_suivre:
Whaou tu progresse bien ! :bienv:

Sacré cure d'amaigrissement. J'attends alors pour plonger mon nez dans ton code :siffle:
Il y aura certainement moyen de réduire encore le code en appliquant des procédures mathématique, mais là, je trouve que le code (pour moi) deviens illisible et incompréhensible.

:lunette:

Par contre, si tu n'est pas habitué au codage informatique, met le nez dedans tout de suite sinon tu vas être largué plus vite qu'une amarre.

:mdr1: :mdr1:
ImageImageImage

:tirechap:
Avatar du membre
patrice_bFrance
Posteur insomniac
Posteur insomniac
Messages : 485
Enregistré le : 31 janv. 2025, 14:45
Prénom : Patrice
LOCALISATION : Beziers Herault
Centres d'intérêts : Modelisme HO et HOM ou HOe
Echelle pratiquée : H0
Âge : 64
Pays :
France (fr)
France
avr. 2025 27 16:12

Re: Comment faire l'automatisme d'un ascenseur

Message par patrice_bFrance

likiki a écrit : 27 avr. 2025, 14:33

Il y aura certainement moyen de réduire encore le code en appliquant des procédures mathématique, mais là, je trouve que le code (pour moi) deviens illisible et incompréhensible.

:lunette:

Par contre, si tu n'est pas habitué au codage informatique, met le nez dedans tout de suite sinon tu vas être largué plus vite qu'une amarre.

:mdr1: :mdr1:
J'ai eu programmé, il y a des années mais pas en C....
Encore un truc ou je vais me péter les neuronnes, mais bon, je poserai des questions ...

:hhhaaaa:

Non ca va, déclarations de variables, utilisation de bibliothèque, procédures ca va je suis pas complètement largué.

En plus moi j'ai juste un niveau donc ca sera plus simple.

A suivre...
Cordialement,

Patrice
Avatar du membre
C2Vues-BricoTrainFrance
2000 posts et +
2000 posts et +
Messages : 5095
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 73
Pays :
France (fr)
France
avr. 2025 27 16:18

Re: Comment faire l'automatisme d'un ascenseur

Message par C2Vues-BricoTrainFrance

likiki a écrit : 27 avr. 2025, 14:33
Par contre, si tu n'est pas habitué au codage informatique, met le nez dedans tout de suite sinon tu vas être largué plus vite qu'une amarre.

:mdr1: :mdr1:
Et quand y-en amarre...

:hhhaaaa: :hhhaaaa: :hhhaaaa:
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil tu seras,
Dans le côté sombre tu l'auras.
Yoda - Maître Jedi (StarWars)
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 27 16:35

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

Quand y en amarre, y vas a la pèche.


:hhhaaaa: :hhhaaaa: :hhhaaaa: :hhhaaaa: :hhhaaaa:
ImageImageImage

:tirechap:
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 27 16:44

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

Je n'ai pas l'habitude du code Arduino et surtout de sa syntaxe mais pour optimiser un peu le code tu peux déjà mettre les procédures répétitives, Efface l’écran - place le curseur ligne suivante en sous-programme.
Sinon je crois qu"il existe une instruction du genre
switch case (Ebpe)
case -1:
stepper.runToNewPosition(Pos1SS);
delay(1000) ;

Ebpe = 10;

case -2:
stepper.runToNewPosition(Pos2SS);
delay(1000) ;
Ebpe = 10;


Et tu mets l'appel à la procédure qui efface l'écran et met le curseur en début de ligne juste avant le switch case comme il est répété à chaque fois et l'appel à Efface l'écran et place le curseur à la ligne suivante après le bloc de décision switch case.
C'est du code procédural tout simple.
Je jetterai un œil quand j'aurai un peu de temps.
Modifié en dernier par ramasoftFrance le 27 avr. 2025, 16:49, modifié 1 fois.
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 27 16:45

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

C'est ce qui est prévu pour ce qui est répétitif. :bienv:
ImageImageImage

:tirechap:
Avatar du membre
patrice_bFrance
Posteur insomniac
Posteur insomniac
Messages : 485
Enregistré le : 31 janv. 2025, 14:45
Prénom : Patrice
LOCALISATION : Beziers Herault
Centres d'intérêts : Modelisme HO et HOM ou HOe
Echelle pratiquée : H0
Âge : 64
Pays :
France (fr)
France
avr. 2025 27 17:45

Re: Comment faire l'automatisme d'un ascenseur

Message par patrice_bFrance

Et oui les procédures, elles facilitent le code et la vie ! :cooooool:
Cordialement,

Patrice
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 27 22:38

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

J'ai installé l'environnement Arduino et j'ai téléchargé les library mais je n'ai peut être pas les bonnes car j'ai été obligé de déclarer les variables D3, D4, D5, D6 et D7 pour que ça compile sans erreurs...
int D3;
int D4;
int D5;
int D6;
int D7;

J'ai arrangé ça vite fait, on peut aussi passer la variable Txt (qui contient le texte à afficher) en argument à la fonction Afficher

Code : Tout sélectionner



/*
***************************************************
****** Ascenseur avec un moteur pas à pas   *******
******                                      *******
****** Programme V 3.0                      *******
****** Du 22/02/2025                        *******
****** Par C.ARFEL                          *******
******                                      *******
****** Carte Wemos D1 Mini                  *******
******                                      *******
****** Version 1.0                          *******
****** Mise a quai manuelle                 *******
****** Afficheur lcd 16 x 2 I2C             *******
****** RC + 5 sous sol                      *******
****** Menu par encodeur                    *******
******                                      *******
******                                      *******                                      
******      Liste des bornes utilisées      *******                                      
******                                      *******                                      
****** D0 Capteur infrarouge                *******                                      
****** D1 I2C écran                         *******                                      
****** D2 I2C écran                         *******
****** D3 DIR commande de direction moteur  *******
****** D4 STEP commande nb pas moteur       *******
****** D5 SW encodeur                       *******                                      
****** D6 DT encodeur                       *******                                     
****** D7 Clic encodeur                     *******                                      
****** D8 Arrêt d'urgence + FC total        *******                                     
****** RST (reset carte)                    *******                                      
******                                      *******                                      
****** Le croquis utilise ***** octets (**%)******* 
****** de l'espace de stockage de           ******* 
****** programmes. Le maximum est de        *******
****** ****** octets.                       *******
******                                      *******
****** Les variables globales utilisent     *******
****** **** octets (**%) de mémoire         *******
****** dynamique, ce qui laisse ****        *******
****** octets pour les variables locales.   *******                                      
****** Le maximum est de **** octets.       *******                                     
******                                      *******
******                                      *******                                                                            
***************************************************
. Variables and constants in RAM (global, static), used 29192 / 80192 bytes (36%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1536     initialized variables
╠══ RODATA   1240     constants       
╚══ BSS      26416    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60995 / 65536 bytes (93%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     28227    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 245364 / 1048576 bytes (23%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     245364   code in flash 

*/
int D3;
int D4;
int D5;
int D6;
int D7;
String Txt;

#include <AccelStepper.h>  // Bibliothéque moteur pas a pas

const byte pin_DIR = D3;   // Borne contrôle pour TMC2209
const byte pin_STEP = D4;  // Borne contrôle pour TMC2209

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // Bibliothéque ecran protocole I2C

LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27 ou 0x3F déclaration adresse du lcd

#include "RotaryEncoder.h"  // Appel de la bibliothéque pour encodeur

#define STEPSS 1  // Nombre par pas d'encodeur

#define POSMIN -5  // Position MINI de l'encodeur

#define POSMAX 4  // Position MAX de l'encodeur

#define BPE D5  // Borne SW encodeur (bouton)

RotaryEncoder encoder(D6, D7);  // Borne de l'encodeur (DT, CLK)

AccelStepper stepper(AccelStepper::DRIVER, pin_STEP, pin_DIR);  // création objet Stepper

int Pos0SS = 0;       // Crans moteur pour la position plateau niveau reseau.
int Pos1SS = 10000;   // Crans moteur pour la position plateau 1er sous sol
int Pos2SS = 20000;   // Crans moteur pour la position plateau 2ème sous sol
int Pos3SS = 30000;   // Crans moteur pour la position plateau 3ème sous sol
int Pos4SS = 40000;   // Crans moteur pour la position plateau 4ème sous sol
int Pos5SS = 50000;   // Crans moteur pour la position plateau 5ème sous sol
int Init = 0;         // Variable pour l'initialisation
int Ebpe = 10;        // Variable bouton encodeur
int lastPos, newPos;  // Variable encodeur



void setup() {


  lcd.init();  // Initialisation de l'afficheur

  lcd.backlight();  // Allume l'ecran

  lcd.clear();                    // Efface l'ecran
  lcd.setCursor(0, 0);            // place le curseur sur la ligne 0 a gauche
  lcd.print("*Initialisation*");  // Affichage sur le lcd
  lcd.setCursor(0, 1);            // passe a la ligne suivante
  lcd.print("*  Programme   *");  // affichage sur le lcd


  stepper.setMaxSpeed(8000.0);     // Vitesse max moteur
  stepper.setAcceleration(500.0);  // distance accélération / décélération


  encoder.setPosition(10 / STEPSS);  // Position initiale encodeur

  pinMode(BPE, INPUT);  // Initialisation du clic encodeur rotatif
}

/*
************************
* Fin de la zone SETUP *
************************
*/

/*
****************************
* Séquence initialisation  *
****************************
*/


void Initialisation() {  // Module initialisation du plateau  Recherche du FC

  // Il ne se passe rien d'important ici pour le moment a ce stade du programme.

  lcd.clear();  // Efface l'ecran
  delay(100);
  lcd.setCursor(0, 0);
  lcd.print(" Niveau reseau. ");
  delay(10);
  lcd.setCursor(0, 1);  // place le curseur ligne suivante
  lcd.print("** En attente **");
  delay(200);

  Init = 1;  // Informe que l'initialisation a été faite pour ne pas y revenir
}








void loop() {

  if (Init < 1) {      // Si 1er passage executerligne suivante sinon passer
    Initialisation();  // Vas executer le bloc "initialisation"
  }


  /*
********************************
* Début de la zone des appels  *
********************************
*/


  /*
****************************************
* Menu selection par encodeur rotatif  *
****************************************
*/

  //                                    ________________ Zone lecture encodeur rotatif _______________

  encoder.tick();
  newPos = encoder.getPosition() * STEPSS;

  if (newPos < POSMIN) {
    encoder.setPosition(POSMIN / STEPSS);
    newPos = POSMIN;
  } else if (newPos > POSMAX) {
    encoder.setPosition(POSMAX / STEPSS);
    newPos = POSMAX;
  }

  if (lastPos != newPos) {

    if (newPos <= 0) {      // valable de -5 a 0
      lcd.setCursor(0, 1);  // place le curseur ligne suivante
      lcd.print("Choix => ");
      lcd.print(newPos);
      lcd.print("      ");
      delay(10);
      lastPos = newPos;
    }

    if (newPos >= 1) {      // Valable si 1
      lcd.setCursor(0, 1);  // place le curseur ligne suivante
      lcd.print("Choix => ");
      lcd.print("Reglage");
      delay(10);
      lastPos = newPos;
    }
  }

  if (digitalRead(BPE) == LOW) {  // Control si Bouton encodeur actionné
    Ebpe = newPos;
    delay(500);  // Tempo de pause pour éviter la redondance du clic
  }


  /*
*****************************
* Appel au rez de chaussée  *
*****************************
*/


  if (Ebpe == 0) {  // Action si choix 0 RC

    En_mouvement;
    stepper.runToNewPosition(Pos0SS);
    delay(1000);
    Ebpe = 10;
    Txt=" Niveau reseau. ";
    Attente;
    
  }


  /*
**************************
* Appel au 1er sous sol  *
**************************
*/

  if (Ebpe == -1) {  // Action si choix -1


    En_mouvement;
    stepper.runToNewPosition(Pos1SS);
    delay(1000);
    Ebpe = 10;
    Txt="   Niveau  -1   ";
    Attente;
  }


  /*
***************************
* Appel au 2ème sous sol  *
***************************
*/

  if (Ebpe == -2) {

    En_mouvement;
    stepper.runToNewPosition(Pos2SS);
    delay(1000);
    Ebpe = 10;
    Txt="   Niveau  -2   ";
    Attente;
    
  }


  /*
***************************
* Appel au 3ème sous sol  *
***************************
*/

  if (Ebpe == -3) {

    En_mouvement;
    stepper.runToNewPosition(Pos3SS);
    delay(1000);
    Ebpe = 10;
    Txt="   Niveau  -3   ";
    Attente;
  }


  /*
***************************
* Appel au 4ème sous sol  *
***************************
*/


  if (Ebpe == -4) {

    En_mouvement;
    stepper.runToNewPosition(Pos4SS);
    delay(1000);
    Ebpe = 10;
    Txt="   Niveau  -4   ";
    Attente;

    
  }



  /*
***************************
* Appel au 5ème sous sol  *
***************************
*/

  if (Ebpe == -5) {

    En_mouvement;
    stepper.runToNewPosition(Pos5SS);
    delay(1000);
    Ebpe = 10;
    Txt= "   Niveau  -5   ";
    Attente;
  }
}


void En_mouvement() {
  lcd.clear();  // Efface l'ecran
  delay(100);
  lcd.setCursor(0, 0);
  lcd.print("** Plateforme **");
  delay(10);
  lcd.setCursor(0, 1);  // place le curseur ligne suivante
  lcd.print("* En mouvement *");
  delay(10);
}

void Attente() {
   lcd.clear();  // Efface l'ecran
    delay(100);
    lcd.setCursor(0, 0);
    lcd.print(Txt);
    delay(10);
    lcd.setCursor(0, 1);  // place le curseur ligne suivante
    lcd.print("** En attente **");
    delay(1000);
}
Modifié en dernier par ramasoftFrance le 27 avr. 2025, 23:07, modifié 1 fois.
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 27 23:00

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

Et avec switch case, et on n'a plus besoin des fonctions Afficher et En_mouvement qui ne sont plus appelées qu'une seule fois

Code : Tout sélectionner

/*
***************************************************
****** Ascenseur avec un moteur pas à pas   *******
******                                      *******
****** Programme V 3.0                      *******
****** Du 22/02/2025                        *******
****** Par C.ARFEL                          *******
******                                      *******
****** Carte Wemos D1 Mini                  *******
******                                      *******
****** Version 1.0                          *******
****** Mise a quai manuelle                 *******
****** Afficheur lcd 16 x 2 I2C             *******
****** RC + 5 sous sol                      *******
****** Menu par encodeur                    *******
******                                      *******
******                                      *******                                      
******      Liste des bornes utilisées      *******                                      
******                                      *******                                      
****** D0 Capteur infrarouge                *******                                      
****** D1 I2C écran                         *******                                      
****** D2 I2C écran                         *******
****** D3 DIR commande de direction moteur  *******
****** D4 STEP commande nb pas moteur       *******
****** D5 SW encodeur                       *******                                      
****** D6 DT encodeur                       *******                                     
****** D7 Clic encodeur                     *******                                      
****** D8 Arrêt d'urgence + FC total        *******                                     
****** RST (reset carte)                    *******                                      
******                                      *******                                      
****** Le croquis utilise ***** octets (**%)******* 
****** de l'espace de stockage de           ******* 
****** programmes. Le maximum est de        *******
****** ****** octets.                       *******
******                                      *******
****** Les variables globales utilisent     *******
****** **** octets (**%) de mémoire         *******
****** dynamique, ce qui laisse ****        *******
****** octets pour les variables locales.   *******                                      
****** Le maximum est de **** octets.       *******                                     
******                                      *******
******                                      *******                                                                            
***************************************************
. Variables and constants in RAM (global, static), used 29192 / 80192 bytes (36%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ DATA     1536     initialized variables
╠══ RODATA   1240     constants       
╚══ BSS      26416    zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60995 / 65536 bytes (93%)
║   SEGMENT  BYTES    DESCRIPTION
╠══ ICACHE   32768    reserved space for flash instruction cache
╚══ IRAM     28227    code in IRAM    
. Code in flash (default, ICACHE_FLASH_ATTR), used 245364 / 1048576 bytes (23%)
║   SEGMENT  BYTES    DESCRIPTION
╚══ IROM     245364   code in flash 

*/
int D3;			// A supprimer éventuellement si déjà déclarées par ailleurs
int D4;
int D5;
int D6;
int D7;
String Txt;

#include <AccelStepper.h>  // Bibliothéque moteur pas a pas

const byte pin_DIR = D3;   // Borne contrôle pour TMC2209
const byte pin_STEP = D4;  // Borne contrôle pour TMC2209

#include <Wire.h>
#include <LiquidCrystal_I2C.h>  // Bibliothéque ecran protocole I2C

LiquidCrystal_I2C lcd(0x27, 16, 2);  // 0x27 ou 0x3F déclaration adresse du lcd

#include "RotaryEncoder.h"  // Appel de la bibliothéque pour encodeur

#define STEPSS 1  // Nombre par pas d'encodeur

#define POSMIN -5  // Position MINI de l'encodeur

#define POSMAX 4  // Position MAX de l'encodeur

#define BPE D5  // Borne SW encodeur (bouton)

RotaryEncoder encoder(D6, D7);  // Borne de l'encodeur (DT, CLK)

AccelStepper stepper(AccelStepper::DRIVER, pin_STEP, pin_DIR);  // création objet Stepper

int Pos0SS = 0;       // Crans moteur pour la position plateau niveau reseau.
int Pos1SS = 10000;   // Crans moteur pour la position plateau 1er sous sol
int Pos2SS = 20000;   // Crans moteur pour la position plateau 2ème sous sol
int Pos3SS = 30000;   // Crans moteur pour la position plateau 3ème sous sol
int Pos4SS = 40000;   // Crans moteur pour la position plateau 4ème sous sol
int Pos5SS = 50000;   // Crans moteur pour la position plateau 5ème sous sol
int Init = 0;         // Variable pour l'initialisation
int Ebpe = 10;        // Variable bouton encodeur
int lastPos, newPos;  // Variable encodeur



void setup() {


  lcd.init();  // Initialisation de l'afficheur

  lcd.backlight();  // Allume l'ecran

  lcd.clear();                    // Efface l'ecran
  lcd.setCursor(0, 0);            // place le curseur sur la ligne 0 a gauche
  lcd.print("*Initialisation*");  // Affichage sur le lcd
  lcd.setCursor(0, 1);            // passe a la ligne suivante
  lcd.print("*  Programme   *");  // affichage sur le lcd


  stepper.setMaxSpeed(8000.0);     // Vitesse max moteur
  stepper.setAcceleration(500.0);  // distance accélération / décélération


  encoder.setPosition(10 / STEPSS);  // Position initiale encodeur

  pinMode(BPE, INPUT);  // Initialisation du clic encodeur rotatif
}

/*
************************
* Fin de la zone SETUP *
************************
*/

/*
****************************
* Séquence initialisation  *
****************************
*/


void Initialisation() {  // Module initialisation du plateau  Recherche du FC

  // Il ne se passe rien d'important ici pour le moment a ce stade du programme.

  lcd.clear();  // Efface l'ecran
  delay(100);
  lcd.setCursor(0, 0);
  lcd.print(" Niveau reseau. ");
  delay(10);
  lcd.setCursor(0, 1);  // place le curseur ligne suivante
  lcd.print("** En attente **");
  delay(200);

  Init = 1;  // Informe que l'initialisation a été faite pour ne pas y revenir
}








void loop() {

  if (Init < 1) {      // Si 1er passage executerligne suivante sinon passer
    Initialisation();  // Vas executer le bloc "initialisation"
  }


  /*
********************************
* Début de la zone des appels  *
********************************
*/


  /*
****************************************
* Menu selection par encodeur rotatif  *
****************************************
*/

  //                                    ________________ Zone lecture encodeur rotatif _______________

  encoder.tick();
  newPos = encoder.getPosition() * STEPSS;

  if (newPos < POSMIN) {
    encoder.setPosition(POSMIN / STEPSS);
    newPos = POSMIN;
  } else if (newPos > POSMAX) {
    encoder.setPosition(POSMAX / STEPSS);
    newPos = POSMAX;
  }

  if (lastPos != newPos) {

    if (newPos <= 0) {      // valable de -5 a 0
      lcd.setCursor(0, 1);  // place le curseur ligne suivante
      lcd.print("Choix => ");
      lcd.print(newPos);
      lcd.print("      ");
      delay(10);
      lastPos = newPos;
    }

    if (newPos >= 1) {      // Valable si 1
      lcd.setCursor(0, 1);  // place le curseur ligne suivante
      lcd.print("Choix => ");
      lcd.print("Reglage");
      delay(10);
      lastPos = newPos;
    }
  }

  if (digitalRead(BPE) == LOW) {  // Control si Bouton encodeur actionné
    Ebpe = newPos;
    delay(500);  // Tempo de pause pour éviter la redondance du clic
  }
      /*
*****************************
* Choix Étage  *
*****************************
*/
  
    lcd.clear();                      // Efface l'ecran
    delay(100);
    lcd.setCursor(0, 0);
    lcd.print("** Plateforme **");
    delay(10);
    lcd.setCursor(0, 1);              // place le curseur ligne suivante
    lcd.print("* En mouvement *");
    delay(10);

    switch (Ebpe) {
        case 0:     // rez de chaussée
                stepper.runToNewPosition(Pos0SS);
                delay(1000);
                Txt=" Niveau reseau. ";
                Ebpe = 10;
                break;
        case -1:    // 1er sous sol
                stepper.runToNewPosition(Pos1SS);
                delay(1000);
                Txt="   Niveau  -1   ";
                Ebpe = 10;
                break;
        case -2:    // 2e sous sol
                stepper.runToNewPosition(Pos2SS);
                delay(1000);
                Txt="   Niveau  -2   ";
                Ebpe = 10;
                break;
        case -3:    // 3e sous sol
                stepper.runToNewPosition(Pos3SS);
                delay(1000);
                Txt="   Niveau  -3   ";
                Ebpe = 10;
                break;
        case -4:    // 4e sous sol
                stepper.runToNewPosition(Pos4SS);
                delay(1000);
                Txt="   Niveau  -4   ";
                Ebpe = 10;
                break;
        case -5:    // 5e sous sol
                stepper.runToNewPosition(Pos5SS);
                delay(1000);
                Txt= "   Niveau  -5   ";
                Ebpe = 10;
                break;
    }

    lcd.clear();                        // Efface l'écran
    delay(100);
    lcd.setCursor(0, 0);
    lcd.print(Txt);
    delay(10);
    lcd.setCursor(0, 1);                // place le curseur ligne suivante
    lcd.print("** En attente **");
    delay(1000);
}   
 

Donc si les variables D3,D4,D5,D6 et D7 sont déclarées dans une bibliothèque il faudra supprimer la déclaration tout au début.
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 28 04:59

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

A tu choisi le bon micro contrôleur ?

ESP8266 => lolinWemos D1 R2 & Mini
ImageImageImage

:tirechap:
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 08:08

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

Cette carte ne m'est pas proposée, je n'ai que des ESP32xxx et encore elles sont grisées.

Capture d'écran 2025-04-28 080541.png
Capture d'écran 2025-04-28 080541.png (42.59 Kio) Vu 1738 fois


Il doit falloir installer autre chose que la simple IDE Arduino.
Donc j'avais choisi une carte Arduino Uno juste pour qu'il compile le code et cherche les erreurs de syntaxe car je ne connais pas bien le code Arduino, qui ressemble bien à du C de base.
Et je me suis effectivement posé la question de la bonne carte à déclarer.

Le monde des microcontrôleurs et de l'Arduino m'est un peu inconnu 😜
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 08:23

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

Ça y est, j'ai trouvé pour installer Generic ESP8266 Module et j'ai LolinWemos D1 R2 & Mini :yess:

Mais j'ai quand même ce message d'erreur à la compilation:
ATTENTION: la bibliothèque LiquidCrystal I2C prétend être exécutable sur la (ou les) architecture(s) avr et peut être incompatible avec votre carte actuelle qui s'exécute sur esp8266.

J'ai installé LiquidCrystal I2C par Frank de Brabander ... (Fernando me demanderait si ce n'est pas plutôt "boisbander" :hhhaaaa: )
Et ce n'est peut-être pas la bonne.
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 28 15:22

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

J'ai moi aussi ce message, mais cela fonction parfaitement. Donc pas d'inquiétudes.

:cooooool:
ImageImageImage

:tirechap:
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 17:24

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

Ok merci Christian. 👍
Donc je vais commander le ou les moteurs, car je crois qu'il en faudrait deux pour lever 1,50m de voie tranquillement, et le matériel pour monter ça sur un panneau de contre plaqué de 10mm ou 15mm pour voir ce que ça donne.
Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Avatar du membre
TrainDolyFrance
Posteur insomniac
Posteur insomniac
Messages : 343
Enregistré le : 09 févr. 2025, 14:37
Prénom : Olivier
LOCALISATION : Alsace
Centres d'intérêts : Train HO & Impression résine & Fraiseuse CNC faite maison
Echelle pratiquée : H0
Pays :
France (fr)
France
avr. 2025 28 17:51

Re: Comment faire l'automatisme d'un ascenseur

Message par TrainDolyFrance

ramasoft a écrit : 28 avr. 2025, 17:24 Ok merci Christian. 👍

Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Les drivers oui, pas les moteurs!
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 6201
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 78
Pays :
France (fr)
France
avr. 2025 28 17:53

Re: Comment faire l'automatisme d'un ascenseur

Message par herwatFrance

J'ai monté mes vitrines sur panneaux de CP de 10 mm : aucun problème .
Oui, il vaut mieux mettre un moteur à chaque extrémité ne serait-ce que pour avoir une bonne stabilité .
et oui, je les ai branché en parallèle sur le driver .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 28 17:53

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

Il te faut :

1 Arduino (attention, avec le Wemos mini le nombre d'E/S est limité) Hervé te dira ce qu'il utilise.

X moteur (Nema 17)

x Driver moteur (perso j'utilise des TMC2209 qui équipent les imprimante 3D)

Chaque moteur a son Driver et les commandes des Driver sont banchés en //.

Tu ne peut pas avoir plusieurs moteur sur un Driver.
ImageImageImage

:tirechap:
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 6201
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 78
Pays :
France (fr)
France
avr. 2025 28 17:55

Re: Comment faire l'automatisme d'un ascenseur

Message par herwatFrance

TrainDoly a écrit : 28 avr. 2025, 17:51
ramasoft a écrit : 28 avr. 2025, 17:24 Ok merci Christian. 👍

Question: si je mets un moteur de chaque côté, ils sont branchés tout bêtement en parallèle ?
Les drivers oui, pas les moteurs!
Si, on peut les brancher en parallèle sur le driver . Il suffit de faire attention au réglage du courant .
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 6201
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 78
Pays :
France (fr)
France
avr. 2025 28 18:00

Re: Comment faire l'automatisme d'un ascenseur

Message par herwatFrance

Une question pour Christian :
J'ai l'intention d'acheter des Wemos, mais il y en a de 36 sortes ! ! ! :3: :3: :3:
Je suis perdu !
Peux-tu éclairer ma lanterne vieillissante . . . .
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 28 18:06

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

Moi j'ai commandé ces Wemos là.

Sur les conseils d'Antoine et il m'a super bien briefé sur la com wifi avec.

Bien faire attention a prendre ceux en USB C et pas micro USB qui sont vite défaillant (ne pas se fier a la photo, le Chinois est malin et fourbe).
ImageImageImage

:tirechap:
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 18:09

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

J'ai une carte Aduino Uno, que j'avais achetée avec un kit de démarrage pour voir comment ça fonctionnait et je n'en ai jamais trouvé l'usage sur le réseau... ça doit faire l'affaire.
Donc su j'ai bien compris, c'est elle qui commande les drivers des moteurs et on met 2 drivers en série sur une sortie de l'Arduino, c'est bien ça ?
Hervé quand tu dis qu'il faut faire attention au réglage du courant, c'est quoi au juste ?
Ah oui, autre question de newbie: ça s'alimente sous 5V je suppose et quelle consommation faut-il prévoir ?
Ce qu'il faudrait c'est nous faire une liste du matos avec les références.
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 18:11

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

likiki a écrit : 28 avr. 2025, 18:06 le Chinois est malin et fourbe :hhhaaaa:
Avatar du membre
herwatFrance
2000 posts et +
2000 posts et +
Messages : 6201
Enregistré le : 11 mars 2021, 16:14
Prénom : Hervé
LOCALISATION : Creuse
Centres d'intérêts : Modélisme ferroviaire
Impression 3D
Arduino
Echelle pratiquée : H0
Âge : 78
Pays :
France (fr)
France
avr. 2025 28 18:13

Re: Comment faire l'automatisme d'un ascenseur

Message par herwatFrance

likiki a écrit : 28 avr. 2025, 18:06 Moi j'ai commandé ces Wemos là.

Sur les conseils d'Antoine et il m'a super bien briefé sur la com wifi avec.

Bien faire attention a prendre ceux en USB C et pas micro USB qui sont vite défaillant (ne pas se fier a la photo, le Chinois est malin et fourbe).
ça y est, c'est dans la boite ! :hhhaaaa:
Avatar du membre
likikiFrance
Site Admin
Site Admin
Messages : 11062
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 58
Pays :
France (fr)
France
avr. 2025 28 18:36

Re: Comment faire l'automatisme d'un ascenseur

Message par likikiFrance

Perso, je travail avec :

Moteur NEMA 17 de ce type

Driver TMC2209

PCB a bandes

Bornes a vis enfichable


Attention, vous trouverez certainement moins cher ailleurs. Ceci est juste pour montrer le visuel de la chose.

Pour le coté mécanique, tout dépend de ce que vous voulez faire. Perso c'est sur vis sans fin et deux guides en étiré;

:a_suivre:
ImageImageImage

:tirechap:
Avatar du membre
ramasoftFrance
1300 posts et +
1300 posts et +
Messages : 1383
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 67
Pays :
France (fr)
France
avr. 2025 28 18:41

Re: Comment faire l'automatisme d'un ascenseur

Message par ramasoftFrance

:merciiii: :merciiii:
Répondre

Retourner vers « L'ascenseur a trains »