LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

jeudi 24 septembre 2020

68 visiteurs en ce moment

Un automatisme de Passage à Niveau

Avec un simple Pro Mini

. Par : Dominique, JPClaude

Le cahier des charges Le passage à niveau doit protéger une double voie, dont l’une des branches est en "Y". Il y a donc 5 sections de voies de part et d’autre du passage à niveau. Sur chaque branche, sont disposés 2 détecteurs de type interrupteur à lame souple, "ILS". Il y en a donc 10 au total. Le plus proche du passage à niveau doit (...)

Retourner à l'article

Vous répondez à :

Un automatisme de Passage à Niveau 12 février 14:40, par tresorier21000

Bonjour

Je suis en train de réaliser un passage à niveau au plus près de la réalité.
Tout fonctionne correctement (il me manque encore le son), mais je me heurte à un problème d’affichage sur un écran.

Je voudrais afficher en permanence sur un écran LCD I2C, l’état de 4 relais pour indiquer l’état du PN.
J’arrive bien à faire fonctionner mon affichage dans un programme isolé en utilisant la fonction delay().
Par contre, il n’est pas possible de bloquer l’ensemble du programme avec cette fonction.
Comment pourrais-je m’en sortir ?
J’avais pensé à utiliser MsTimer2, mais là, je suis bloqué !

Merci de votre aide

mon croquis ecran :

/* Fonctionnement d’un ecran LCS I2C sur Mega *****************
* Branchement en +VCC, GND, SDA (20) et SLC (21)
* Informations provenant de 4 contats de relais
* branchés en A0, A1, A2 et A3 avec Resistances et capa
* pour gérer les rebonds (avec un trigger sur la carte finale
* ***********************************************************/

/* programme non compatible avec le reste du passage à niveau
* du fait de l’utilisation de la fonction delay(1000) pour
* l’affichage des différents états à l’écran (blocage du prog)
* *********************************************************/

#include <LiquidCrystal_PCF8574.h>
#include <Wire.h>
#include <MsTimer2.h>

LiquidCrystal_PCF8574 lcd(0x27) ; // set the LCD address to 0x27 for a 16 chars and 2 line display
int show = -1 ;
#define PIN_S0 A0
#define PIN_S1 A1
#define PIN_S2 A2
#define PIN_S3 A3
boolean etat0 ;
boolean etat1 ;
boolean etat2 ;
boolean etat3 ;
int etatbouton = 1 ;

void setup()
// declaration des boutons en entrée
pinMode (PIN_S0, INPUT) ;
pinMode (PIN_S1, INPUT) ;
pinMode (PIN_S2, INPUT) ;
pinMode (PIN_S3, INPUT) ;

// MsTimer2 : : set (1000, ecran) ; periode de 1s
// MsTimer2 : : start() ;

int error ;
Serial.begin(115200) ;
Serial.println("LCD…") ;
// wait on Serial to be available on Leonardo
while (!Serial) ;
Serial.println("Dose : check for LCD") ;
// Voir http://playground.arduino.cc/Main/I2cScanner pour tester le port I2C.
Wire.begin() ;
Wire.beginTransmission(0x27) ;
error = Wire.endTransmission() ;
Serial.print("Error : ") ;
Serial.print(error) ;
if (error == 0)
Serial.println(" : LCD found.") ;
show = 0 ;
lcd.begin(16, 2) ; // initialize the lcd
else
Serial.println(" : LCD not found.") ;
// fin if
// fin setup()

void loop()
etat0 = digitalRead(PIN_S0) ;
etat1 = digitalRead(PIN_S1) ;
etat2 = digitalRead(PIN_S2) ;
etat3 = digitalRead(PIN_S3) ;
lcd.setBacklight(255) ;
lcd.home() ;
lcd.clear() ;

Serial.print(etat0) ;
Serial.print(etat1) ;
Serial.print(etat2) ;
Serial.print(etat3) ;

switch (etatbouton)
case 1 : if (etat0 == LOW) //HIGH avec bascule de schmitt (inversion du signal) sinon LOW
lcd.setCursor(0, 0) ;
lcd.print(" PN a 298 metres ") ;
lcd.setCursor(0, 1) ;
lcd.print(" ") ;

case 2 : if (etat1 == LOW)
lcd.setCursor(0, 0) ;
lcd.print(" PN a 240 metres ") ;
lcd.setCursor(0, 1) ;
lcd.print(" Ferme") ;

case 3 : if (etat2 == LOW)
lcd.setCursor(0, 0) ;
lcd.print(" Danger ") ;
lcd.setCursor(0, 1) ;
lcd.print(" Ne pas franchir ") ;

