En bref : Les modules 2CH 8A et 4CH 10A partagent une broche ZC pour tous les canaux. Chaque canal a sa propre broche DIM. Un seul appel d'interruption dans le code couvre tous les canaux ; la luminosité se règle indépendamment par descripteur de canal. Utilisez
rbdimmerESP32sur ESP32 double cœur,RBDdimmersur Arduino/ESP8266.
Ce que fournissent les modules multicanaux
| Module | Canaux | Max. par canal | Partagé |
|---|---|---|---|
| 2CH 8A | 2 | 8A / ~1 300W sous 220V | Broche ZC, AC-N |
| 4CH 10A | 4 | 10A / ~1 700W sous 220V | Broche ZC, AC-N |
Chaque canal pilote une charge AC indépendamment. Le détecteur de passage par zéro est partagé — une seule interruption MCU dessert tous les canaux.
Câblage
2CH 8A — affectation des broches
Module → MCU (exemple ESP32)
────────────────────────────────
ZC-OUT → GPIO 4 (interruption, tout GPIO sur ESP32)
DIM1 → GPIO 16 (canal 1)
DIM2 → GPIO 17 (canal 2)
VCC → 3.3V
GND → GNDCôté AC : les deux canaux partagent le neutre (AC-N). Chaque canal dispose de ses propres AC L-IN et AC L-OUT connectés en série avec sa charge.
Full wiring diagrams: Hardware Connection Guide
4CH 10A — affectation des broches
Module → MCU (exemple ESP32)
────────────────────────────────
ZC-OUT → GPIO 4
DIM1 → GPIO 16
DIM2 → GPIO 17
DIM3 → GPIO 18
DIM4 → GPIO 19
VCC → 3.3V
GND → GND⚠️ Une seule broche ZC pour tous les canaux. Connectez ZC-OUT à une seule broche d'interruption du MCU. Dans le code, enregistrez le passage par zéro une fois — il s'applique à tous les canaux du module.
Code : ESP32 (rbdimmerESP32)
Utilisez rbdimmerESP32 sur ESP32 double cœur et ESP32-S3. La
bibliothèque gère automatiquement IRAM_ATTR et l'affectation aux
cœurs — l'ISR s'exécute sur le Core 0 tandis que le WiFi tourne sur
le Core 1, évitant les plantages.
Exemple 2 canaux
// rbdimmerESP32 — 2 canaux indépendants, passage par zéro partagé
// Docs : rbdimmer.com/docs/universal-library-for-esp32
#include "rbdimmerESP32.h"
#define ZC_PIN 4
#define DIM1_PIN 16
#define DIM2_PIN 17
rbdimmer_channel_t ch1, ch2;
void setup() {
rbdimmer_init();
rbdimmer_register_zero_cross(ZC_PIN, RBDIMMER_PHASE_DEFAULT);
rbdimmer_config_t cfg1 = {
.gpio_pin = DIM1_PIN,
.phase = RBDIMMER_PHASE_DEFAULT,
.initial_level = 0,
.curve_type = RBDIMMER_CURVE_RMS
};
rbdimmer_config_t cfg2 = {
.gpio_pin = DIM2_PIN,
.phase = RBDIMMER_PHASE_DEFAULT,
.initial_level = 0,
.curve_type = RBDIMMER_CURVE_RMS
};
rbdimmer_create_channel(&cfg1, &ch1);
rbdimmer_create_channel(&cfg2, &ch2);
// Régler la luminosité de chaque canal indépendamment
rbdimmer_set_level(ch1, 80); // Canal 1 → 80%
rbdimmer_set_level(ch2, 40); // Canal 2 → 40%
}
void loop() {
// Modifier les niveaux à l'exécution selon les besoins
// rbdimmer_set_level(ch1, newLevel);
}Exemple 4 canaux
#include "rbdimmerESP32.h"
#define ZC_PIN 4
const uint8_t DIM_PINS[4] = {16, 17, 18, 19};
rbdimmer_channel_t channels[4];
void setup() {
rbdimmer_init();
rbdimmer_register_zero_cross(ZC_PIN, RBDIMMER_PHASE_DEFAULT);
for (int i = 0; i < 4; i++) {
rbdimmer_config_t cfg = {
.gpio_pin = DIM_PINS[i],
.phase = RBDIMMER_PHASE_DEFAULT,
.initial_level = 0,
.curve_type = RBDIMMER_CURVE_RMS
};
rbdimmer_create_channel(&cfg, &channels[i]);
}
// Exemple : luminosité en escalier
rbdimmer_set_level(channels[0], 100);
rbdimmer_set_level(channels[1], 75);
rbdimmer_set_level(channels[2], 50);
rbdimmer_set_level(channels[3], 25);
}Courbes de variation
| Courbe | Constante | Idéale pour |
|---|---|---|
| Linéaire | RBDIMMER_CURVE_LINEAR |
Éléments chauffants |
| RMS | RBDIMMER_CURVE_RMS |
Ampoules à incandescence |
| Logarithmique | RBDIMMER_CURVE_LOGARITHMIC |
Ampoules LED dimmables |
Code : Arduino / ESP8266 (RBDdimmer)
Utilisez RBDdimmer pour les cartes Arduino à base d'ATmega et
ESP8266.
⚠️ Do not use
RBDdimmeron ESP32 with WiFi active — the ISR lacksIRAM_ATTRand causes crashes. UserbdimmerESP32instead. See: Wrong Library: RBDdimmer vs rbdimmerESP32
Arduino Uno/Nano — 2 canaux
// RBDdimmer — 2 canaux sur Arduino Uno/Nano
// La broche ZC DOIT être la broche 2 ou 3 sur Uno/Nano (INT0/INT1)
#include <RBDdimmer.h>
#define ZC_PIN 2 // Broche d'interruption matérielle
#define DIM1_PIN 5
#define DIM2_PIN 6
// Le premier variateur enregistre la broche de passage par zéro
dimmerLamp dimmer1(DIM1_PIN, ZC_PIN);
// Les variateurs suivants partagent le signal ZC de dimmer1
dimmerLamp dimmer2(DIM2_PIN);
void setup() {
dimmer1.begin(NORMAL_MODE, ON);
dimmer2.begin(NORMAL_MODE, ON);
dimmer1.setPower(80); // Canal 1 → 80%
dimmer2.setPower(40); // Canal 2 → 40%
}
void loop() {
// Aucun appel spécial nécessaire en NORMAL_MODE
}Arduino Mega — options de broche ZC
Sur le Mega, la broche ZC peut être 2, 3, 18, 19, 20 ou 21. Le module 4CH fonctionne de la même manière — déclarez chaque canal après le premier :
dimmerLamp dimmer1(DIM1_PIN, ZC_PIN); // ZC défini ici
dimmerLamp dimmer2(DIM2_PIN);
dimmerLamp dimmer3(DIM3_PIN);
dimmerLamp dimmer4(DIM4_PIN);ESP8266 — multicanal
ESP8266 utilise RBDdimmer avec le même schéma : le premier
dimmerLamp définit la broche ZC ; les suivants la partagent
automatiquement.
// RBDdimmer — 2 canaux sur ESP8266 (NodeMCU)
#include <RBDdimmer.h>
#define ZC_PIN 5 // D1
#define DIM1_PIN 4 // D2
#define DIM2_PIN 14 // D5
dimmerLamp dimmer1(DIM1_PIN, ZC_PIN);
dimmerLamp dimmer2(DIM2_PIN); // partage le ZC de dimmer1
void setup() {
dimmer1.begin(NORMAL_MODE, ON);
dimmer2.begin(NORMAL_MODE, ON);
dimmer1.setPower(80);
dimmer2.setPower(40);
}
void loop() {}Contrôle à l'exécution
Les deux bibliothèques permettent de modifier la luminosité à l'exécution :
// rbdimmerESP32
rbdimmer_set_level(ch1, 60);
// Avec transition progressive (rbdimmerESP32)
// signature : (canal, niveau_cible_pct, durée_ms)
rbdimmer_set_level_transition(ch1, 60, 2000); // → 60% en 2 000 ms
// RBDdimmer
dimmer1.setPower(60);Erreurs fréquentes
| Erreur | Solution |
|---|---|
| Broches ZC séparées par canal | Utiliser une broche ZC, un seul enregistrement |
RBDdimmer sur ESP32+WiFi |
Utiliser rbdimmerESP32 |
| ZC sur broche sans interruption (Uno) | Utiliser broche 2 ou 3 sur Uno/Nano |
| Surcharge d'un canal | Vérifier le calibre du module : 8A ou 10A par canal |
| Broches DIM câblées dans le mauvais ordre | Les charges échangent les canaux ; réaffecter les GPIO |
Articles connexes
- Which dimmer to buy → Complete Buyer's Guide
- Wrong library on ESP32 → RBDdimmer vs rbdimmerESP32
- ESP32 crashes with WiFi → IRAM_ATTR Causes and Fix
- TRIAC overheating → AC Dimmer Runs Hot or Burns Out
Encore des questions ?
Ask on forum.rbdimmer.com or open a GitHub Issue.