Sur ma quatrième leçon de mon kit Elegoo avec la Mega 2560, j'essaye de modifier le programme pour qu'il affiche la couleur désirée suivant les valeurs que je mets dans mon programme.
Le but est donc de voir une lumière jaune avec ma led RGB autrement dit d'avoir le rouge et le vert à 255 pour avoir cette résultante, or malheureusement, suivant mes essais, j'ai soit rouge, soit vert mais pas de jaune .
J'ai testé de modifier des paramètres du programme mais cela ne donne rien au final.
Je n'ose imaginer quand je vais attaquer la leçon 30 et suivantes !
Merci d'avance pour vos suggestions.
Je mets le programme ici , je n'ai pas d'erreur de compilation
//www.elegoo.com
//2016.12.8
// Define Pins
#define BLUE 3
#define GREEN 5
#define RED 6
void setup() {
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
}
// define variables
int redValue;
int greenValue;
int blueValue;
// main loop
void loop() {
redValue = 255; // choose a value between 1 and 255 to change the color.
greenValue = 255;
blueValue = 0;
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
analogWrite(BLUE, blueValue);
}
La boulette doit me crever les yeux mais je ne vois pas
Merci d'avance pour votre aide.
Aucun souci pour le code. J'avais lu les règles mais je n'étais pas aller aussi loin. Je connais la manip, cela devrait le faire désormais pour les suivants.
Pour les branchements, oui, j'ai bien lu et vu que la broche la plus longue est le commun, je vais vérifier mais normalement pas d'inversion à 90 °.
Pour le câblage, normalement oui, je m'explique et cela rejoint la réponse pour Jackson (mais je vais tester son programme bien sur) , pour cette leçon, le programme est beaucoup plus complet et fonctionne bien , c'est avec des boucles qui vont faire une évolution au cours du temps de la couleur observée.
C'est moi qui ai décidé non pas d'avoir une évolution de la couleur au cours du temps mais d'imposer les valeurs pour avoir une lumière donnée donc dans le guide, il est indiqué que le jaune correspond au rouge et vert , j'ai donc mis 255 pour chaque.
Après comme précisé dans ma présentation, je suis totalement néophyte, je découvre la programmation et l'électronique (j'avais bouffé du Turbo Pascal en fac mais cela remonte
Une LED RGB à cathode commune se câble avec une résistance par couleur en effet (pour limiter le courant dans cette LED) mais sa valeur dépend de la couleur, car la chute de tension varie selon la longueur d’onde.
Une LED rouge a en général une chute plus faible que les vertes et bleues, ce qui implique une résistance un peu plus élevée pour obtenir le même courant.
Par exemple, si bleu et vert sont à 220 Ω, le rouge doit être plus élevé pour compenser sa chute de tension plus faible. Essayez avec une valeur autour de 330 Ω pour avoir un courant comparable et garder une luminosité équilibrée entre les trois couleurs.
Salut, j'ai vérifié mon câblage, pas d'erreur pour moi.
Jackson, je viens de tester ton programme qui marche nickel !
Merci pour l'astuce pour les résistances.
OK donc si le rouge, vert bleu fonctionne, Le jaune se fait en allumant rouge et vert en même temps.
#define BLUE 3
#define GREEN 5
#define RED 6
void setup() {
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
}
void loop() {}
PS/ c'est pas très beau des define pour les N° de pins, vaut mieux préférer des constantes et puis si vous parlez français, autant nommer ses variables en français
Le kit propose une 330 ohm, j'ai donc changé la résistance, j'ai refait ensuite ton programme pour voir si j'ai bien rouge, vert , bleu, c'est bon et effectivement les trois ont bien la même luminosité )
Je viens de tester tes deux programmes, et bien je vois du ..... vert ! J'ai même demandé à ma femme pour être sur que ce ne sont pas mes yeux, elle m'a dit du vert......
Je crois que le kit propose une autre LED, je vais tester avec une autre LED RGB pour voir.
Un grand MERCI pour votre aide à tous.
EDIT (5 mn après), changement de LED, même constat
Pour les noms en français, c'est tiré des programmes du kit donc tout est annoté en anglais , seul le guide est en français (encore pas trop mal traduit, le kit Uno est de ce côté là une vraie horreur, c'est pour cela que j'ai choisi le kit Mega 2560).
Curieux de voir justement si le kit officiel vendu ici , sur la boutique, a les programmes en français ou c'est uniquement le livret proposé (ce qui est déjà beaucoup !).
Bon, comme on dit, demain est un autre jour. On testera demain soir si des idées nous viennent.
Merci pour l'accueil très cordial et pour toutes les aides et programmes proposés, c'est super sympa !
Plus sérieusement, la colorimétrie est complexe.
Il y a la théorie et les sources de lumière réelles qui font ce qu'elles peuvent.
Avant te lancer dans une chasse à une "éventuelle" meilleure diode, pourquoi ne ferais-tu pas quelques mesures et tests ?
Tu reprends la fonction analogWrite(pin, coef).
Cela te permettra de varier les proportions de rouge et de vert
Tu fixes le rapport cyclique du rouge à 50/50 soit analogWrite(diode_rouge, 127).
Tu fais un programme qui augmente tranquillement le vert en partant de 0 jusqu'à 255.
Tu peux aussi mettre le vert à 50/50 et faire varier le rouge.
Regarde si tu ne trouves pas un couple de valeur qui donne un jaune "acceptable".
Pour la représentation des couleurs, on utilise un diagramme appelé "Gamut".
Le gamut représente les couleurs que voit l'œil.
Les triangles dans le gamut représentent les couleurs que l'on peut réellement reproduire avec seulement 3 sources de lumière.
Les pointes des triangles représentent les sources R, V, B.
Tu peux voir qu'il y a plusieurs normes parce qu'il existe des sources de lumière différentes.
L'œil est plus sensible au vert.
Si tu reprends le premier programme, tu peux jouer sur la valeur de greenValue pour essayer de faire du jaune. Commence par exemple en divisant par 2 sa valeur.
Après, tu pourras adapter la valeur de la résistance du vert pour corriger cet écart.
Voici le programme pour voir l'évolution des couleurs, bon surement perfectible.
Je comprends mieux, je m'attendais à un jaune canari, c'est un jaune très pâle.
Je vais essayer de voir en indiquant des valeurs en dur
//www.elegoo.com
//2016.12.8
// Define Pins
#define BLUE 3
#define GREEN 5
#define RED 6
void setup() {
pinMode(RED, OUTPUT);
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
}
// define variables
int redValue;
int greenValue;
// main loop
void loop() {
#define delayTime 50 // fading time between colors
redValue = 255; // choose a value between 1 and 255 to change the color.
greenValue = 0;
// this is unnecessary as we've either turned on RED in SETUP
// or in the previous loop ... regardless, this turns RED off
// analogWrite(RED, 0);
// delay(1000);
for (int i = 0; i < 255; i += 1) // fades out red bring green full when i=255
{
redValue -= 1;
greenValue += 1;
// The following was reversed, counting in the wrong directions
// analogWrite(RED, 255 - redValue);
// analogWrite(GREEN, 255 - greenValue);
analogWrite(RED, redValue);
analogWrite(GREEN, greenValue);
delay(delayTime);
}
}
J'ai repris mon premier programme qui marche donc très bien, maintenant je sais à quoi m'attendre.
Celui qui serait le mieux en jaune , c'est redValue = 100, greenValue = 25 mais comme dit, on oublie la couleur canari, jaune pétant !
Si tu mettais Rouge = 255 et vert = 25*(255/100) = 64, tu serais plus jaune plus pétant → a condition que la longueur d'onde ne change pas avec le courant...
Effectivement, je n'y avais pas pensé pour 255 et 64 ! La couleur est beaucoup plus chaude
Pour les calculs correspondants, n'oubliez pas que je découvre totalement donc je dirais I= U/R donc 5/330 = 0.015 A pour le rouge et 5/220 = 0.022 A pour le vert.
Edit ; je viens de voir ton message édité plus haut, effectivement ton approche est plus pertinente que la mienne.
Donc pour le vert sachant que le courant n'est disponible qu'à 64/255 tu as un courant moyen de 22*64/255 = 5,6 mA
Et donc que la diode verte émet une longueur d'onde, mal positionnée sur le Gamut et pas très conforme pour de la restitution de couleur.
Ou que la diode rouge n'est pas très efficiante.
L'important est d'avoir réussi à faire le programme et à comprendre pourquoi le résultat n'était pas celui attendu.