Een beginnersgids voor Arduino (7 / 15 stap)

Stap 7: Rijden meer LEDs


Nou, laten we gewoon eerlijk zijn: een weinig knipperende LED is niet zo indrukwekkend... Dus in deze stap, ik laten hoe je meer LEDs kunt rijden zien zal.

Berekening van de weerstand waarden voor onze LEDs

Voordat u begint, hebben we voor het berekenen van de weerstand in serie met onze LED te gebruiken. De formule die we nodig hebt, is de wet van Ohm: R = Vik

Maar het probleem hier is dat we de spanning en de stroom van de weerstand nog niet weten... Laten we vinden het!

Wij verbinden de weerstand in serie met onze LED, en we weten dat de spanning van de Arduino is uitgang pin is 5v, dus als we de spanning van de LED aan de spanning van de weerstand toevoegen, dit moet gelijk zijn aan 5 v. Daarom: VR + VL = 5 v en VR = 5v - VL.
Omdat ze in de serie, betekent dit ook dat alle elektronen die passeren van de LED, door de weerstand zo goed zal gaan. Aangezien huidige wordt gedefinieerd als de hoeveelheid elektronen per tijdseenheid, weten we dat de stroom door de weerstand gelijk aan de stroom door de LED is. Dus: ikR = IL.

Nu we gebruik van de wet van Ohm maken kunnen te vinden van de weerstand van onze weerstand: R = VR/IR = (5v - VL) / ikL

(afbeelding 1)

Als u van een 3.3V gebruikmaakt Arduino, kunt u gewoon vervangen door de 5v met 3,3 v. Dit is gewoon de voedingsspanning, het kan van alles zijn.

De waarden voor VL en IL kunnen worden gevonden in uw LED's gegevensblad, of u kunt de tabel hieronder.
IkL moet minder dan 20mA, anders zult u uw LED doden. Maar de meeste van tss.
Merk op dat je moet verdelen deze waarde (in milliampère) door 1000, om versterkers, de SI-eenheid voor stroom. Anders, zult u niet uw antwoord in ohm (maar in kilo-Ohm in plaats daarvan).
VL is vooruit spanningsval van de LED's. (LED's die uitstoten van lagere energie licht, met langere golflengten, zoals rood en infrarood een veel lagere spanningsval dan licht met hogere-energie fotonen, zoals blauw of ultraviolet licht hebben.)

KleurVoorwaartse spanning (VL)
Rood1.7V - 2.2v
Oranje2.0V
Geel2.1V
Groen2.2V
Blauw3.2V - 3.8v
Wit3.2V - 3.8v

Dit is slechts een benadering, maar zal het niet houden geldt voor elke LED.

U niet zal waarschijnlijk hebben een weerstand van de exacte waarde die u zojuist hebt berekend, dus naar boven afronden op de volgende waarde in de reeks E-12. Deze serie heeft alleen de waarden 1.0, 1.2, 1.5, 1.8, 2.2, 27, 3.3, 3.9, 4.7, 5.6, 6,8, 8.2 en deze waarden vermenigvuldigd met een macht van tien, zoals 10, 100, 1000, 10.000 enz.
Bijvoorbeeld, was mijn resultaat 65Ω, dus nam ik een weerstand van 68Ω.
Het is beter om een weerstand met een hogere waarde, zodat u uw LED niet doden.

De LED's verbinden met de Arduino

Zoals ik al eerder heb uitgelegd, is een LED eigenlijk een diode, dus het laat de huidige pass in slechts één richting. Als we de LED andersom verbinden, zal niets gebeuren.

Een LED heeft een kathode en een anode: schematische weergave, de richting van de pijl is de conventionele huidige stroomrichting, zodat het wijst naar de negatieve kant: de kathode.
Wanneer u een LED onder de loep neemt, ziet u dat één zijde vlak is, en de andere rond is. Ook een been is korter dan de andere: de vlakke kant, met het kortere been is de kathode, en we zullen deze kant verbinding te maken met de negatieve of grond van de Arduino.

Het maakt niet uit waar je de weerstand, zolang het in serie met de LED, dus u deze of naar de kathode naar de anode aansluiten kunt.

Als we weten dat slechts één LED op op hetzelfde moment zullen, kunnen we een weerstand gebruiken voor alle onze LEDs.

