1/160 - Echelle N

Le Forum consacré à l'Echelle N
 
AccueilAccueil  PortailPortail  ÉvènementsÉvènements  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
N'hésitez pas à consulter le calendrier et les événements du forum pour voir les manifestations près de chez vous !
-45%
Le deal à ne pas rater :
WHIRLPOOL OWFC3C26X – Lave-vaisselle pose libre 14 couverts – ...
339 € 622 €
Voir le deal

 

 commande aiguille avec Multimaus - Arduino- PCA9685

Aller en bas 
3 participants
AuteurMessage
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeVen 3 Fév 2023 - 9:42

Bonjour mes gens,

J'ai réussi commandé une led avec ma multi Maus via un circuit electronique d'essai et un Arduino, en suivant la demarche suivante http://letraindejembi.canalblog.com/archives/2019/08/05/37543458.html

J'ai aussi testé la commande d'un servo avec un bouton poussoir. OK

Maintenant je cherche à concilier ce bout de programme avec la commande I2C vers 2 cartes PCA9685 qui va gérer les 19 aiguilles de mon réseau.

Quelqu'un a t il déjà associé Multimaus - Arduino - carte PCA9685 - servo ?.

J'aimerai connaitre le code si possible Smile
Revenir en haut Aller en bas
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeDim 26 Mar 2023 - 21:33

Apres etudié les tuto dont celui ci en particulier
https://youtu.be/aPefXj3t1A0 et compiler avec d'autres  , pour completer l'adressage de plusieurs cartes PCA, voilà le prototypage :

https://drive.google.com/file/d/14BzvPQfvwOJgFSs-VKW-uYTrXHTWq6Gu/view?usp=drivesdk

Je pilote les 32 servos avec 2 cartes pca9685 via la multimaus 
Les accessoires n°1 à 16 sont connectés sur la première carte PCA,  les n° 17 à 32 sur la seconde carte.

Je vous mettrai le code en .txt.( je ne sais pas comment afficher directement dans le post Sad).
Revenir en haut Aller en bas
Fantasio
Membre
Membre
Fantasio


Masculin Age : 63
Localisation : Saint Médard en Jalles (33)
Nombre de messages : 2259
Date d'inscription : 15/11/2019

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeDim 26 Mar 2023 - 22:16

Pour insérer ton code tu trouveras dans la barre d'outils l'icone "Code". Ce qui te permettra d'insérer ton code en l'ayant copié préalablement.
Voila ce que cela donne:
Code:
void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:

}
En espérant que cela puisse t'aider
Revenir en haut Aller en bas
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1953
Date d'inscription : 29/12/2016

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeDim 26 Mar 2023 - 22:18

Pour insérer un code, il semble qu'il y ait cette balise :

Code:
insérer le code ici...

Elle se trouve sous ce bouton :

commande aiguille avec Multimaus - Arduino- PCA9685 Captur10

Wink

Charles

EDIT : On se complète avec Fantasio ! Very Happy
Revenir en haut Aller en bas
https://www.webcod.fr
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeDim 26 Mar 2023 - 22:30

Entendu, il faut j'aille sur un pc. Il n'y a pas l'icône sur le mobile
Revenir en haut Aller en bas
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 0:05

Code:
#include <NmraDcc.h>

// This Example shows how to use the library as a DCC Accessory Decoder or a DCC Signalling Decoder
// It responds to both the normal DCC Turnout Control packets and the newer DCC Signal Aspect packets
// You can also print every DCC packet by uncommenting the "#define NOTIFY_DCC_MSG" line below

#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

#define SERVOMIN  250 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  480 // this is the 'maximum' pulse length count (out of 4096)

// called this way, it uses the default address 0x40
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // 1ere carte PCA9685
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x41);// 2eme carte PCA9685

NmraDcc  Dcc ;

typedef struct {
  uint16_t servoAddr;
  uint16_t minPos;
  uint16_t maxPos;
}
myServo;

