Montages ESP32 S3 WROOM

Avatar du membre
France clbesson
Posteur habitué
Posteur habitué
Messages : 58
Enregistré le : 25 juin 2025, 09:05
Prénom : Clément
LOCALISATION : France
Centres d'intérêts : Modélisme ferroviaire HO
Electronique
programmation arduino
Echelle pratiquée : H0
Âge : 66
Pays :
France
France
sept. 2026 07 17:05

Re: Montages ESP32 S3 WROOM

Message par France clbesson

:merciiii: :merciiii:

Refaisant un peu surface, je viens de parcourir les différents posts de ce sujet.
Au vu du prix, la capacité et la puissance, les connexions wifi/Bt, et la compatibilité, des pistes intéressantes à explorer ...

merci pour ces tutos bien utiles pour faciliter l'approche ...

:bienv: :bienv: :PetitPoucejpg:
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 09 11:04

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii: à vous
Je suppose que l'on peut faire des mélages teintes avec les couleur entre-elles (en jouant sur 2 ou les 3 potars.
Exact, oui c'est possible.

Exercice: N°11.3

Contrôler un module RGB avec un potentiomètre
ex 11.3.jpg
Le sketch:

Code : Tout sélectionner

/**********************************************************************
  Filename    : SoftRainbowLight
  Description : Make the strip light up in rainbow colors.
  Auther      : www.freenove.com
  Modification: 2024/06/18
**********************************************************************/
#include "Freenove_WS2812_Lib_for_ESP32.h"

#define PIN_POT     1    // Define analog input pins
#define LEDS_COUNT  8     // The number of led
#define LEDS_PIN    14     // define the pin connected to the Freenove 8 led strip
#define CHANNEL     0     // RMT module channel
#define BRIGHTNESS  20   // breghtness, the value range is 0-255.
Freenove_ESP32_WS2812 strip = Freenove_ESP32_WS2812(LEDS_COUNT, LEDS_PIN, CHANNEL, TYPE_GRB);

void setup() {
  strip.setBrightness(BRIGHTNESS);
  strip.begin();
}

  void loop () {
  int colorPos=map(analogRead(PIN_POT), 0, 4095, 0, 255); for (int i= 0;i<
  LEDS_COUNT;i++){
    strip.setLedColorData(i,strip.Wheel(colorPos + i * 255 / 8));


  }strip.show(); // Send color data to LED, and display.
  delay(10);
}


@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France C2Vues-BricoTrain
2000 posts et +
2000 posts et +
Messages : 9744
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 74
Pays :
France
France
sept. 2026 09 11:16

Re: Montages ESP32 S3 WROOM

Message par France C2Vues-BricoTrain

:bienv: Clément :bienv:

:PetitPoucejpg: SUPER ! :PetitPoucejpg:
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil, tu seras,
Dans le côté sombre, tu l'auras !

Yoda
Maître Jedi dans Star Wars
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17160
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
sept. 2026 09 11:41

Re: Montages ESP32 S3 WROOM

Message par France likiki

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 10 22:35

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii: à vous!

Exercice: N°12

Contrôler luminosité avec une photorésistance

1 résistance 220 Ohm
1 résistance 1 ko
ex 12.jpg
Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : NightLamp
      Description : Controlling the brightness of LED by photoresistor.
      Auther      : www.freenove.com
      Modification: 2024/06/18
    **********************************************************************/
    #define PIN_ANALOG_IN  1
    #define PIN_LED        14
    #define CHAN            0
    #define LIGHT_MIN      372
    #define LIGHT_MAX      2048
    void setup() {
      ledcAttachChannel(PIN_LED, 1000, 12, CHAN);
    }

    void loop() {
      int adcVal = analogRead(PIN_ANALOG_IN); //read adc
      int pwmVal = map(constrain(adcVal, LIGHT_MIN, LIGHT_MAX), LIGHT_MIN, LIGHT_MAX, 0, 4095);  // adcVal re-map to pwmVal
      ledcWrite(PIN_LED, pwmVal);    // set the pulse width.
      delay(10);
    }