Neem een kijkje op de afbeeldingen 2-3-4, en sluit vervolgens de weerstand aan de grond en een van de horizontale rails van uw breadboard en een LED met het korte been in de zelfde spoorstaaf en de long-leg in 12 pin op de Arduino.

Merk op dat u bij het berekenen van de specifieke weerstand voor uw LED. U kunt gebruik de bovenstaande formule, of gebruik een online tool, of een app (ik gebruik Deze tool en dit app). Als u klikt op het vraagteken naast de velden, de tool zal u wat extra info geven, en de app heeft een drop-down menu voor het selecteren van de kleur.

Bent u in geval van twijfel, of - zoals ik - gewoon te lui om het opzoeken en vinden van de juiste weerstand, kunt u gewoon weerstand tussen 220Ω en 330Ω. Dit alleen geldt als je het gebruikt met een Arduino 5v! 270Ω en 330Ω zijn te gebruiken met een Arduino 3v3, in dat geval, iets tussen 100Ω en 220Ω gebruiken een beetje hoog. Als u een LED met een hogere spanning gebruiken wilt, moet u om het te berekenen.

Wanneer u de LED en een weerstand op de Arduino hebt aangesloten, kunt u de pin 13 in het Knipoogje voorbeeld vervangen door 12. U kunt de snelkoppeling CTRL + F: Voer in het veld 'Zoeken' 13, en voer in het veld 'Vervangen door' 12 en klik op 'Alles vervangen'. Nu het uploaden van de schets aan de Arduino: de LED die u hebt toegevoegd nu moet knipperen.

Nog steeds niet onder de indruk? No? Nou, hebt je gelijk...
Maar nu heb je de basics, kunnen we iets meer spectaculaire...

Meer LEDs

5 extra LEDs, verbinden met pennen 2, 4, 6, 8 & 10 met hun lange been, en hun kortere been verbinden met de dezelfde spoor op het breadboard als de LED op pin 12 en de weerstand.

Nu downloaden het zip-bestand met de andere voorbeelden, uittreksel op en open Blink6-a in de Arduino IDE.
Als u het voorbeeld van Blink herinneren, moet het niet te moeilijk om te voorspellen wat dit programma doet. Uploaden naar je Arduino, en controleren als uw hypothese correct was!

Optimaliseren van de code

Als u een kijkje nemen, ziet u dat sommige stukken van de code slechts 6 keer dezelfde commando's, met slechts een andere pin-nummer zijn... Nou, er is een manier voor oplossen zulks: wij noemen het de for-lus.

Open de Blink6-b-schets van het zip-bestand. Wanneer u naar de Arduino uploaden, ziet u dat het doet precies hetzelfde als Blink6-a, maar het heeft veel minder coderegels.

Dit is alle dank aan de twee for-lussen die worden gebruikt.
Maar voordat ik de for-lus uitleggen kan, eerst heb ik uit te leggen hoe de variabelen werken:

Op de eerste regel, er is een nieuwe uitdrukking ' int delayTime = 200;' Dit is de zogenaamde declaratie van de variabele 'delayTime'. Een variabele is slechts een deel van het geheugen, waar u kunt vrijwel alles wat die je wilt. Een variabele heeft een naam, een gegevenstypeen een waarde: in dit geval het gegevenstype is 'int': een geheel getal, een geheel getal en kan positief of negatief. De naam is 'delayTime', dit is gewoon een willekeurige naam geven u de variabele, letters en cijfers in het en sommige symbolen zoals een onderstrepingsteken kan hebben. Als de naam uit meer dan één woord bestaat, worden hoofdletters gebruikt voor elk nieuw woord, want u kunt geen spaties gebruiken. Het kiezen van de juiste namen voor uw variabelen zal een groot verschil maken in de leesbaarheid van uw code. Met 'int delayTime;', de variabele is goed aangegeven, maar een waarde nog niet is voorzien. Een aanvankelijke waarde toewijzen aan de variabele heet initialiseren. In dit geval initialiseren we de variabele delayTime tot 200. Nu elke keer als we 'delayTime' in onze code gebruiken, zal het worden vervangen door het nummer 200. Als u een variabele lezen zonder eerste initialiseren, het gewoon krijgt u 0, in het beste geval, maar waarschijnlijk gewoon een willekeurige waarde die toevallig op die plaats van het geheugen, eventueel veroorzaakt in het programma.

