Un VU–Metre és una línia que agrupa varis LEDs. Aquest exemple explica com connectar-los entre si i com controlar-los des de la llibreria BasicEducationShield. Pots utilitzar tots els LEDs que vulguis, sempre que l’Arduino tingui prou Pins. En aquest cas, n’utilitzarem 5.
Materials
- 1 placa Arduino U
- 1 Shield Bàsica Educativa
- 5 LEDs
- 5 resistències 220 ohm
- 10 cables
Instruccions
- Connecta cinc LEDs a través del pont central de la breadboard.
- Connecta una resistència de 220 ohms al Pin digital 2.
- Connecta la resistència a la pota llarga del primer LED.
- Connecta cadascun dels Pins digitals, del 3 fins al 6, a un LED corresponent seguint el mateix mètode.
- Connecta la pota curta dels LEDs a un Pin de l’Arduino GND usant cables negres.
La pota curta del LED sempre va a terra (GND) i la pota llarga a un Pin digital a través d’una resistència de 220 ohms. Quan connectem varis LEDs, com que totes les potes curtes han d’estar connectades a terra, tots estan connectats entre si. Per poder controlar cada LED hem de connectar les potes llargues per separat a un Pin digital.
Com que hi ha molts components connectats a la breadboard, revisa’ls amb compte per tal que les dues potes d’un LED o de la resistència no estiguin a la mateixa línia (ja que provocarien un curtcircuit i no funcionaria).
Obre Arxiu -> Exemples -> BasicEducationShield -> Help -> vuMeter
/* VU-Meter */ #include <BasicEducationShield.h> //Declare the VUMeter VUMeter me; int pins[]={2,3,4,5,6}; int pinCount=5; void setup(){ //Configure the VU meter using parameters defined previously. me.config(pinCount,pins); //initialize the component. Must be called. me.begin(); } void loop(){ //Fill 5 LEDs me.fill(5); delay(3000); //turn all the LEDs off me.clear(); delay(1000); //Turn the 3rd LED on me.on(2); delay(1000); //Turn the 3rd LED off me.off(2); delay(1000); //One LED light up at a time, scroll from left to right me.scrollRight(700); //And then scroll back from the 2nd on the right me.scrollLeft(700,1); //the 3rd led will be blinking for 10 times, each time //with 100 milliseconds on and 100 milliseconds off me.blink(2,100,10); //All LEDs will be blinking 10 times me.blinkAll(100,10); //The 2nd to 4th LED will be light up me.fillFrom(1,3); delay(2000); }
Si uses un nombre major o menor de LEDs que a l’exemple, recorda canviar int pinCount = 5
i indicar el número corresponent als LEDs connectats.
Quan has carregat el codi, el primer que ocorre és que tots els LEDs s’encenen durant 3 segons. El programa segueix les següents funcions:
clear()
: Apaga tots els LEDs.on(LEDindex)
: Encén un LED.off(LEDindex)
: Apaga un LED.scrollRight(speed, startIndex)
: Els LEDs es van encenent d’un en un de dreta a esquerra.scrollLeft(speed, startIndex)
: Els LEDs es van encenent d’un en un d’esquerra a dreta.blink(LEDindex,speed, times)
: Un LED parpelleja.blinkAll(speed, times)
: Tots els LEDs parpellegen.fillFrom(startIndex, stopIndex)
: Passa els LEDs de startIndex a stopIndex.fill(numberOfLEDs)
: Passa els LEDs des del primer a numberOfLEDs (número de LEDs).
No funciona?
- Si no s’il·luminen tots els LEDs, comprova que els cables, els LEDs i les resistències estiguin connectats correctament a la placa d’entrenament. Mira la referència de la breadboard si no estàs segur de com funciona. Si connectes els components que suposadament no han d’estar connectats a la mateixa filera a la breadboard, farà un curtcircuit.
- Comprova que has connectat els LEDs als mateixos Pins que has indicat al codi.
- Assegura’t que les potes curtes dels LEDs estan connectades a GND i no al revés.