Dans la vidéo on a un peu de mal à distinguer le changement de luminosité.



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17160
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
sept. 2026 11 06:44

Re: Montages ESP32 S3 WROOM

Message par France likiki

:bienv: :bienv: :bienv:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France C2Vues-BricoTrain
2000 posts et +
2000 posts et +
Messages : 9744
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 74
Pays :
France
France
sept. 2026 11 10:13

Re: Montages ESP32 S3 WROOM

Message par France C2Vues-BricoTrain

:bienv: :bienv:

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:

Petite info (qui peut être utile...) :

Quand j'ai filmé avec mon téléphone les essais de luminosité avec changements de couleurs sur une led tricolore, je mettais un morceau de feuille blanche dessus (ou un morceau de calque légèrement opaque qui servait de filtre, genre papier de soie ou de cuisson...), ce qui faisait que mon appareil restituait correctement les variantes progressives de couleurs et non plus parasité par un éclairage permanent "blanc" d'apparence... (mais on ne voyait plus la led)

Ou alors, il faudrait trouver une sorte de cabochon à mettre dessus pour éviter d'avoir ce désagrément visuel dans les vidéos...

(Ce n'est qu'une observation de ma part que je partage avec vous...)
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil, tu seras,
Dans le côté sombre, tu l'auras !

Yoda
Maître Jedi dans Star Wars
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 12 22:30

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii: à vous

Fernando

Idée à retenir :PetitPoucejpg:

Exercice: N°13

Contrôle de la température avec une thermistance

1 résistance de 10 ko
ex13.jpg
Le sketch:

Code : Tout sélectionner

/**********************************************************************
  Filename    : Thermomter
  Description : Making a thermometer by thermistor.
  Auther      : www.freenove.com
  Modification: 2024/06/19
**********************************************************************/
#define PIN_ANALOG_IN   1
void setup() {
  Serial.begin(115200);
}

void loop() {
  int adcValue = analogRead(PIN_ANALOG_IN);                       //read ADC pin
  double voltage = (float)adcValue / 4095.0 * 3.3;                // calculate voltage
  double Rt = 10 * voltage / (3.3 - voltage);                     //calculate resistance value of thermistor
  double tempK = 1 / (1 / (273.15 + 25) + log(Rt / 10) / 3950.0); //calculate temperature (Kelvin)
  double tempC = tempK - 273.15;                                  //calculate temperature (Celsius)
  Serial.printf("ADC value : %d,\tVoltage : %.2fV, \tTemperature : %.2fC\n", adcValue, voltage, tempC);
  delay(1000);
}
Voir les valeurs sur le moniteur série



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17160
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
sept. 2026 13 08:10

Re: Montages ESP32 S3 WROOM

Message par France likiki

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 14 17:40

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii:

Exercice: N°14

Lecture des données de sortie d'un joystick
ex14.jpg
Le sketch:

Code : Tout sélectionner

/**********************************************************************
  Filename    : Joystick
  Description : Read data from joystick.
  Auther      : www.freenove.com
  Modification: 2024/06/19
**********************************************************************/
int xyzPins[] = {14, 13, 12};  //x,y,z pins
void setup() {
  Serial.begin(115200);
  pinMode(xyzPins[2], INPUT_PULLUP);  //z axis is a button.
}

void loop() {
  int xVal = analogRead(xyzPins[0]);
  int yVal = analogRead(xyzPins[1]);
  int zVal = digitalRead(xyzPins[2]);
  Serial.printf("X,Y,Z: %d,\t%d,\t%d\n", xVal, yVal, zVal);
  delay(500);
}

Voir les valeurs sur le moniteur série



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17160
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
sept. 2026 14 19:42

Re: Montages ESP32 S3 WROOM

Message par France likiki

:PetitPoucejpg: :PetitPoucejpg: :PetitPoucejpg:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 15 22:04

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii:

