Bonjour,
je lis les sujets ici et je découvre qu'il y a une belle gamme de résistances variables qui pourraient répondre à mes besoins. Comment choisir ?
J'avais l'oeil sur DS3502
Je vois maintenant qu'il y a AD8400
Voici le projet et mes autres questions.
Objectif: contrôler les couleurs et l'intensité de bandes DEL à l'aide d'une interface web supportée par Rasp Pico W en tant que point d'accès et serveur web.
La partie RaspPicoW et serveur web est déjà fonctionnelle et contrôle l'affichage de 4 MAX72xx via la bibliothèque Parola.
Première question d'ordre électrique: quelle puissance (Watts) peut contrôler une résistance variable AdaFruit ? Je ne trouve aucune donnée en W ni en A sur les fiches techniques. Mes bandes DEL sont assez longues et - de ce fait - assez gourmandes (non, je ne compte certes pas les alimenter via mon PicoW, elles seront alimentées séparément, mais les résistances variables, elles, devront gérer ce courant abondant).
Voici mon code en développement et la source de ma troisième question: pourrais-je simplifier le code ?
J'ai quatres bandes DEL à gérer (Gauche, Droite, Centre Devant)
Pour chacune je veux contrôler:
- le rouge
- le vert
- le bleu
- l'intensité totale (sans changer les ratio RGB)
Pour arriver à cela, j'ai prévu une résistance variable à - la sortie (oui, c'est le - qui est contrôlé ) R
- la sortie (oui, c'est le - qui est contrôlé ) V
- la sortie (oui, c'est le - qui est contrôlé ) B
- au commun (noir) de toutes les couleurs pour l'intensité.
Bref, quatre bandes DEL contrôlées par 16 résistances variables
//Montage pour RaspPicoW
//Contrôle de l'éclairage RVB de l'église Pond Inlet via interface web en AP (comme l'affichage des chants)
//Le module AdaFruit semble très intéressant pour mon projet : https://www.adafruit.com/product/4286
//Gestion de plusiuers ports SDA/SCL sur Rasp Pico: https://github.com/lkoepsel/I2C/blob/main/Arduino/Pico/I2C_Scanner/I2C_Scanner.ino
#include <Wire.h>
#include <Adafruit_DS3502.h>
Adafruit_DS3502 GaucheR = Adafruit_DS3502();
Adafruit_DS3502 GaucheV = Adafruit_DS3502();
Adafruit_DS3502 GaucheB = Adafruit_DS3502();
Adafruit_DS3502 GaucheT = Adafruit_DS3502();
Adafruit_DS3502 CentreR = Adafruit_DS3502();
Adafruit_DS3502 CentreV = Adafruit_DS3502();
Adafruit_DS3502 CentreB = Adafruit_DS3502();
Adafruit_DS3502 CentreT = Adafruit_DS3502();
Adafruit_DS3502 DroiteR = Adafruit_DS3502();
Adafruit_DS3502 DroiteV = Adafruit_DS3502();
Adafruit_DS3502 DroiteB = Adafruit_DS3502();
Adafruit_DS3502 DroiteT = Adafruit_DS3502();
Adafruit_DS3502 DevantR = Adafruit_DS3502();
Adafruit_DS3502 DevantV = Adafruit_DS3502();
Adafruit_DS3502 DevantB = Adafruit_DS3502();
Adafruit_DS3502 DevantT = Adafruit_DS3502();
struct LUM {
int pinSDA;
int pinSCL;
uint8_t adrsR;
int R;
uint8_t adrsV;
int V;
uint8_t adrsB;
int B;
uint8_t adrsT;
int T;
};
struct LUM valGauche;
struct LUM valCentre;
struct LUM valDroite;
struct LUM valDevant;
void setup() {
Serial.begin(115200);
valGauche = { 0, 1,0x80,255,0x81,255,0x82,255,0x83,255};
valCentre = { 2, 3,0x80,255,0x81,255,0x82,255,0x83,255};
valDroite = {16,17,0x80,255,0x81,255,0x82,255,0x83,255};
valDevant = {18,19,0x80,255,0x81,255,0x82,255,0x83,255};
}
void loop() {
ajustonsLUM();
}
void ajustonsLUM () {
Wire.setSDA(valGauche.pinSDA);
Wire.setSCL(valGauche.pinSCL);
Wire.begin();
GaucheR.begin(valGauche.adrsR);
GaucheV.begin(valGauche.adrsV);
GaucheB.begin(valGauche.adrsB);
GaucheT.begin(valGauche.adrsT);
delay(50);
GaucheR.setWiper(valGauche.R);
GaucheV.setWiper(valGauche.V);
GaucheB.setWiper(valGauche.B);
GaucheT.setWiper(valGauche.T);
Wire.end();
Wire.setSDA(valCentre.pinSDA);
Wire.setSCL(valCentre.pinSCL);
Wire.begin();
CentreR.begin(valCentre.adrsR);
CentreV.begin(valCentre.adrsV);
CentreB.begin(valCentre.adrsB);
CentreT.begin(valCentre.adrsT);
delay(50);
CentreR.setWiper(valCentre.R);
CentreV.setWiper(valCentre.V);
CentreB.setWiper(valCentre.B);
CentreT.setWiper(valCentre.T);
Wire.end();
Wire.setSDA(valDroite.pinSDA);
Wire.setSCL(valDroite.pinSCL);
Wire.begin();
DroiteR.begin(valDroite.adrsR);
DroiteV.begin(valDroite.adrsV);
DroiteB.begin(valDroite.adrsB);
DroiteT.begin(valDroite.adrsT);
delay(50);
DroiteR.setWiper(valDroite.R);
DroiteV.setWiper(valDroite.V);
DroiteB.setWiper(valDroite.B);
DroiteT.setWiper(valDroite.T);
Wire.end();
Wire.setSDA(valDevant.pinSDA);
Wire.setSCL(valDevant.pinSCL);
Wire.begin();
DevantR.begin(valDevant.adrsR);
DevantV.begin(valDevant.adrsV);
DevantB.begin(valDevant.adrsB);
DevantT.begin(valDevant.adrsT);
delay(50);
DevantR.setWiper(valDevant.R);
DevantV.setWiper(valDevant.V);
DevantB.setWiper(valDevant.B);
DevantT.setWiper(valDevant.T);
Wire.end();
}
Merci de votre aide.