Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - peyo

Pages: [1] 2
1
Infos et bonnes affaires / Train de table
« le: août 25, 2021, 03:47:30 pm »
Bonjour à tous,
Suite à mon projet de train de table
http://forum.locoduino.org/index.php?topic=411.msg11082#msg11082

J'ai suivi les conseils de certains (entre autre Dominique) et propose désormais mon réseau de trains de table à la location pour les événements. Ainsi que mon réseau en 7''1/4 pour amuser les enfants en extérieur.
Si toutefois vous ou l'une de vos connaissances pouvait être intéressés, merci de faire tourner le lien :

https://redingotesdelouest.wordpress.com/trains/


Je propose également toute la vaisselle 1900 accumulée ainsi que plusieurs autres services, calèches, animations... pas trop loin de la Bretagne !


D’avance merci pour votre soutien et belle journée à tous !
Peyo pour les Redingotes De l'Ouest !

2
Vos projets / Re : Un train de table
« le: août 18, 2020, 11:00:00 pm »
Et le fameux pont levant :

3
Vos projets / Re : Un train de table
« le: août 18, 2020, 10:52:33 pm »
Comme promis... ;)

4
Vos projets / Re : Un train de table
« le: août 11, 2020, 12:15:41 pm »
euuu oui mais  on fait comment??

5
Vos projets / Re : Un train de table
« le: août 11, 2020, 11:58:45 am »
Merci Dominique pour ta réponse.
ALors j'ai fini mon code, j'ai même trouvé une solution pour la lumière même si j'aurais préféré qu'elle clignote..
Il me reste qu'un seul BUGG :
1 fois sur 10 lorsque le pont descend il se met à remonter tout seul... Même si j'enlève le train des rails.... bugg de la carte???
j'ai mis un delay 9000 pour bloquer le prog mais ça ne change rien... si quelqu’un a une idée......


Merci

//Automate pour pont levant automatique.

int pinLedpont = 13;
int ILS1 = 2;
int ILS2 = 3;


//gestion du pont en H
int IN1 = 5; // commande pont en H "1"
int IN2 = 6; // commande pont en H "2"

 
int a; //rapport cyclique entre 0 et 255


 // tableau des machines à états
 enum {monte, descend } etatpont ;
 
 //////////////////////////////////////////////////////////////
void setup() {
 
  Serial.begin(9600);
 
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
 
  //leds pont

  pinMode(pinLedpont, OUTPUT);
 
 
  // Bouton poussoir 1
  pinMode(ILS1, INPUT_PULLUP);
  pinMode(ILS2, INPUT_PULLUP);
 
   
  // initialisation du moteur vitesse à 255 sens descente (IN2)
  digitalWrite(IN1, 255);
  digitalWrite(IN2, 0);
 
 // Initialisation des états
etatpont = descend ;
 
 // initialisation du facteur d'incrémentation moteur
 a=255;
 
}

void loop()
{  // Récuperer valeur des ILS
  int amont = digitalRead(ILS1);
  int aval = digitalRead(ILS2);

  // Si passage ILS1
  if (amont == HIGH)
  {
     digitalWrite(pinLedpont, HIGH);
    a=0;
    analogWrite(IN2, 0);
    analogWrite(IN1, a);
    ACCELERATION_descend();
    etatpont = monte ;
    a=255;
    delay(9000);
  }

  // Si passage ILS2
 
 
  if (aval == HIGH )
  {
    a=0;
    analogWrite(IN1, 0);
    analogWrite(IN2, a);
    ACCELERATION_monte ();
    etatpont = descend;
    a=255;
    delay(10);
    digitalWrite(pinLedpont, LOW);
    delay(9000);
  }
 
 }

void ACCELERATION_monte()
{
  while (a <=255)
  { // phase de montée.
   analogWrite(IN1, a);
   a = a + 1;
   delay(5);
 }
}


void ACCELERATION_descend()
{
 while (a <=255)
  { // phase descente.
   analogWrite(IN2, a);
   a = a + 1;
   delay(5);
 }

}



6
Vos projets / Re : Un train de table
« le: août 10, 2020, 04:41:25 pm »
Alors voici mon travail de la matinée. ça fonctionne au poil !!
Si quelqu'un a une idée pour ajouter des leds qui clignotent lorsque le pont bouge, je suis preneur !
Merci d'avance
//Automate pour pont levant automatique.

int pinLedpont = 13;
int ILS1 = 2;
int ILS2 = 3;

// Configure l'état initial des LEDs
byte etatpinLedpont = LOW;

//gestion du pont en H
int IN1 = 5; // commande pont en H "1"
int IN2 = 6; // commande pont en H "2"

