Stap 1: De RGB-schets
In principe de code kunt u bepalen de RGB led de kleur met één variabele in plaats van drie.
Grootste deel van de code is gewijd aan het volgen van de grafiek die ik opgenomen, toont het welke kleur ontstaat door het mengen van verschillende hoeveelheden rood, groen en blauw licht.
Programmastappen:
1. Lees de potentiometer (potmeter) waarde
2. van de potentiometer waarde omzetten in een meer bruikbaar nummerreeks
3. met behulp van als verklaringen de rode, groene en blauwe analoge waarden gegenereerd voor elke kleur.
U kunt kopiëren en plakken van de code of het opgenomen zip-bestand downloaden.
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); } }