myServo servoArray[16] = {
                          {65533, SERVOMIN,SERVOMAX},//Accessoire A1 multimaus ROCO Z1 decallé de -4
                          {65534, SERVOMIN,SERVOMAX},
                          {65535, SERVOMIN,SERVOMAX},                           
                          {0, SERVOMIN,SERVOMAX},

                          {1, SERVOMIN,SERVOMAX},
                          {2, SERVOMIN,SERVOMAX},
                          {3, SERVOMIN,SERVOMAX},
                          {4, SERVOMIN,SERVOMAX},

                          {5, SERVOMIN,SERVOMAX},
                          {6, SERVOMIN,SERVOMAX},
                          {7, SERVOMIN,SERVOMAX},
                          {8, SERVOMIN,SERVOMAX},

                          {9, SERVOMIN,SERVOMAX},
                          {10, SERVOMIN,SERVOMAX},
                          {11, SERVOMIN,SERVOMAX},
                          {12, SERVOMIN,SERVOMAX},
}
;
myServo servoArray1[16] = {
                          {13, SERVOMIN,SERVOMAX},
                          {14, SERVOMIN,SERVOMAX},
                          {15, SERVOMIN,SERVOMAX},                           
                          {16, SERVOMIN,SERVOMAX},

                          {17, SERVOMIN,SERVOMAX},
                          {18, SERVOMIN,SERVOMAX},
                          {19, SERVOMIN,SERVOMAX},
                          {20, SERVOMIN,SERVOMAX},

                          {21, SERVOMIN,SERVOMAX},
                          {22, SERVOMIN,SERVOMAX},
                          {23, SERVOMIN,SERVOMAX},
                          {24, SERVOMIN,SERVOMAX},

                          {25, SERVOMIN,SERVOMAX},
                          {26, SERVOMIN,SERVOMAX},
                          {27, SERVOMIN,SERVOMAX},
                          {28, SERVOMIN,SERVOMAX},

}             
;

const int DccAckPin = 3 ;

//int firstServo = 21;
//int numServos = 16;
int numServos = 32;

// This function is called whenever a normal DCC Turnout Packet is received and we're in Output Addressing Mode
void notifyDccAccTurnoutOutput( uint16_t Addr, uint8_t Direction, uint8_t OutputPower )
{
  Serial.print("notifyDccAccTurnoutOutput: ") ;
  Serial.print(Addr,DEC) ;
  Serial.print(',');
  Serial.print(Direction,DEC) ;
  Serial.print(',');
  Serial.println(OutputPower, HEX) ;

  for (int i=0; i< numServos; i++)
    if (Addr == servoArray[i].servoAddr)
  {
    if (Direction == 0)
    pwm.setPWM(i, 0, servoArray[i].minPos);
    else
    pwm.setPWM(i, 0, servoArray[i].maxPos);
   
  }
 
  for (int i=0; i< numServos; i++)
  if (Addr == servoArray1[i].servoAddr)
  {
    if (Direction == 0)
    pwm1.setPWM(i, 0, servoArray1[i].minPos);
    else
    pwm1.setPWM(i, 0, servoArray1[i].maxPos);
   
  }

}

// This function is called whenever a DCC Signal Aspect Packet is received
void notifyDccSigOutputState( uint16_t Addr, uint8_t State)
{
  Serial.print("notifyDccSigOutputState: ") ;
  Serial.print(Addr,DEC) ;
  Serial.print(',');
  Serial.println(State, HEX) ;
}

void setup() {
  // put your setup code here, to run once:
Serial.begin(115200);
 
  // Configure the DCC CV Programing ACK pin for an output
  pinMode( DccAckPin, OUTPUT );

  Serial.println("NMRA DCC Example 1");
 
  // Setup which External Interrupt, the Pin it's associated with that we're using and enable the Pull-Up
  Dcc.pin(0, 2, 1);
 
  // Call the main DCC Init function to enable the DCC Receiver
  Dcc.init( MAN_ID_DIY, 10, CV29_ACCESSORY_DECODER | CV29_OUTPUT_ADDRESS_MODE, 0 );

  Serial.println("Init Done");
  // initialisation des 2 cartes PCA9786
  pwm.begin();
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

  pwm1.begin();
  pwm1.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

 
}

void loop() {
  // put your main code here, to run repeatedly:
 // You MUST call the NmraDcc.process() method frequently from the Arduino loop() function for correct library operation
  Dcc.process();
}
Revenir en haut Aller en bas
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 0:16

Roco a decallé de -4 ses adresses DCC; C'est pour cela que mes tables commencent à 65533 jusqu’à 12 ( si je tape A1 ds la mause , l'arduino voit 65633)
Ah, il faut un petit montage pour lier la centrale DCC 18Volt à L'arduino 5V , decrit ici par exemple :
https://www.modelisme-ferroviaire-rouen.fr/pratique-et-tutoriels/arduino-modelisme-ferroviaire/decoder-trames-dcc/
Revenir en haut Aller en bas
Fantasio
Membre
Membre
Fantasio


Masculin Age : 63
Localisation : Saint Médard en Jalles (33)
Nombre de messages : 2259
Date d'inscription : 15/11/2019

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 0:29

