Avis et vérification.

Une petite explication.

Voilà je n’ai plus de sortie de libre sur mon arduino uno mais comme j’y ai un shift register (x3) je pensais
en rajouter un 4ième shift register pour utiliser ses sorties Q1 a Q7 en niveau logique 0=low et 1=high

Relier les sorties du shift register a des pins de l’arduino nano définis en input puis quand la broche est détectée en
high envoyer un code au PCA9685 pour activer un servomoteur.

Je fais ça sans la moindre conviction et je suis donc preneur de toutes informations sur le code ou l’éléctronique.

Merci

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

// Utilisation de l'adresse par défaut 0x40 du Breakout.
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver( 0x40 );

#define SERVOMIN  150 // La longueur d'impulsion 'minimale' (valeur du compteur, max 4096)
#define SERVOMAX  600 // La longueur d'impulsion 'maximale' (valeur du compteur, max 4096)

// Servos Commandés - Numéro de sorties sur le breakout
uint8_t servo1 = 1;

int boutonA = 2;// sortie 2 de l arduino///////////////////
int etatBoutonA =0;// etat du bouton///////////////////////

void setup() {
  Serial.begin(9600);
  Serial.println("Controle des Servo Moteur #1 et #9!");

  pwm.begin();
 
  pwm.setPWMFreq(50);  // Les servo sont mis-à-jour à ~50 Hz
 

   pinMode (2,INPUT);/////////////////////////

 Serial.println("Fin de setup()");
}

void loop() {
etatBoutonA = digitalRead (boutonA);

   if(etatBoutonA==HIGH) {
 Serial.println("bouton A ok()");

  int pulseLen = map( 150, 0, 650, SERVOMIN, SERVOMAX );
  pwm.setPWM(servo1, 0, pulseLen);
  
  delay(500);  
  }

Sur le dessin je n'ai mis qu'un servo moteur mais il y en auras 7.

La bibliothèque PWMServoDriver n'est certes pas prévue pour piloter un servo-moteur à travers un PCA9685.
Pourtant c bien celle que je trouve sur les tuto.
https://wiki.mchobby.be/index.php?title=AdaFruit_PWM_Driver

et sur mon uno j'ai 3 moteur pap +74hc595+ des relais.

Bonjour,

Je ne vois pas à quoi sert ta carte nano, tu peux brancher directement le PCA9685 sur la carte uno.
Si tu as 7 servos tu peux utiliser les 9 sorties libres du PCA9685 comme sorties tout ou rien, pas besoin de registre à décalage supplémentaire..

Le librairie Adafruit_PWMServoDriver est bien celle qu'il faut utiliser pour piloter les servos sur la carte PCA9685.

Oups ... Effectivement, kamill as raison. Elle bosse directement sur I2C.
Cela m'apprendra à ne pas être assez curieux et répondre trop vite.

En fait je pensais que le PCA9685 était la petite carte rose sur le schéma.

@+

Vous êtes tous pareils. Vous donnez les infos au compte-gouttes.

Oui enfin ma première phrase:Voilà je n’ai plus de sortie de libre sur mon arduino uno .

Et je n’ai malheureusement pas de mega a porté de main.

du coup j’ai pensé a ajouter un shift registre qui me permet de synchroniser les leds
avec les servo moteur et de créer une extension de sorties.

Super idée: Si tu as 7 servos tu peux utiliser les 9 sorties libres du PCA9685 comme sorties tout ou rien, pas besoin de registre à décalage supplémentaire…

un grand merci a vous deux.

Tu n'as pas besoin de sorties supplémentaires pour connecter le PCA9685, il se connecte en I2C.

Ok merci je regarde ça.
Je ne code qu'une fois par an pour Noël avec ma petite mémoire pas du tout vive hihihi.
Sur l'arduino j'ai i2c en A4 et A5 et crois que les autres i2c sont elles en haut mais je n'arrive pas à savoir
lesquelles et ce avec précision ni comment les déclarer.

L'I2C sur a4 et a5 et l'I2C sur les broches marquées SDA SCL est le même (les broches sont reliées).
Donc il y a un seul bus I2C, mais tu peux y mettre plusieurs périphériques I2c (chaque périphérique a une adresse).

J'ai supprimé mes commentaires erronés. Pas envie que quelqu'un prenne ça au pied de la lettre.
Bonne continuation.