LOCODUINO

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

mercredi 24 avril 2024

Visiteurs connectés : 70

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 à (...)

Retourner à l'article

Vous répondez à :

Un automatisme de Passage à Niveau 12 février 2020 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/I... 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.)

24 Messages

Rubrique Projets

LaBox, Une Centrale DCC polyvalente et abordable (1)

LaBox, Une Centrale DCC polyvalente et abordable (2)

LaBox, Une Centrale DCC polyvalente et abordable (3)

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 (1)

La carte Satellite V1 (2)

La carte Satellite V1 (3)

La carte Satellite V1 (4)

La carte Satellite V1 (5)

Block Automatique Lumineux à 8 cantons analogiques

Un décodeur DCC pour les plaques tournantes Fleischmann et Roco

Passage à niveau géré par Arduino (5)

Éclairer le réseau (3)

Éclairer le réseau (2)

Passage à niveau géré par Arduino (4)

Éclairer le réseau (1)

Une manette simple et autonome pour LaBox

Passage à niveau géré par Arduino (3)

Souris et centrale sans fil

Passage à niveau géré par Arduino (2)

Un programme pour régler facilement les servos moteurs avec un ESP32

Enseigne de magasin

Feux tricolores

TCO Web interactif avec des ESP32 et des ESP8266 (5)

Multi-animations lumineuses

TCO Web interactif avec des ESP32 et des ESP8266 (4)

TCO Web interactif avec des ESP32 et des ESP8266 (3)

TCO Web interactif avec des ESP32 et des ESP8266 (2)

TCO Web interactif avec des ESP32 et des ESP8266 (1)

Affichage publicitaire avec Arduino (2)

Affichage publicitaire avec Arduino (1)

Éclairer le réseau (4)

Va-et-vient pour deux trains

Boitier 3D pour la station DCC minimale

Mon premier décodeur pour les aiguillages DCC

Ma première manette pour les aiguillages DCC

Banc de test pour les décodeurs DCC

CDM-Rail pour Ma première centrale DCC (2)

CDM-Rail pour Ma première centrale DCC (1)

Rocrail pour Ma première centrale DCC

JMRI pour Ma première centrale DCC

Éclairer le réseau (5)

Une horloge à échelle H0

Etude d’un passage à niveau multivoies

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

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

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

Un automatisme de Passage à Niveau

Simulateur de soudure à arc

La rétro-signalisation sur Arduino

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

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

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

Une animation sonore

Une barrière infrarouge

Un TCO xpressnet

Un capteur RFID

Passage à niveau géré par Arduino (1)

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

Chenillard de DEL

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)

Réalisation d’un va-et-vient automatique et réaliste

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)

Les derniers articles

LaBox, Une Centrale DCC polyvalente et abordable (3)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (1)


Thierry

LaBox, Une Centrale DCC polyvalente et abordable (2)


Dominique, msport, Thierry

Un programme pour régler facilement les servos moteurs avec un ESP32


bobyAndCo

TCO Web interactif avec des ESP32 et des ESP8266 (5)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (4)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (3)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (2)


utpeca

TCO Web interactif avec des ESP32 et des ESP8266 (1)


utpeca

Affichage publicitaire avec Arduino (2)


catplus, Christian

Les articles les plus lus

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

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

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

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

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

Chenillard de DEL

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

Etude d’un passage à niveau multivoies

LaBox, Une Centrale DCC polyvalente et abordable (1)

Block Automatique Lumineux à 8 cantons analogiques