Les 3 - Effe dimmen met die LED's
Benodigheden
- 1 Arduino-UnoMini computertje met pootjes 0 t/m 13 en 3x GND.
- 1 LEDLED lampje. Stroom in: lange pootje. Stroom uit: korte pootje. lampje
- 1 WeerstandjeDit knijpt de stroom af, zodat het LED lampje niet te veel stroom krijgt en stuk gaat.
- 1 GaatjesbordHiermee kun je draadjes en lampjes met elkaar verbinden.
- 2 X draadje-MMDit is een draadje met aan beide kanten een pennetje (Male-Male). of draadje-MFDit is een draadje met een pennetje (Male) en een gaatje (Female).
Deel 1 - Weer een knipperlampje
We beginnen weer met een knipperlampje. Open een nieuwe sketch en neem het volgende programma over.
int pinnetje = 9; // Definieer de LED pin
int tijdje = 100; // Tijd in milliseconden
void setup()
{
pinMode(pinnetje, OUTPUT); // LED pin als 'OUTPUT'
}
void loop()
{
digitalWrite(pinnetje, HIGH); // LED aan
delay(tijdje); // ff wachten
digitalWrite(pinnetje, LOW); // LED uit
delay(tijdje); // ff wachten
}
Upload je programma naar de Arduino en controleer of de LED knippert.
❓ Klik hier als het niet werkt.
Als de LED niet knippert, controleer dan het volgende:
Zijn er fouten in het programma?
- Kijk of je ergens een typefout hebt gemaakt.
- De fouten staan meestal in rood opgelichte regel of vlak er voor.
- Mist er ergens een ; ?
- Heeft elk haakje open { ook weer een haakje sluiten }?
- Let ook op hoofdletters en kleine letters.
Uploaden lukt niet
- Is de Arduino wel aangesloten op de laptop?
- Is de Arduino wel herkend?
Als het programma wel is goedgekeurd:
-
Let op! We hebbn nu pin 9 voor de LED en natuurlijk weer GND?
-
Als de LED nog steeds niet knippert, kijk dan alle verbindingen nog eens na. Kijk eventueel weer bij les 1
-
Als de LED wel brandt met de draadjes in 5V en GND is de bedrading in orde.
Deel 2 - Spelen met LED Frequentie
De frequentie van het knipperen beïnvloedt hoe snel de LED knippert. Door de frequentie te verhogen, kan het menselijk oog op een gegeven moment de afzonderlijke knipperingen niet meer onderscheiden, waardoor de illusie van een constante lichtbron ontstaat.
Experimenteer met de knipperfrequentie door de waarde vann tijdje te veranderen. Verlaag de waarden naar bijvoorbeeld 50ms, 25ms, 10ms. Bij welke frequentie kun je niet meer zien dat het ledje knippert?
Deel 3 - Helderheid Variëren met Delays
Als de LED maar de helft van de tijd aan is, is hij natuurlijk niet zo helder als wanneer hij continu aan is. De lengte van de 'puls' dat hij aan is bepaalt dus de helderheid. Dit heet pulsbreedtemodulatie (PWM).
In dit plaatje is de LED net zolang aan als uit. De LED zal dus op halve kracht branden.
In dit plaatje is de LED maar kort aan. De LED zal nauwelijks te zien zijn.
In dit plaatje is de LED lang aan en maar kort uit. De LED zal dus bijna op volle kracht branden.
Dit doen we met het volgende programma:
int aanTijd = 30; // milliseconden
int uitTijd = 70; // milliseconden
int ledPin = 9; // pinnetje 9
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
digitalWrite(ledPin, HIGH);
delay(aanTijd);
digitalWrite(ledPin, LOW);
delay(uitTijd);
}
Experimenteer met verschillende waarden voor aanTijd en uitTijd om te zien hoe de helderheid van de LED verandert.
Deel 4 - Fade-In en Fade-Out
Het is iets mooier als de lamp rustig van aan naar uit 'vervaagt' (fade).
Probeer dit programma:
int ledPin = 13; // LED
int aan_tijd = 0; // LED aan
int totaal_tijd = 20; // totale aan + uit tijd
int extra_tijd = 1; // verandering aan tijd
void setup()
{
pinMode(ledPin, OUTPUT);
}
void loop()
{
// LED aan
digitalWrite(ledPin, HIGH);
delay(aan_tijd);
// LED uit de rest van de tijd
digitalWrite(ledPin, LOW);
delay(totaal_tijd - aan_tijd);
aan_tijd = aan_tijd + extra_tijd;
// aan tijd te groot?
if (aan_tijd >= totaal_tijd)
{
extra_tijd = -1;
}
// aan tijd te klein?
if (aan_tijd <= 0 )
{
extra_tijd = 1;
}
}
Uitdaging
Probeer te experimenteren met de variabelen.
- Kun je hem sneller laten 'faden'?
- Hoe kun je langzamer 'faden'?
- Hoe krijg je een snelle 'Fade-in' en een langzame 'Fade-out'?