// Nombre de millisecondes entre deux changements d'état des LED
const unsigned long CLIGNOTANT = 1000;
 
int a; //rapport cyclique entre 0 et 255


 // tableau des machines à états
 enum {monte, descend } etatpont ;
 
 //////////////////////////////////////////////////////////////
void setup() {
 
  Serial.begin(9600);
 
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
 
  //leds pont

  pinMode(pinLedpont, OUTPUT);
  digitalWrite(pinLedpont, etatpinLedpont);
 
 
  // Bouton poussoir 1
  pinMode(ILS1, INPUT_PULLUP);
  pinMode(ILS2, INPUT_PULLUP);
 
   
  // initialisation du moteur vitesse à 255 sens descente (IN2)
  digitalWrite(IN1, 0);
  digitalWrite(IN2, 0);
 
 // Initialisation des états
etatpont = descend ;
 
 // initialisation du facteur d'incrémentation moteur
 a=255;
 
}

void loop()
{  // Récuperer valeur des ILS
  int amont = digitalRead(ILS1);
  int aval = digitalRead(ILS2);

  // Si passage ILS1
  if (amont == HIGH)
  {
    a=0;
    analogWrite(IN2, 0);
    analogWrite(IN1, a);
    ACCELERATION_monte();
    etatpont = monte ;
    a=255;
    delay(10);
  }

  // Si passage ILS2
 
 
  if (aval == HIGH )
  {
    a=0;
    analogWrite(IN1, 0);
    analogWrite(IN2, a);
    ACCELERATION_descend ();
    etatpont = descend;
    a=255;
    delay(10);
  }
 
 }



void ACCELERATION_monte()
{
  while (a <=255)
  { // phase de montée.
   analogWrite(IN1, a);
   a = a + 1;
   delay(5);
 }
}


void ACCELERATION_descend()
{
 while (a <=255)
  { // phase descente.
   analogWrite(IN2, a);
   a = a + 1;
   delay(5);
 }
 }
 
 void task_led1() {
  static unsigned long previousMillisLed1 = 0;
  static byte etatpinLedpont = LOW;
 
  unsigned long currentMillis = millis();
 
  // Si BLINK_INTERVAL_1 ou plus millisecondes se sont écoulés
  if(currentMillis - previousMillisLed1 >= CLIGNOTANT) {
   
    // Garde en mémoire la valeur actuelle de millis()
    previousMillisLed1 = currentMillis;
   
    // Inverse l'état de la LED 1
    etatpinLedpont = !etatpinLedpont;
    digitalWrite(pinLedpont, etatpinLedpont);
  }
}



7
Vos projets / Re : Un train de table
« le: août 09, 2020, 08:56:59 pm »
Bonjour messieurs.

 Voilà bien longtemps que je n'ai pas laissé de message au sujet de ce poste.
 ET pourtant mon mariage est bien toujours d'actualité malgré le report du au covid... il aura lieu samedi prochain le 15 août.
Après de très nombreuses réflexions ainsi que de nombreux essais, j'ai finalement opté pour des tables de 8 places avec des viaducs entre chaque table...

 Et oui j'ai réalisé 9 grands viaduc d'un mètre 20 pour permettre au train de circuler entre les différents convives.

Mon défi Arduino etait du coup de réaliser un pont automatique levant pour permettre aux invités situés à l'intérieur des tables de pouvoir s'installer et sortir pour par exemple aller aux toilettes.

 J'avais donc opté pour la simplicité en achetant un petit circuit  analogique de boucle de retournement.
Il fonctionnait à l'aide de deux ILS placés avant et après le pont, chaque impulsion ordonnant au pont tantôt de se lever tantôt de se baisser (gestion de sens du courant)
Il se trouve que je viens de griller se maudit circuit et à 6 jours du mariage me voilà en panique sans solution de rechange ....


 Je viens donc solliciter une dernière fois pour ce projet votre aide à savoir : quelqu'un aurait-il une solution pour commander un moteur avec un module l298n avec deux ILS placés avant le pont ordonnant au module de puissance de tourner le moteur dans un sens (verin électrique capteur fin de course intégrés) l'autre ILS permettant d'actionner le module de puissance dans l'autre sens pour baisser le pont.
Le top serais bien sûr de faire accélérer progressivement le moteur pour éviter les pics de courant..

J'ai pourtant depuis mon premier message fait des progrès en programmation Arduino mais là je vous avoue qu'à 6 jours de l'échéance j'ai l'impression de plus rien savoir.
Je serai sans doute encore capable d'adapter un programme similaire à ce que je souhaite réaliser et je vais m'y plancher dès demain soir.
Si jamais vous avez une idée je suis bien sûr preneur.
 
Je pense avoir tout le matos d'avance...

