Stap 4: Hoe LDR werkt
Nu is het eerste ding dat wellicht verdere uitleg het gebruik van het licht afhankelijke weerstanden. Licht afhankelijk weerstanden (of de LDR) zijn weerstanden waarvan de waarde afhankelijk van de hoeveelheid omgevingslicht verandert, maar hoe kunnen we weerstand met Arduino detecteren? Nou je kunt niet echt, echter kunt u detecteren met behulp van de analoge pinnen, die (in basisgebruik) tussen 0-5V meten kunnen spanningsniveaus. Nu kan u vragen "hoe goed we Converteer weerstand waarden in spanning wijzigingen?", het is simpel, dat we maken een voltage divider. Een spanning divider neemt in een spanning en dan uitgangen een fractie van die spanning evenredig aan de ingangsspanning en de verhouding van de twee waarden van weerstanden gebruikt. De vergelijking die is:
Uitgangsspanning Input Voltage = * (R2 / (R1 + R2)) waar R1 is de waarde van de eerste weerstand en R2 is de waarde van de tweede.
Nu dit toch de vraag roept 'maar wat weerstand waarden de LDR heeft?', goede vraag.
De minder hoeveelheid omgevingslicht de hoger de weerstand, meer omgevingslicht betekent een lagere weerstand. Nu voor de bijzondere LDR van die ik gebruikte hun weerstand bereik van 200 – 10 kilo-Ohm was, maar dit voor verschillenden verandert dus zorg ervoor dat op te zoeken waar u hen van kocht en proberen te vinden van een gegevensblad of iets van de soort. In dit geval R1 is nu eigenlijk onze LDR, dus laten we die vergelijking terug te brengen en wat wiskunde-e-magie (wiskundige elektrische magie). Nu moeten we eerst de kilo-ohm-waarden converteren naar Ohm:
200 kilo-Ohm = 200.000 ohm 10 kilo-Ohm = 10.000 ohm
Dus om te vinden wat is de uitgangsspanning wanneer we in toonhoogte zwart die we in de volgende nummers aansluiten:
5 * (10000 / (200000 + 10000))
De ingang is 5V, want dat is wat we krijgen van de Arduino.
Het bovenstaande geeft 0.24V (afgerond). Nu we hoe de uitgangsspanning in piek helderheid weten met behulp van de volgende nummers: 5 * (10000 / (10000 + 10000)) en dit geeft ons 2.5V precies.
Dus dit zijn de spanningswaarden die we gaan krijgen in de analoge pin van de Arduino, maar deze zijn niet de waarden die in het programma zal blijken, "maar waarom?" je kunt je afvragen.
De Arduino gebruikt een analoog naar digitale Chip die de analoge spanning in bruikbare digitale gegevens omzet. In tegenstelling tot de digitale pennen op de Arduino, dat een hoog of laag staat 0 alleen kan lezen en 5V de analoge pinnen kunnen lezen van 0-5V en zet dit in een nummerreeks voor 0-1023.Now met wat meer wiskunde-e-magic.
We kunnen eigenlijk berekenen welke waarden de Arduino zal eigenlijk lezen.
Omdat dit een lineaire functie zullen we de volgende formule kunnen gebruiken: Y = mX + C
Waar; Y = digitale ValueWhere; m = helling, (stijgen / run), (waarde van digitale / analoge waarde) waar; C = Y interceptThe Y-snijpunt is 0 zodat ons geeft: Y = mXm = 1023 / 5 = 204.6Therefore:Digital value = 204,6 * analoge waarde zodat in toonhoogte zwart zullen de digitale waarde: 204,6 * 0,24
Dat geeft ongeveer 49. En in piek helderheid zal: 204,6 * 2.5
Dat geeft ongeveer 511.
Nu met twee van deze instellen op twee analoge pennen kunnen we maken twee integer variabelen voor het opslaan van hun waarden twee en doen vergelijkings-operatoren om te zien welke men de laagste waarde, moet de robot in die richting draaien.