Opdracht:
Ontwerp en realiseer een LED-lamp waarbij met drie
drukknoppen de LED in stapjes van kleur verandert: meer groen, meer blauw, meer
rood. Zorg voor een gebruikersvriendelijke bediening.
Analyseer het probleem
Om deze opdracht uit te kunnen voeren hebben we eerst
uitgezocht hoe een RGB nou eigenlijk precies werkt. Hieronder in de afbeelding
is te zien dat de RGB 4 pootjes heeft met verschillende lengtes. Het langste
pootje is de afvoer van de RGB. Deze zorgt ervoor dat de stroom niet in het
ledje blijft zitten. Het eerste pootje (nummer 1) geeft de blauwe kleur van het
ledje, pootje nummer 3 zorgt voor een groene kleur en het laatste pootje geeft
een blauwe kleur.
De kleuren zijn natuurlijk belangrijk voor het instellen
van de arduino.
Ontwerp de hardware
Hieronder is het elektrisch schema van onze opstelling
getekend.
Berekening LED:
U=5V
Imax= 20 mA = 0,02A
R= U/I = 250Ω
Eigenlijk heb je daar de weerstand met rood-groen-bruin voor
nodig, maar wij hebben bij gebrek aan deze weerstanden de weerstanden
rood-rood-bruin van 220 Ω gebruikt.
U = I*R
U = 0,02 * 220 = 4,4V
4,4/5 *255 = 224 à
dat is de maximale analog write.
Realiseer de hardware
Ontwerp de software
Realiseer de software
Arduino Software:
/* Eind opdracht kleur - Arduino Jopke Diepenbroek en
Caro Schuitema
*/
int
redled = 11;
int
greenled = 10;
int
blueled = 9;
int
redswitch = 2;
int
greenswitch = 3;
int
blueswitch = 6;
int
resetswitch = 0;
int
powerred = 0;
int
powergreen = 0;
int
powerblue = 0;
void
setup()
{
pinMode(redled, OUTPUT);
pinMode(greenled, OUTPUT);
pinMode(blueled, OUTPUT);
pinMode(redswitch, INPUT);
pinMode(greenswitch, INPUT);
pinMode(blueswitch, INPUT);
}
void
loop()
{
int bstatered = digitalRead(redswitch);
int bstategreen = digitalRead(greenswitch);
int bstateblue = digitalRead(blueswitch);
if (bstatered == HIGH) {
if(powerred<200)
{
powerred = powerred+10;
}
else powerred = 0;
}
if (bstategreen == HIGH) {
if(powergreen<200)
{
powergreen = powergreen+10;
}
else powergreen = 0;
}
if (bstateblue == HIGH) {
if(powerblue<200)
{
powerblue = powerblue+10;
}
else powerblue = 0;
}
analogWrite(redled, powerred);
analogWrite(greenled, powergreen);
analogWrite(blueled, powerblue);
delay(100);
}
Debuggen:
Eerst hebben een bug gevonden in het opstellen van het
feller worden van het lampje. In plaats van voor het opstellen van een
variabele voor het feller worden hebben we een if en else opgesteld.
Daarna hebben we een fout gemaakt in het laatste gedeelte
van de void loop, we hadden namelijk eerst gekozen voor een digitalWrite, maar
hierbij gingen de ledjes alleen maar aan en werden ze niet feller wanneer je er
vaker op drukte.
Van de test is een filmpje gemaakt dat hieronder te zien is.
Geen opmerkingen:
Een reactie posten