Un énorme merci d'avance et bonne semaine à tous.
Peyo.

8
Vos projets / Re : Tropicaliser un arduino
« le: août 23, 2018, 10:27:20 pm »
Merci pour l'info :-)

9
Vos projets / Tropicaliser un arduino
« le: août 23, 2018, 06:39:21 pm »
Bonjour à tous,

Quelqu'un serait-il comment faire, pour tropicaliser un circuit arduino?

L'idée est qu'un arduino placé sur un circuit de train, en extérieur, en Bretagne.. ne doit pas durer très longtemps...

Noyer dans la Résine epoxy?
Dans de la colle de pisto-colle?

Je ne sais pas si c'est une bonne idée au niveau de l'échauffement du circuit,

Quelqu'un a déjà fait ce genre de truc???

D'avance merci pour vos conseils.

10
Vos projets / Re : Chargeur de wagons automatique
« le: août 23, 2018, 06:12:37 pm »
Le montage :

11
Vos projets / Re : Chargeur de wagons automatique
« le: août 23, 2018, 04:34:53 pm »
Le grafcet :



12
Vos projets / Re : Chargeur de wagons automatique
« le: août 23, 2018, 04:12:40 pm »
Après pas mal d'aides sur les forums, voici la solution pour réaliser un exemple de chargeur automatique de produits lors de l'appui long sur un bouton

Dans mon cas, une pédale de voie pour un train, afin de remplir automatiquement les wagons.

Pour le fonctionnement, CF grafcet fonctionnel.

Le code :


//broches de l'arduino utilisées
#define pinPedale   2
#define pinLedRouge 4
#define pinLedOrange 5
#define pinLedVerte 6
#define pinRelais   13

//délais (en ms)
#define tempoActive       2000
#define tempoRemplissage  10000

//inclusion de la librairies de machines à états YASM
#include <yasm.h>

//déclaration de la machines à états "pompe"
YASM pompe;

void setup()
{
  // paramétrage des broches d'entrées
  pinMode(pinPedale, INPUT);

  // paramétrage des broches de sorties
  pinMode(pinRelais, OUTPUT);
  pinMode(pinLedRouge, OUTPUT);
  pinMode(pinLedOrange, OUTPUT);
  pinMode(pinLedVerte, OUTPUT);

  //lancement de la machine à états : definition de l'état initial
  pompe.next(pompeAttente);
}

void loop()
{
  //execution de la machine à états
  pompe.run();
}

/////////////états de la machine "pompe" /////////////////////

void pompeAttente()
{
  //on attends le train (meuhhh ! )
 
  digitalWrite(pinLedRouge, LOW);
  digitalWrite(pinLedVerte, HIGH);
  digitalWrite(pinLedOrange, LOW);
  digitalWrite(pinRelais, HIGH);

  //si le train est sur la pédale, on passe à l'étape suivante
  if (digitalRead(pinPedale) == HIGH)
    pompe.next(pompeTempoActivation);
}

void pompeTempoActivation()
{
  //ici le train est sur la pédale
 
  digitalWrite(pinLedRouge, HIGH);
  digitalWrite(pinLedVerte, LOW);
  digitalWrite(pinLedOrange, LOW);
  digitalWrite(pinRelais, HIGH);

  //si le train quitte la pédale, on retourne en attente
  if (digitalRead(pinPedale) == LOW)
    pompe.next(pompeAttente);

  //et si le temps d'activation est écoulé, on passe à l'état suivant (remplissage)
  if (pompe.elapsed(tempoActive))
    pompe.next(pompeRemplissage);
}

void pompeRemplissage()
{
  //ici on remplit la citerne
 
  digitalWrite(pinLedRouge, HIGH);
  digitalWrite(pinLedVerte, LOW);
  digitalWrite(pinRelais, LOW);

  //si le train quitte la pédale, on retourne en attente
  if (digitalRead(pinPedale) == LOW)
    pompe.next(pompeAttente);

  //et si le temps de remplissage est écoulé, on passe à l'état suivant (attente départ train)
  if (pompe.elapsed(tempoRemplissage))
    pompe.next(pompeAttenteDepart);
}

void pompeAttenteDepart()
{
  //la citerne est pleine, on attends le départ du train
 
  digitalWrite(pinLedRouge, LOW);
  digitalWrite(pinLedOrange, HIGH);
  digitalWrite(pinLedVerte, LOW);
  digitalWrite(pinRelais, HIGH);

  //si le train quitte la pédale, on retourne en attente
  if (digitalRead(pinPedale) == LOW)
    pompe.next(pompeAttente);
}

Voilà :-)



13
Vos projets / Re : Chargeur de wagons automatique
« le: août 23, 2018, 10:38:10 am »
Voici mon grafcet :


