Étape 1: L’esquisse de RVB
Fondamentalement le code vous permet de contrôler le RGB led de couleur avec une variable au lieu de trois.
La plupart du code est dédié à la suite le graphique que j’ai inclus, il montre de quelle couleur est générée en mélangeant différentes quantités de lumière rouge, verte et bleue.
Programmation des étapes :
1. lire la valeur du potentiomètre
2. valeur du potentiomètre convertir une plage de numéros plus utilisable
3. si les déclarations génèrent les valeurs analogiques rouges, verts et bleus pour chaque couleur à l’aide.
Vous pouvez copier et coller le code ou téléchargez le fichier zip inclus.
int rpin = 6;//can be any PWM pin int bpin = 3;//can be any PWM pin int gpin = 5;//can be any PWM pin int rcolor = 255;// holds the coresponding brightness for each color int gcolor = 255; int bcolor = 255; int start = 100;// used for the option startup code int potv = 0;// Potentiometer voltage int color =0;//mapped pot value void setup(){ pinMode(rpin, OUTPUT); pinMode(gpin, OUTPUT); pinMode(bpin, OUTPUT); // color check leave this commented out unless you want to // have the flashligth cycle through the colors at the beging // //red // analogWrite(rpin, 0); // analogWrite(gpin, 255); // analogWrite(bpin, 255); // delay(start); // //yellow // analogWrite(rpin, 0); // analogWrite(gpin, 0); // analogWrite(bpin, 255); // delay(start); // //green // analogWrite(rpin, 255); // analogWrite(gpin, 0); // analogWrite(bpin, 255); // delay(start); // //cyan // analogWrite(rpin, 255); // analogWrite(gpin, 0); // analogWrite(bpin, 0); // delay(start); // //blue // analogWrite(rpin, 255); // analogWrite(gpin, 255); // analogWrite(bpin, 0); // delay(start); // //magenta // analogWrite(rpin, 0); // analogWrite(gpin, 255); // analogWrite(bpin, 0); } void loop(){ potv = analogRead(A0); //read Potentiometer position color=map(potv,0,1023,0,1530);// change input number range if(color>= 0 && color <=255){ //red to yellow gcolor = map(color,0,255,255,0); analogWrite(rpin, 0); analogWrite(gpin, gcolor); analogWrite(bpin, 255); } if(color>= 255 && color <=510){ //yellow to green rcolor = (color - 255); analogWrite(rpin, rcolor); analogWrite(gpin, 0); analogWrite(bpin, 255); } if(color>= 510 && color <=765){ //green to cyan bcolor = (color - 510); bcolor = map(bcolor,0,255,255,0); analogWrite(rpin, 255); analogWrite(gpin, 0); analogWrite(bpin, bcolor); } if(color>= 765 && color <=1020){ //cyan to blue gcolor = (color - 765); analogWrite(rpin, 255); analogWrite(gpin, gcolor); analogWrite(bpin, 0); } if(color>= 1020 && color <=1275){ //blue to magenta rcolor = (color - 1020); rcolor = map(rcolor,0,255,255,0); analogWrite(rpin, rcolor); analogWrite(gpin, 255); analogWrite(bpin, 0); } if(color>= 1275 && color <=1530){ //magenta to red bcolor = (color - 1275); analogWrite(rpin, 0); analogWrite(gpin, 255); analogWrite(bpin, bcolor); } }