Je moet ook weten dat een variabele een zogenaamde toepassingsgebied heeft. In dit voorbeeld wordt delayTime verklaard aan de top, dus het is een globale variabele. Dit betekent dat u in staat zijn om deze te openen binnen elke functie, elke lus, in het hele programma. Ook kan een variabele lokale, wat betekent dat u kunt het alleen in de ruimte waarin deze is gedefinieerd. Bijvoorbeeld, als we gaan van de eerste regel tot de setup zouden, zouden we krijgen de fout

'delayTime' werd niet in dit bereik verklaard

Wanneer wij zou proberen om deze te openen in de hoofdlus (delay(delayTime);), want dit een andere scope dan setup is.
Maar lokale variabelen kunnen van pas komen, als je niet veel geheugen te sparen, bijvoorbeeld omdat de lokale zijn 'verwijderd' wanneer u de marge bestaat zij in worden aangegeven.
De meeste van de tijd, zijn de grenzen van een scope gebogen haken.

Maar waarom deze variabele gebruiken? Nou, in plaats van te wijzigen van alle de delay(200); functies, kunnen we enkel de eerste regel veranderen. In dit geval is het niet erg nuttig, maar hebt u echt groot programma, het is echt belangrijk.

Arduino Referentie: variabelen

Arduino Referentie: int

Arduino Referentie: variabele toepassingsgebied

Een ander handig ding over variabelen is dat u ze wijzigen kunt, terwijl de code wordt uitgevoerd. En dit is precies wat er gebeurt in een for-lus. Het eerste deel tussen de haakjes is gewoon de declaratie van een bepaalde variabele 'i' en initialiseren we het naar 2. Het volgende deel is ' ik < = 12', dit betekent dat de for-lus herhalen zal zolang ik is kleiner dan of gelijk aan 12. Het derde en laatste deel ' ik = i + 2' betekent dat elke keer dat de lus wordt herhaald, de waarde van i zal worden verhoogd met 2.

Dit alles betekent dat het eerst van de code binnen de haakjes met een waarde van 2 want ik, sets pin 2 als uitgang uitvoeren zal. Nu heeft bereikt het einde van de code, dus 2 is toegevoegd aan i → ik is nu gelijk aan 4, en de code loopt opnieuw met deze nieuwe waarde voor i: pin 4 is ingesteld als een output. 2 wordt weer toegevoegd, ik nu gelijk is aan 6, de code opnieuw wordt uitgevoerd, 2 is toegevoegd... enzovoort. Totdat ik gelijk is aan 12. Wanneer de lus wordt uitgevoerd voor i = 12, alles is normaal, maar wanneer zij tot het einde van de code nu en 2 wordt weer toegevoegd, ik niet voldoen aan de voorwaarde ' ik ≤ 12' (ik is nu 14). Het programma wordt afgesloten van de for-lus.
Elke pin met een LED gekoppeld is nu ingesteld als uitgang, met slechts twee lijnen van code, in plaats van zes.

Arduino Referentie: for-lus

Sumary:

Het vinden van de juiste weerstand voor uw LED

  1. De voorwaartse spanning in de LED's gegevensblad, of in de bovenstaande tabel opzoeken. Dit is VL
  2. Opzoeken van de voorste stroom in de LED's gegevensblad, of iets tussen 2 en 20mA gebruiken en dit getal converteren naar versterkers. Dit is IL
  3. De spanning van uw aanbod, 5v of 3.3V zoeken de meeste micro-controllers zoals de Arduino. Dit is Vs
  4. Nu deze formule gebruikt voor het vinden van de waarde van weerstand: R = (Vs - VL) / ikL
  5. Ronde deze waarde tot de dichtstbijzijnde weerstand hebt. U kunt altijd een hogere waarde dan de weerstand die u hebt berekend, maar als u een lagere weerstand gebruikt, zal dit drastisch verkorten de levensduur van uw LED. Als de weerstand te hoog is, zullen de LED zeer dim.
  • De ronde kant van de LED, met het lange been, is de anode, en is de positieve kant.
  • De platte kant van de LED, met het kortere been, is de kathode, en de negatieve kant.
  • CTRL + F opent het venster zoeken/zoeken/vervangen in de Arduino IDE
  • int delayTime; Dit is de declaratie van een variabele van het type int van gegevens, genaamd 'delayTime'
  • int delayTime = 200; Dit is de declaratie van een variabele gegevens type int, genaamd 'delayTime' en de initialisatie op een waarde van 200.
  • Globale variabelen zijn overal bereikbaar in het programma, lokale variabelen alleen in het bereik die waar zij zijn aangegeven.
  • voor (int i = 0; ik < 10; ik = i + 1) {} gezet is een for-lus die initialiseert de variabele i tot en met een waarde van 0, voegt 1 tot en met i, telkens als het wordt herhaald, en herhaalt zolang ik < 10 (10 keer).

Extra: Berekening van de Vermogensdissipatie in de weerstand

Als u een 5v voeding, zoals die op de Arduino, zal een normale ¼ watt weerstand volstaan, maar wanneer u een hogere voedingsspanning, of een LED dat trekt meer actuele, de Vermogensdissipatie in de weerstand zal zijn te hoog, en het zal branden uit.

Daarom moeten we om te berekenen wat de Vermogensdissipatie in de weerstand.

(Afbeelding 6)

De formule voor het berekenen van vermogen is P = V∙I. Dus kunnen we alleen de spanning over de weerstand berekenen: de voedingsspanning minus de spanning over de LED: VR = Vs - VL.
En de stroom door de weerstand is hetzelfde als de stroom door de LED: ikR = IL.

Daarom: PR = (Vs - VL) ∙IL

In het voorbeeld is weergegeven in afbeelding 6 wordt de Vermogensdissipatie in de weerstand is zeer laag, dus een weerstand van ¼ watt voldoende zal zijn, maar als de berekende waarde hoger is, u een krachtiger moet (= dikker) weerstand.

Deze waarden zijn echter slechts een theoretische aanname.

Als je echt weten de werkelijke macht de weerstand verdwijnt wilt, hebt u voor het meten van de stroom en de spanning overheen, of in het beste geval beide.

In het geval u zowel de huidige als de spanning (case A) kunt meten, kunt u gewoon gebruik maken van dezelfde formule.

Als je kunt, echter alleen het meten van een van deze waarden, kunt u de wet van Ohm gebruiken ter vervanging van de spanning of de stroom in de formule om de macht. (geval B & C)

Alleen case A u de echte Vermogensdissipatie, in geval B & C geeft, moet u de waarde van de weerstand. De waarde geschreven op de weerstand heeft een zekere tolerantie, dus je enkele afwijking in uw vermogen ook moeten zult.

Gerelateerde Artikelen

Een beginnersgids voor Kolrosing, door een beginner.

Een beginnersgids voor Kolrosing, door een beginner.

* Dit is mijn inzending voor de wedstrijd "Houtbewerking". Als je van wat ik hier heb gedaan gelieve te stemmen! Bedankt! *Dus je zo ongeveer klaar met uw houtbewerkingsproject bent, hebt misschien je gemaakt enkele lepels, een mooie doos, een m
Visie: Een fakkel voor de personen met gezichtsstoornissen

Visie: Een fakkel voor de personen met gezichtsstoornissen

Visie is een apparaat van de fakkel gevormd om te helpen blinden navigeren met meer comfort, snelheid en vertrouwen, terwijl maken gebruik van ultrasone golven te detecteren in de buurt van hindernissen en hoogte te stellen van de gebruiker door midd
Digitale multimeter shield voor Arduino

Digitale multimeter shield voor Arduino

Dit instructable beschrijft een schild, die "Arduino" board in een digitale multimeter (DMM converteert).Het schild kan worden ingevoegd in "Arduino" UNO und Duemilanove planken. Het kan werken in drie modi:standalone - de meting gegev
How to Build een schild voor de Linkit One

How to Build een schild voor de Linkit One

Hallo mensen! Pure koolstof hier met een ander Instructable. Vandaag zal ik u tonen hoe te bouwen van een aangepaste schild voor het Linkit één Board. Voordat we in dat krijgen maar moet ik u vertellen waarom ik ging op dit streven in de eerste plaat
Een Absolute beginnersgids voor de Intel Edison