14
Vos projets / Chargeur de wagons automatique
« le: août 22, 2018, 08:55:55 pm »
Messieurs,
Voici mon nouveau projet pour mon réseau de jardin au 7/8n2
Je souhaiterais faire une entreprise de chargement de produit chimique (en vrai de l'eau pour arroser les plantes du réseau)

En gros : le feu est au vert, le train arrive sous le chargeur, une pédale de voie est activée, au bout de deux secondes (pédale enfoncée), le feux passe au rouge, le chargeur rempli le wagon de produit pendant un temps donné, puis une fois la tempo écoulé, le feu repasse au vert, le train repart.

j'ai essayé des programmes toutes l'aprem en vain (je suis en vacances!) j'ai testé machine à états, delay, millis...
mais rien ne fonctionne!!

Le remplissage est assuré par un relais qui actionne une pompe à eau.

Je n'arrive pas à faire en sorte que l'action ne se fasse, que lorsque la pédale reste 2 secondes, (comme ça si le train ne fait que passer le remplissage ne ce fait pas!) je reviens toujours à mon programme de base :
//déclaration des variables
int pinBouton;
int pinLed1, pinLed2;

void setup() {
// definition mode relais
  pinMode(13, OUTPUT);

    //initialisation des variables
  pinBouton = 2;
  pinLed1 = 4;
  pinLed2 = 6;
 
  //définition des modes
  pinMode(pinBouton, INPUT); //mode lecture pour le bouton
  pinMode(pinLed1, OUTPUT); //mode écriture pour led1
  pinMode(pinLed2, OUTPUT); //mode écriture pour led2
 
}
void loop() {
   //lecture de l'état du bouton et stockage dans etatBouton
  boolean etatBouton = digitalRead(pinBouton);
  //test des conditions
  if (etatBouton==HIGH && ????)//test si bouton appuyé
  {
remplissage ();

  }
  if (etatBouton==LOW)//test si bouton levé
  {
    digitalWrite(pinLed1,HIGH); //Led1 allumée
    digitalWrite(pinLed2,LOW); //led2 éteinte
    digitalWrite(13, HIGH); //Relais sur OFF
  }
  delay(100); //petite attente
 
 
 
       
}

void remplissage ()
{
  digitalWrite(pinLed1,LOW); //led1 éteinte
    digitalWrite(pinLed2,HIGH); //led2 allumée
    delay (2000); //atternte de 2 secondes pour etre sur que le train ne bouge plus
    digitalWrite(13, LOW);//relais sur ON
    delay (10000);
    digitalWrite(pinLed1,HIGH); //Led1 allumée
    digitalWrite(pinLed2,LOW); //led2 éteinte

}

  //digitalWrite(13, HIGH);   
 

Pour le temps d'attente, j'ai trouvé ça qui fonctionne et que je pourrais intégrer à mon code mais je pense pouvoir faire plus simple..

int temps_defini = 2000;   
int ledPin     = 4;       
int boutonPin  = 2;     

unsigned long debut_appui;
boolean variable = false;
int etat_bouton;
int dernier_etat_bouton = LOW;
int etat_led = LOW;

void setup() {
pinMode(ledPin, OUTPUT);     
pinMode(boutonPin, INPUT);   
}



void loop(){
 
   etat_bouton = digitalRead(boutonPin);           
 
   
   
   if (etat_bouton == HIGH && dernier_etat_bouton == LOW){     
   debut_appui = millis();                                     
   variable = true;                                           
   }
   
   
   if ( variable == true && etat_bouton == HIGH &&  dernier_etat_bouton == HIGH){   
                                                                                 
     if ((millis() - debut_appui) >= temps_defini){                                             
     etat_led = HIGH;                                                         
     
     if(etat_bouton == LOW && etat_led == HIGH && dernier_etat_bouton == HIGH){
     etat_led = LOW;
     variable = true;}}
                         
}
dernier_etat_bouton = etat_bouton; 
digitalWrite(ledPin, etat_led);
}

Le summum serait d'arrêter le remplissage si le train part avant la fin, mais c'est pas ma priorité...

Des pistes, un conseil? d'avance merci à vous et bonne soirée.

Peyo

15
Vos projets / Re : Automate embarqué
« le: juillet 12, 2018, 10:25:14 pm »
Merci Dominique pour ton aide,
Je ne serais pas dispo cet été pour bosser sur ce programme mais dès la rentrée je m'y replonge !!!
Effectivement le bouton fonctionne bien mais les badges ne sont pas détectés.

Bonnes vacances à tous et bon courage pour ceux qui comme moi, bossent dur tout l'été !!



Pages: [1] 2