case 4 : if (etat3 == LOW)
lcd.setCursor(0, 0) ;
lcd.print(" Route barree") ;
lcd.setCursor(0, 1) ;
lcd.print(" travaux") ;

case 5 : if (etat0==HIGH && etat1==HIGH && etat2==HIGH && etat3==HIGH)
lcd.setCursor(0, 0) ;
lcd.print(" Etat du PN ") ;
lcd.setCursor(0, 1) ;
lcd.print(" indetermine") ;

delay(1000) ;

//fin de loop

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

20 Messages

Rubrique Projets

Un chenillard de DEL

Enseigne de magasin

Feux tricolores

Multi-animations lumineuses

L’Arduino et le système de commande numérique DCC

Un décodeur d’accessoire DCC versatile basé sur Arduino

Un moniteur de signaux DCC

Une barrière infrarouge

Un capteur RFID

Un TCO xpressnet

Une animation sonore

L’Arduino au coeur des systèmes de pilotage analogiques ou numériques

Calcul de la vitesse d’un train miniature avec l’Arduino

La génèse d’un réseau 100% Arduino

Une horloge à échelle H0

Simulateur de soudure à arc

Un automatisme de Passage à Niveau

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.

Etude d’un passage à niveau multivoies

La rétro-signalisation sur Arduino

Décodeur pour aiguillage à solénoïdes sur Arduino

Un décodeur DCC pour les signaux à deux ou trois feux sur Arduino NANO/UNO

Etude d’un passage à niveau universel

Réalisation pratique d’un système de mesure de vitesse à l’échelle N

Une Passerelle entre le bus S88 et le bus CAN pour la rétro signalisation

Un décodeur DCC pour 16 feux tricolores

Block Automatique Lumineux avec la carte shield "Arduino 4 relays"

Réalisation d’un affichage de gare ARRIVEE DEPART

Ménage à trois (Ordinateur, Arduino, réseau)

Realisation d’un va-et-vient automatique et réaliste

Souris et centrale sans fil

Communications entre JMRI et Arduino

Annonces en gare avec la RFID

Une croix de pharmacie animée avec Arduino UNO

Réalisation d’un wagon de mesure (distance et vitesse)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Comment piloter trains et accessoires en DCC avec un Arduino (2)

Comment piloter trains et accessoires en DCC avec un Arduino (3)

Comment piloter trains et accessoires en DCC avec un Arduino (4)

SGDD : Système de Gestion DD (1)

SGDD : Système de Gestion DD (2)

SGDD : Système de Gestion DD (3)

La PWM : Qu’est-ce que c’est ? (1)

La PWM : Qu’est-ce que c’est ? (2)

La PWM : Qu’est ce que c’est ? (3)

La PWM : Qu’est ce que c’est ? (4)

Mise en oeuvre du Bus CAN entre modules Arduino (1)

Mise en oeuvre du Bus CAN entre modules Arduino (2)

Un gestionnaire en C++ pour votre réseau (1)

Un gestionnaire en C++ pour votre réseau (2)

Un gestionnaire en C++ pour votre réseau (3)

Un gestionnaire en C++ pour votre réseau (4)

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (2)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Contrôleur à télécommande infrarouge pour centrale DCC++

Gestion d’une gare cachée (1)

Gestion d’une gare cachée (2)

Gestion d’une gare cachée (3)

La carte Satellite V1

La carte Satellite V1

La carte Satellite V1

La carte Satellite V1

Les derniers articles

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)


bobyAndCo

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.


Dominique

Une croix de pharmacie animée avec Arduino UNO


Christian

Réalisation d’un wagon de mesure (distance et vitesse)


Serge

Etude d’un passage à niveau multivoies


Dominique, JPClaude

Annonces en gare avec la RFID


bobyAndCo, Catplus, Christian

La carte Satellite V1


bobyAndCo, Dominique, Jean-Luc, Thierry

La carte Satellite V1


bobyAndCo, Dominique, Jean-Luc, Thierry

La carte Satellite V1


bobyAndCo, Dominique, Jean-Luc, Thierry

La carte Satellite V1


bobyAndCo, Dominique, Jean-Luc, Thierry

Les articles les plus lus

La PWM : Qu’est-ce que c’est ? (1)

Automatisation du pont FLEISCHMANN 6152 (HO) avec un ESP32 (1)

Réalisation de centrales DCC avec le logiciel libre DCC++ (3)

Comment piloter trains et accessoires en DCC avec un Arduino (1)

Feux tricolores

Réalisation de centrales DCC avec le logiciel libre DCC++ (1)

La PWM : Qu’est-ce que c’est ? (2)

Un chenillard de DEL

La PWM : Qu’est ce que c’est ? (3)

Identifier et localiser vos trains avec le RFID/NFC et un bus CAN.