Exercice: N°15

Lumière à effet d'eau courante avec une puce: IC 74HC595

8 résistances 220 Ohms
ex15.jpg
Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : FlowingLight02
      Description : Use 74HC575 to drive the ledbar to display the flowing light.
      Auther      : www.freenove.com
      Modification: 2024/06/19
    **********************************************************************/

    int latchPin = 13;          // Pin connected to ST_CP of 74HC595(Pin12)
    int clockPin = 14;          // Pin connected to SH_CP of 74HC595(Pin11)
    int dataPin = 12;          // Pin connected to DS of 74HC595(Pin14)

    void setup() {
      // set pins to output
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
    }

    void loop() {
      // Define a one-byte variable to use the 8 bits to represent the state of 8 LEDs of LED bar graph.
      // This variable is assigned to 0x01, that is binary 00000001, which indicates only one LED light on.
      byte x = 0x01;    // 0b 0000 0001
      for (int j = 0; j < 8; j++) { // Let led light up from right to left
        writeTo595(LSBFIRST, x);
        x <<= 1; // make the variable move one bit to left once, then the bright LED move one step to the left once.
        delay(50);
      }
      delay(1000);
      x = 0x80;      //0b 1000 0000
      for (int j = 0; j < 8; j++) { // Let led light up from left to right
        writeTo595(LSBFIRST, x);
        x >>= 1;   
        delay(50);
      }
      delay(1000);
    }
    void writeTo595(int order, byte _data ) {
      // Output low level to latchPin
      digitalWrite(latchPin, LOW);
      // Send serial data to 74HC595
      shiftOut(dataPin, clockPin, order, _data);
      // Output high level to latchPin, and 74HC595 will update the data to the parallel output port.
      digitalWrite(latchPin, HIGH);
    }
A partir du prochain exercice je limiterai les câbles Dupont et remplacerai par du rigide. Cela diminuera les faux contacts. Dans la vidéo je suis obligé d'appuyer sur le paquet de fils.



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France likiki
Site Admin
Site Admin
Messages : 17160
Enregistré le : 27 févr. 2021, 16:11
Prénom : Christian
LOCALISATION : Ile de France
Centres d'intérêts : Le train miniature (H0 3R), l'impression 3D
Echelle pratiquée : H0
Âge : 59
Pays :
France
France
sept. 2026 16 07:56

Re: Montages ESP32 S3 WROOM

Message par France likiki

:bienv: :bienv: :bienv:
Si le Goëland se gratte le gland, il fera mauvais temps,
Si il se gratte le cul, il ne fera pas beau non plus.

Proverbe de là bas.

ImageImageImage

:tirechap:

.
Si vous souhaitez faire un don pour le forum , c'est ici.
Avatar du membre
France clbesson
Posteur habitué
Posteur habitué
Messages : 58
Enregistré le : 25 juin 2025, 09:05
Prénom : Clément
LOCALISATION : France
Centres d'intérêts : Modélisme ferroviaire HO
Electronique
programmation arduino
Echelle pratiquée : H0
Âge : 66
Pays :
France
France
sept. 2026 17 10:47

Re: Montages ESP32 S3 WROOM

Message par France clbesson

:PetitPoucejpg: :merciiii: :merciiii:
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 22 21:50

Re: Montages ESP32 S3 WROOM

Message par France Clem68

:merciiii: à vous!

Exercice: N°16