Dans un précédent message, je te cite
Ch'zé a écrit:
...
J'ai réussi commandé une led avec ma multi Maus via un circuit electronique d'essai et un Arduino...

Ce code m'intéresse particulièrement, te serait il possible de le poster?
Merci par avance.
Revenir en haut Aller en bas
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 9:41

Code:
// Utilisation de la librairie DCC Decoder pour lire les trames DCC
#include "DCC_Decoder.h"

// Adresse de base du Arduino-Decodeur
#define baseAdresse 100 

// Déclaration des éléments par rapport aux broches de l'Arduino
// La LED verte est connectée à la broche 3
// La LED rouge est connectée à la broche 4
const int Led_Verte = 3;
const int Led_Rouge = 4;

// Cette fonction est appelée par la librairie pour
// chaque activer / désactiver au niveau des adresses
void BasicAccDecoderPacket_Handler(int address, boolean activate, byte data) {
  address -= 1;
  address *= 4;
  address += 1;
  address += (data & 0x06) >> 1;
  //address = address - 4; // cette ligne devra être décommentée si centrale RocoMouse et/ou z21

  boolean enable = (data & 0x01) ? 1 : 0;
 
  // Ex: si adresse de base est 100 alors l'arduino réagit aux adresse 100, 101, 102,...
  // Si l'adresse accessoire envoyée par la centrale correspond à l'une de notre programme
  // Alors on récupère son état (activé/désactivé) et on exécute en conséquence les actions
  // Ici la gestion de l'alimentation de 2 LEDs.
  switch (address) {
 
    case (baseAdresse):
      if (enable) {
        digitalWrite(Led_Rouge, LOW);
        digitalWrite(Led_Verte, HIGH);
      } else {
        digitalWrite(Led_Rouge, HIGH);
        digitalWrite(Led_Verte, LOW);
      }
      break;

    // Cas pour les adresses suivantes
/*
    case (baseAdresse + 1):

      break;

    case (baseAdresse + 2):
   
      break;
*/
  }

}


void setup() {
 
  // Broche des LEDs en mode "Sortie"
  pinMode(Led_Rouge, OUTPUT);
  pinMode(Led_Verte, OUTPUT);
 
  // Init les Voyants, par défaut Rouge actif
  digitalWrite(Led_Rouge, HIGH);
  digitalWrite(Led_Verte, LOW);

  // Les 2 lignes suivantes permettent d'initialiser la librairie DCC Decoder
  DCC.SetBasicAccessoryDecoderPacketHandler(BasicAccDecoderPacket_Handler, true);
  DCC.SetupDecoder( 0x00, 0x00, 0 );
}


void loop() {

  // Appel de la librairie DCC pour lire les valeurs
  DCC.loop();
}


"piloter l’adresse 100 depuis votre centrale (ou ordinateur) et basculer entre les états on/off pour allumer le voyant rouge ou vert."
Revenir en haut Aller en bas
Ch'zé
Membre



Masculin Age : 58
Localisation : Le parcq
Nombre de messages : 36
Date d'inscription : 26/02/2022

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 9:52

commande aiguille avec Multimaus - Arduino- PCA9685 Captur10

Matériel nécessaire à la réalisation
Partie électronique
Liste des composants utilisés
1x Carte Arduino UNO (U1)
1x Résistance 1KΩ / 1 Watt (R1)
2x Résistance 10KΩ / 1/4 Watt (R2 et R3)
1x Diode 1N4148 (D1)
1x Optocoupleur 6N137 (U2)
1x Plaque d’essais (ou CI imprimé)

Aussi des infos plus precise pour lea realisation de la carte electronique
http://letraindejembi.canalblog.com/archives/2019/08/05/37543458.html
Revenir en haut Aller en bas
Fantasio
Membre
Membre
Fantasio


Masculin Age : 63
Localisation : Saint Médard en Jalles (33)
Nombre de messages : 2259
Date d'inscription : 15/11/2019

commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitimeLun 27 Mar 2023 - 10:27

Merci Ch'zé pour ton envoi. Très sympa de ta part Very Happy
Revenir en haut Aller en bas
Contenu sponsorisé





commande aiguille avec Multimaus - Arduino- PCA9685 Empty
MessageSujet: Re: commande aiguille avec Multimaus - Arduino- PCA9685   commande aiguille avec Multimaus - Arduino- PCA9685 Icon_minitime

Revenir en haut Aller en bas
 
commande aiguille avec Multimaus - Arduino- PCA9685
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
1/160 - Echelle N :: Modèles réduits à l'echelle N :: Les installations fixes-
Sauter vers: