Les 3 - Effe dimmen met die LED's

Benodigheden

Arduino
Arduino
LED
LED
Weerstandje
Weerstandje
Gaatjesbord
Gaatjesbord
Draadje-MM
Draadje-MM
Draadje-MF
Draadje-MF

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: $foutzoeken.jpg

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

$select-board.webp

  • 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).

pwm 50% In dit plaatje is de LED net zolang aan als uit. De LED zal dus op halve kracht branden.

pwm 10% In dit plaatje is de LED maar kort aan. De LED zal nauwelijks te zien zijn.

pwm 90% 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.