Affichage à 7 segments
ex16.jpg
Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : 1 Digital 7 Segment Display
      Description : Use 74HC595 to drive the digital display
      Auther      : www.freenove.com
      Modification: 2024/06/19
    **********************************************************************/
    int dataPin = 12;          // Pin connected to DS of 74HC595(Pin14)
    int latchPin =13;          // Pin connected to ST_CP of 74HC595(Pin12)
    int clockPin =14;          // Pin connected to SH_CP of 74HC595(Pin11)

    // Define the encoding of characters 0-F for the common-anode 7-Segment Display
    byte num[] = {
      0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,
      0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e
    };

    void setup() {
      // set pins to output
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
    }

    void loop() {
      // display 0-F on digital tube
      for (int i = 0; i < 16; i++) {
        writeData(num[i]);// Send data to 74HC595
        delay(1000);      // delay 1 second
        writeData(0xff);  // Clear the display content
      }
    }

    void writeData(int value) {
      // Make latchPin output low level
      digitalWrite(latchPin, LOW);
      // Send serial data to 74HC595
      shiftOut(dataPin, clockPin, LSBFIRST, value);
      // Make latchPin output high level, then 74HC595 will update the data to parallel output
      digitalWrite(latchPin, HIGH);
    }
Câblage un peu spécial. Trop de problèmes avec les contacts sur la breadboard lorsqu'il y a un câblage fourni. J'ai employé une carte d'essais à souder.



@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
sept. 2026 23 23:34

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Exercice: N°16.2

Affichage 4 chiffres 7 segments
ex16.2.jpg
Le sketch:

Code : Tout sélectionner

/**********************************************************************
  Filename    : 4 Digital 7 Segment Display
  Description : Use 74HC595 to drive the digital display
  Auther      : www.freenove.com
  Modification: 2024/06/19
**********************************************************************/
int latchPin = 39;          // Pin connected to ST_CP of 74HC595(Pin12)
int clockPin = 40;          // Pin connected to SH_CP of 74HC595(Pin11)
int dataPin = 38;          // Pin connected to DS of 74HC595(Pin14)
int comPin[] = {47,35,36,21};// Common pin (anode) of 4 digit 7-segment display

// Define the encoding of characters 0-F of the common-anode 7-Segment Display
byte num[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8,
              0x80, 0x90, 0x88, 0x83, 0xc6, 0xa1, 0x86, 0x8e};
             
void setup() {
  // set pins to output
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  pinMode(dataPin, OUTPUT);
  for (int i = 0; i < 4; i++) {
    pinMode(comPin[i], OUTPUT);
  }
}

void loop() {
  for (int i = 0; i < 4; i++) {
    // Select a single 7-segment display
    selectDigitalDisplay (i);
    // Send data to 74HC595
    writeData(num[i]);
    delay(5);
    // Clear the display content
    writeData(0xff);
  }
}

void selectDigitalDisplay(byte com) {
  // Close all single 7-segment display
  for (int i = 0; i < 4; i++) {
    digitalWrite(comPin[i], LOW);
  }
  // Open the selected single 7-segment display
  digitalWrite(comPin[com], HIGH);
}

void writeData(int value) {
  // Make latchPin output low level
  digitalWrite(latchPin, LOW);
  // Send serial data to 74HC595
  shiftOut(dataPin, clockPin, LSBFIRST, value);  // Make latchPin output high level
// Make latchPin output high level, then 74HC595 will update data to parallel output
  digitalWrite(latchPin, HIGH);
}


@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Amigorl
Posteur d'honneur
Posteur d'honneur
Messages : 1021
Enregistré le : 02 févr. 2025, 20:15
Prénom : Rémy
LOCALISATION : Pau
Centres d'intérêts : Digitalisation matériel ancien, construction d'un réseau HO. Arduino, Dccex-Conmmand-Station, Rocrail, Digitalisation pont tournant Jouef, Decodeur accessoires DIY. 3D PLA et débutant SLA.
Echelle pratiquée : H0
Âge : 64
Pays :
France
France
sept. 2026 23 23:40

Re: Montages ESP32 S3 WROOM

Message par France Amigorl

:bienv: l'astuce du 74hc595 pour piloter un afficheur sans gâcher trop de pins i/o
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5982
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
sept. 2026 24 14:03

Re: Montages ESP32 S3 WROOM

Message par France ramasoft

Oui, c'est un registre à décalage qui permet de piloter 8 sorties numériques en utilisant seulement 3 broches d'un microcontrôleur comme l'Arduino.