Een Absolute beginnersgids voor de Intel Edison

Hey daar! Onlangs ontving ik een Intel Edison board van Instructables, als een aardige gift. Als je afvraagt wat dat is, is de Intel Edison een kleine computer de grootte van een SD-kaart (dat is serieus klein), voor elektronica en computer hobbyiste
ArduDroid: Een eenvoudige 2-weg Bluetooth gebaseerde Androïde Controller voor Arduino

ArduDroid: Een eenvoudige 2-weg Bluetooth gebaseerde Androïde Controller voor Arduino

UPDATES:19 nov. 2031: advies: de fantastische synergie tussen Arduino & Android.30 oktober 2013: Andruino is nu officieel ARDUDROID en zal binnenkort beschikbaar op Google Play. Deze naamswijziging te vermijden conflict met een andere app op Google P
Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

Het maken van een androïde toepassing voor Arduino (LED Turn on/off)

hier hebben we een androïde toepassing die gebruikmaakt van ecllipsedeze toepassing inschakelen leidde op arduino.deze toepassing werkt ook in je LAN.Hardware vereist:1: arduino uno2: arduino ethernet Shield3: RJ45-kabel4: LED5. android telefoonDe so
SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

SensoDuino: Zet uw Androïde telefoon in een draadloze sensoren Hub voor Arduino

UPDATES23 november 2013: SensoDuino 0.160 krijgt een links.19 nov. 2031: advies: de fantastische synergie tussen Arduino & Android.19 november 2013: SensoDuino 0.159 is uit. Android telefoon datum (y, m, d) en tijd (h, m, s) worden ondersteund als se
Gemakkelijk, omkeerbare Motor controle voor Arduino (of een Microcontroller)

Gemakkelijk, omkeerbare Motor controle voor Arduino (of een Microcontroller)

dit project maakt gebruik van slechts drie hoofdcomponenten voor voorwaartse en omgekeerde bepalen voor een interne motor.  U kunt het gemakkelijk interface naar een Arduino of elke andere microcontroller.Het is zo eenvoudig - u kunt het draad van "f
AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

AVRSH: Een tolk opdrachtshell voor Arduino/AVR.

Ooit wilde worden "aangemeld" bij uw AVR microcontroller? Ooit gedacht dat het zou gaaf zijn aan de "kat" een register om te zien van de inhoud ervan? Hebt u altijd al wilde een manier om de nodige energie en individuele perifere sub-s
Een Complete gids voor Onboard Jumpers op de Intel Edison kit voor Arduino

Een Complete gids voor Onboard Jumpers op de Intel Edison kit voor Arduino

De Intel® Edison kit voor Arduino kunt de Intel® Edison verenigbaar met Arduino shields ontworpen voor de UNO R3. De Arduino Expansion Board omvat verschillende jumper headers configureren van de Raad van bestuur met verschillende instellingen zoals
Een kleine Tea Timer (TTT) machine voor Arduino en ATtiny

Een kleine Tea Timer (TTT) machine voor Arduino en ATtiny

De TinyTeaTimmer (TTT) is een implementatie voor een kleine accessoire die gemakkelijk kan worden gemonteerd en geprogrammeerd d.m.v. een schakelaar, een knop, 1 of 2 LED's, een kleine servomotor en een Arduino board of een ATTiny-processor.De schets
Een gids voor het beheren van dingen met wisselende inbreng (via arduino)

Een gids voor het beheren van dingen met wisselende inbreng (via arduino)

het hart van dit project is een) aansluiten van een sensor op de analoge ingang van de arduino en b) programmeren met de if... else-statement.dit specifieke project toont een computer koelsysteem te handhaven bepaalde temperatuur binnen een computer
Een gids voor Raspberry Pi Arduino mededeling in Embedded systemen

Een gids voor Raspberry Pi Arduino mededeling in Embedded systemen

Dit is een gids voor verschillende methoden voor communicatie tussen de Raspberry Pi en Arduino. Deze handleiding is gemaakt van alles wat die ik heb geleerd van de oprichting van een forest capaciteiten. De post van het project kan worden gezien, ee