Arduino - Meerdere LED's laten knipperen

Deze handleiding leert u hoe u een Arduino programmeert om meerdere LED's tegelijkertijd te laten knipperen zonder de delay-functie te gebruiken. De tutorial biedt code op twee manieren aan:

We nemen drie LED's als voorbeeld. U kunt dit eenvoudig aanpassen voor twee LED's, vier LED's of nog meer.

Hardware benodigd

1×Arduino Uno R3
1×USB 2.0 kabel type A/B
1×LED Kit
1×LED (red)
1×220 ohm weerstand
1×Breadboard (experimenteerprint)
1×Jumper wires (verbindingsdraden)
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over LED

We hebben een uitgebreide LED tutorial inclusief hardware pinout, werkingsprincipe, Arduino bedrading en code instructies. Leer er meer over hier:

Bedradingsschema

Arduino multiple LED Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Arduino Code - Meerdere LED's laten knipperen

Om meerdere LED's tegelijk te laten knipperen, kunnen we niet vertrouwen op de delay() functie. Dit komt omdat delay() de uitvoering van andere code blokkeert, waardoor het onmogelijk wordt om meerdere LED's tegelijkertijd te laten knipperen. In plaats daarvan gebruiken we de millis() functie om tijdstempels effectief te beheren.

Voor beginners kan het beheren van tijdstempels bij het knipperen van meerdere LED's uitdagend zijn. Gelukkig vereenvoudigt de ezLED library dit proces door intern het beheer van tijdstempels af te handelen. Dit haalt de last van tijdbeheer weg bij gebruikers die de library gebruiken. Daarnaast kan het gebruiken van een array van LED's zorgen voor meer overzicht en bondigheid in de code.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define PIN_LED_1 7 // The Arduino pin connected to LED 1 #define PIN_LED_2 8 // The Arduino pin connected to LED 2 #define PIN_LED_3 9 // The Arduino pin connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object that attach to pin PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object that attach to pin PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object that attach to pin PIN_LED_3 void setup() { Serial.begin(9600); led1.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led2.blink(200, 800); // 200ms ON, 800ms OFF, blink immediately led3.blink(800, 200); // 800ms ON, 200ms OFF, blink immediately } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

Snelle stappen

  • Maak de bedrading zoals zichtbaar in de bovenstaande afbeelding.
  • Verbind de Arduino board met uw pc via een USB-kabel.
  • Open de Arduino IDE op uw pc.
  • Selecteer de juiste Arduino board (bijv. Arduino Uno) en COM-poort.
  • Klik op het Libraries-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek naar “ezLED”, en vind de led-library van ArduinoGetStarted.
  • Klik op de Install knop om de ezLED-library te installeren.
Arduino led library
  • Kopieer de bovenstaande code en plak deze in de Arduino IDE.
  • Compileer en upload de code naar het Arduino board door te klikken op de Upload knop in de Arduino IDE.
Hoe Arduino code te uploaden in Arduino IDE
  • Controleer de status van de LED's.

Arduino Code - Meerdere LED's laten knipperen met gebruik van array

We kunnen de bovenstaande code verbeteren door gebruik te maken van een array van LED's. De volgende code maakt gebruik van deze array om LED-objecten te beheren.

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define NUM_LED 3 // three LEDs #define PIN_LED_1 7 // The Arduino pin connected to LED 1 #define PIN_LED_2 8 // The Arduino pin connected to LED 2 #define PIN_LED_3 9 // The Arduino pin connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object that attach to pin PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object that attach to pin PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object that attach to pin PIN_LED_3 }; void setup() { Serial.begin(9600); ledArray[0].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[1].blink(200, 800); // 200ms ON, 800ms OFF, blink immediately ledArray[2].blink(800, 200); // 800ms ON, 200ms OFF, blink immediately } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }

Door gebruik te maken van de ezLED library kunnen we meerdere LED's flexibel laten knipperen zoals:

  • Meerdere LED's met verschillende frequenties laten knipperen
  • Meerdere LED's met verschillende starttijden laten knipperen
  • Elke LED laten knipperen gedurende een bepaalde periode
  • Elke LED laten knipperen een bepaald aantal keren (cycli)

Zie het voorbeeld in de library.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten en helpt u stap voor stap.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!