Je m'étais pas mal documenté sur ce sujet pour augmenter les E/S d'un Arduino Nano et si sur le papier c'est séduisant, en pratique il y a quelques restrictions.

Le 74HC595 (Registre à décalage)
C'est un convertisseur série vers parallèle. Il permet de piloter 8 sorties numériques.
• Broches utilisées sur l'Arduino : 3 broches (Data, Clock, Latch).
• Sens : Uniquement des sorties. On ne peut pas lire l'état d'un bouton avec.
• Fonctionnement : Les données sont envoyées les unes après les autres (en série) à haute vitesse.
Idéal pour : Allumer des LED genre chenillard, piloter des matrices de LED, des afficheurs 7 segments ou des moteurs où l'on a besoin de vitesse et de nombreuses sorties sans bloquer le bus.

Plus on ajoute de puces, plus le signal d'horloge (Clock) doit voyager et se dégrader (effet de capacité des pistes). De plus, pour mettre à jour l'ensemble des sorties, le microcontrôleur doit envoyer de plus en plus de données, ce qui ralentit la vitesse de rafraîchissement. Sans composants supplémentaires pour amplifier le signal, on s'arrête généralement entre 4 et 8 puces en cascade (soit 32 à 64 sorties).


A côté il existe aussi le PCF8574 qui est un Expandeur d'E/S en I²C
C'est une interface d'extension qui communique via le protocole I²C. Il offre 8 entrées/sorties bidirectionnelles.
• Broches utilisées sur l'Arduino : 2 broches (SDA et SCL du bus I²C).
• Sens : Bidirectionnel (chaque broche peut être configurée comme entrée ou comme sortie).
• Fonctionnement : On adresse le module via une adresse I²C (on peut en mettre plusieurs sur le même bus en changeant l'adresse via des cavaliers). Il est plus lent que le 74HC595.
• Idéal pour : Lire des boutons, gérer un clavier matriciel, connecter un écran LCD 16x2 en I²C, ou piloter des relais où la vitesse maximale n'est pas critique.

https://fr.aliexpress.com/item/1005005996144630.html


Là aussi il y a une limite car le PCF8574 utilisant le bus I²C, chaque périphérique sur ce bus doit avoir une adresse unique, définie physiquement en reliant ses broches d'adresse (A0, A1, A2) à la masse (GND) ou au positif (VCC).
Le PCF8574 classique dispose de 3 broches d'adresse, ce qui donne 2³ = 8 combinaisons possibles. On peut donc connecter 8 puces maximum sur les 2 mêmes fils (SDA/SCL), offrant 64 entrées/sorties.


Une autre limitation des PCF8574 et des 74HC595 concerne le courant maxi en sortie


Le 74HC595 possède de vraies sorties "Push-Pull". Il est capable de fournir du courant (Source, niveau HAUT) ou d'en absorber (Sink, niveau BAS) de manière équivalente.
• Par broche : Chaque broche peut fournir ou absorber jusqu'à ±35 mA au maximum. En pratique, pour garder une tension stable, il est recommandé de ne pas dépasser 6 à 8 mA par broche.
• Par puce (Limite totale) : Le courant total combiné transitant par la puce (via la broche VCC ou GND) ne doit absolument pas dépasser 70 mA.
• ⚠️ La restriction majeure : avec 8 LEDs qui consomment chacune 15 mA (120 mA au total), la puce va griller, même si chaque broche respecte individuellement la limite des 35 mA. Pour allumer beaucoup de composants en même temps, il faut donc utiliser de faibles courants ou passer par des transistors.


Pour le PCF8574: Son architecture interne fait qu'il est excellent pour absorber le courant, mais presque incapable d'en fournir.
• En mode SINK (Niveau BAS / 0V) : Chaque broche peut absorber jusqu'à 25 mA. C'est idéal pour piloter des charges.
• En mode SOURCE (Niveau HAUT / 5V) : Chaque broche ne peut fournir qu'un courant minuscule de 100 à 300 µA (0,3 mA) ! C'est tout juste suffisant pour envoyer un signal logique à un autre composant, mais insuffisant pour allumer une LED.
• Par puce (Limite totale) : Le courant total absorbé par l'ensemble des broches ne doit pas dépasser 80 à 100 mA selon les fabricants.
• ⚠️ La restriction majeure : il faut obligatoirement câbler les composants en logique inversée.
Pour une LED, on va brancher l'anode au +5V et la cathode (via une résistance) sur la broche du PCF8574. La LED s'allumera lorsqu'on écrira un état Bas (0V) sur la broche, donc sans envoyer de courant mais en en recevant.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 01 21:35

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Exercice: N°16.3

Matrice Led
16.3.jpg
Le sketch:

Code : Tout sélectionner

    /**********************************************************************
      Filename    : LED Matrix Display
      Description : Use 2 74HC595 to drive the LED Matrix display
      Auther      : www.freenove.com
      Modification: 2024/06/19
    **********************************************************************/
    int latchPin = 39;          // Pin connected to ST_CP of 74HC595(Pin12)
    int clockPin = 40;          // Pin connected to SH_CP of 74HC595(Pin11)
    int dataPin = 38;          // Pin connected to DS of 74HC595(Pin14)

    // Define the pattern data for a smiling face
    const int smilingFace[] = {                      //"^ⅴ^"
      0x1C, 0x22, 0x51, 0x45, 0x45, 0x51, 0x22, 0x14
    };
    // Define the data of numbers and letters, and save them in flash area
    const int data[] PROGMEM = {
      0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // " "
      0x00, 0x00, 0x21, 0x7F, 0x01, 0x00, 0x00, 0x00, // "1"
      0x00, 0x00, 0x23, 0x45, 0x49, 0x31, 0x00, 0x00, // "2"
      0x00, 0x00, 0x22, 0x49, 0x49, 0x36, 0x00, 0x00, // "3"
      0x00, 0x00, 0x0E, 0x32, 0x7F, 0x02, 0x00, 0x00, // "4"
      0x00, 0x00, 0x79, 0x49, 0x49, 0x46, 0x00, 0x00, // "5"
      0x00, 0x00, 0x3E, 0x49, 0x49, 0x26, 0x00, 0x00, // "6"
      0x00, 0x00, 0x60, 0x47, 0x48, 0x70, 0x00, 0x00, // "7"
      0x00, 0x00, 0x36, 0x49, 0x49, 0x36, 0x00, 0x00, // "8"
      0x00, 0x00, 0x32, 0x49, 0x49, 0x3E, 0x00, 0x00, // "9"
      0x00, 0x00, 0x3E, 0x41, 0x41, 0x3E, 0x00, 0x00, // "0"
      0x00, 0x00, 0x3F, 0x44, 0x44, 0x3F, 0x00, 0x00, // "A"
      0x00, 0x00, 0x7F, 0x49, 0x49, 0x36, 0x00, 0x00, // "B"
      0x00, 0x00, 0x3E, 0x41, 0x41, 0x22, 0x00, 0x00, // "C"
      0x00, 0x00, 0x7F, 0x41, 0x41, 0x3E, 0x00, 0x00, // "D"
      0x00, 0x00, 0x7F, 0x49, 0x49, 0x41, 0x00, 0x00, // "E"
      0x00, 0x00, 0x7F, 0x48, 0x48, 0x40, 0x00, 0x00  // "F"
    };

    void setup() {
      // set pins to output
      pinMode(latchPin, OUTPUT);
      pinMode(clockPin, OUTPUT);
      pinMode(dataPin, OUTPUT);
    }

    void loop() {
      // Define a one-byte variable (8 bits) which is used to represent the selected state of 8 column.
      int cols;
      // Display the static smiling pattern
      for (int i = 0; i < 8; i++) { // afficher les données de 8 colonnes en parcourant
    matrixRowsVal(smilingFace[i]);// afficher les données de cette colonne
    matrixColsVal(~cols);
    delay(1);
      }
      // Display the dynamic patterns of numbers and letters
      for (int i = 0; i < 128; i++) {
        for (int k = 0; k < 10; k++) {      // repeat image of each frame 10 times.
          cols = 0x01;      // Assign binary 00000001. Means the first column is selected.
          for (int j = i; j < 8 + i; j++) { // display image of each frame
            matrixRowsVal(pgm_read_word_near(data + j));// display the data in this column
            matrixColsVal(~cols);            // select this column
            delay(1);                      // display them for a period of time
            matrixRowsVal(0x00);            // close the data of this column
            cols <<= 1;                // shift"cols" 1 bit left to select the next column
          }
        }
      }
    }

    void matrixRowsVal(int value) {
      // make latchPin output low level
      digitalWrite(latchPin, LOW);
      // Send serial data to 74HC595
      shiftOut(dataPin, clockPin, LSBFIRST, value);
      // make latchPin output high level, then 74HC595 will update the data to parallel output
      digitalWrite(latchPin, HIGH);
    }

    void matrixColsVal(int value) {
      // make latchPin output low level
      digitalWrite(latchPin, LOW);
      // Send serial data to 74HC595
      shiftOut(dataPin, clockPin, MSBFIRST, value);
      // make latchPin output high level, then 74HC595 will update the data to parallel output
      digitalWrite(latchPin, HIGH);
    }



Cela a été une galère pour arriver à un semblant de résultat positif. J'ai refait le câblage plusieurs fois et toujours des mauvais contacts ici et là. J'ai gardé le meilleur mais pas 100% top. Le breadboard est de très mauvaise qualité. J'ai contacté Freenove et la réponse a été qu'ils étaient conscient du soucis et en s'excusant me propose de renvoyer un breadboard gratuitement. Si c'est pour recevoir une pièce non fiable, ils peuvent se la garder.
En parcourant la totalité des exercices, celui publié ici est le seul avec autant de contacts.

@+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5982
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
oct. 2026 01 23:06

Re: Montages ESP32 S3 WROOM

Message par France ramasoft

Salut Clément,
Pour tes montages d'essai, il vaudrait mieux faire un câblage avec du fil rigide posé sur la breadboard plutôt que ces fils Dupont à la noix qui sont juste bons pour la poubelle. Ils ont une pointe trop fine et ne font que des faux contacts. En plus on arrive vite à une forêt de fils et le montage est illisible.
Pour une vidéo qui est programmée pour samedi matin (Comment augmenter le nombre d'E/S sur un microcontrôleur) j'ai fait un montage sur breadboard pour une des démonstrations car le composant n'existait pas dans Tinkercad.
Et pour le câblage j'utilise des fils rigides posés à plat, qui respectent le code de couleur qu'on a fixé dans le schéma.
Ça donne un montage lisible, sans risque d'erreur de branchement et sans faux contact même sur une breadboard chinoise à 1€ comme les miennes...


Le schéma:
Schéma 4051.jpg

Le montage d'essai:

IMG_20261001_225424.jpg

Les fils Dupont et Durand, c'est juste bon pour connecter deux LED et trois résistances, et encore ...
Dès que le montage se complexifie un peu c'est vite "le bordel".
J'utilise du fil de cuivre monobrin qui provient des anciens câbles de téléphone à 8 fils. C'est impeccable pour cet usage. Et ça te fera gagner du temps avec un montage clair et sans faux contacts.

Et si tu envisage un montage en vrai à poser sur le réseau par la suite, il vaut mieux tout de suite partir sur un shield fait avec deux connecteurs plats soudés sur une plaque de circuit à bande type Veroboard. Un sticker imprimé indique les couleurs de fils à mettre et il est impossible de se tromper
Tout y est soudé, même pour les essais. Et le shield ressert pour le montage final. (voir les sujets sur les écrans de gare et les écrans publicitaires avec des ESP32 et les vidéos sur YT)
Ce n'est absolument pas une perte de temps, bien au contraire.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 01 23:31

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Salut Patrick

En effet c'est une bonne solution et on a moins de spaghetti qui vont dans tous les sens. Le seul hic, je n'ai pas de câbles rigides.

J'ai trouvé ça sur Amazon, est-ce que c'est fiable, sinon si tu as des références...

Ici

@+
Avatar du membre
France ramasoft
Chef es bogies
Chef es bogies
Messages : 5982
Enregistré le : 29 juil. 2024, 19:06
Prénom : Patrick
LOCALISATION : Indre - Levroux
Centres d'intérêts : Modélisme ferroviaire
Programmation C++, VB6 et assembleur
Électronique
Echelle pratiquée : H0
Âge : 68
Pays :
France
France
oct. 2026 01 23:39

Re: Montages ESP32 S3 WROOM

Message par France ramasoft

Ça a l'air pas mal mais je ne connais pas.
Il y a plusieurs longueurs, ce qui est bien. Pas beaucoup de couleurs par contre et pas de fils noirs (mais il n'y en a pas non plus dans les câbles de téléphone)
En tout cas ça ne peut qu'être mieux que les Dupont à la noix.
Avec les fils de téléphone, ça marche impeccable et ça ne coute rien :cooooool:
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 01 23:46

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Avec les fils de téléphone, ça marche impeccable et ça ne coute rien
Je regarderai dans mon bazar demain si j'en ai.

:merciiii: pour les conseils

@+
Avatar du membre
France C2Vues-BricoTrain
2000 posts et +
2000 posts et +
Messages : 9744
Enregistré le : 08 mars 2024, 11:45
Prénom : Fernando
LOCALISATION : Clamart
Centres d'intérêts : Modélisme Ferroviaire - Échelles N et HO
Images IA
Echelle pratiquée : N
Âge : 74
Pays :
France
France
oct. 2026 02 10:37

Re: Montages ESP32 S3 WROOM

Message par France C2Vues-BricoTrain

Clem68 a écrit : 01 oct. 2026, 23:31 Salut Patrick

En effet c'est une bonne solution et on a moins de spaghetti qui vont dans tous les sens. Le seul hic, je n'ai pas de câbles rigides.

J'ai trouvé ça sur Amazon, est-ce que c'est fiable, sinon si tu as des références...

Ici

@+
Bonjour Clément,
Au premier abord, ces "jumper" me paraissaient très bien, mais en lisant certains avis il s'avèrerait qu'ils ne sont pas assez rigides, et deviennent cassant à la longue ! (Surtout si on les manipule souvent en les enfichant, ça c'est plus embêtant !)

À voir...
Pour me retrouver sur ma chaîne :
https://youtube.com/@c2vues-bricotrain? ... VpM6qhmP2u

Quand trop gentil, tu seras,
Dans le côté sombre, tu l'auras !

Yoda
Maître Jedi dans Star Wars
Avatar du membre
France Clem68
Posteur insomniac
Posteur insomniac
Messages : 373
Enregistré le : 20 juil. 2025, 11:42
Prénom : Clément
LOCALISATION : Doubs
Centres d'intérêts : Modélisme RC
Echelle pratiquée : Aucune
Âge : 78
Pays :
France
France
oct. 2026 03 11:45

Re: Montages ESP32 S3 WROOM

Message par France Clem68

Bonjour Fernando

Je pense qu’il ne faut pas s’amuser a les tordre dans tous les sens. Les longueurs de ces câbles sont calculés en fonction de l’espace des trous sur la breadboard. C’est pour ça qu’ils sont en quantité dans les boîtes, je pense.
Vu que je n’ai pas de câble téléphonique ( suggéré par Patrick ) je commanderai une boîte de ces shunts.
En attendant le prochain exercice sera encore en câble Dupont. Il est fait et sera publié Lundi.

@+
Répondre

Retourner vers « Montages divers »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité