Arduino ljus efter Robot och undvika (4 / 4 steg)
Steg 4: Hur fungerar LDR
Nu är det första som kan behöva ytterligare förklaring användning av ljus beroende motstånden. Lätta beroende motstånd (eller LDR'S) är motstånd vars värde ändras beroende på hur mycket omgivande ljus, men hur kan vi upptäcka motstånd med Arduino? Väl du inte egentligen, men du kan upptäcka spänningsnivåer med analoga stiften, som kan mäta (i grundläggande användning) mellan 0-5V. Nu kanske du frågar "hur vi konverterar Motståndsvärden till spänningsändringar?", det är enkelt, vi gör en spänningsavdelare. En spänningsavdelare tar i en spänning och matar sedan ut en bråkdel av denna spänning proportionell mot inspänningen och förhållandet mellan de två värdena av motstånd används. Ekvationen som är:
Utspänning = ingång spänning * (R2 / (R1 + R2)) där R1 är värdet av första motståndet och R2 är värdet av andra.
Nu detta fortfarande väcker frågan "men vad Motståndsvärden LDR har?", bra fråga.
Den mindre mängden omgivande ljus desto högre motstånd, mer ambient ljus innebär en lägre motstånd. Nu för det särskilda LDR jag använde deras motstånd var från 200 – 10 kilo ohm, men detta ändras för olika sådana så se till att titta upp var du köpt dem från och försöka hitta ett datablad eller något sådant. Nu i detta fall R1 är faktiskt våra LDR, så låt oss ta tillbaka den ekvationen och göra lite matte-e-magi (matematiska elektriska magi). Nu behöver vi först konvertera dessa kilo ohm värden ohm:
200 kilo-ohm = 200 000 ohm 10 kilo-ohm = 10 000 ohm
Så för att hitta vad är den tillverkade spänningen när vi är i pitch black vi koppla in följande nummer:
5 * (10000 / (200000 + 10000))
Underlaget är 5V eftersom det är vad vi får från Arduino.
Ovanstående ger 0.24V (avrundat). Nu ser vi vad utspänningen är i maximala ljusstyrkan med hjälp av följande siffror: 5 * (10000 / (10000 + 10000)) och detta ger oss 2.5V exakt.
Så detta är spänningsvärden som vi kommer att få in den Arduino analoga stift, men dessa är inte de värden som kommer att ses i programmet, "men varför?" kan du fråga.
Arduino använder en Analog till Digital Chip som omvandlar analoga spänningen till användbara digital data. Till skillnad från digitala stiften på Arduino som kan bara läsa en hög eller låg stat är 0 och 5V analoga stiften kan läsa från 0-5V och omvandla detta till en nummerintervall för 0-1023.Now med lite mer matematik-e-magin.
Vi kan faktiskt beräkna vilka värden Arduino faktiskt kommer att läsa.
Eftersom detta kommer att vara en linjär funktion kan vi använda följande formel: Y = mX + C
Där; Y = Digital ValueWhere; m = lutning, (stiga / kör), (digital värde / analog värdet) där; C = Y skärningspunkt med interceptThe Y är 0 så som ger oss: Y = mXm = 1023 / 5 = 204.6Therefore:Digital värde = 204.6 * Analog värde så i pitch black digital värdet kommer att: 204.6 * 0,24
Vilket ger cirka 49. Och i topp ljusstyrka man: 204.6 * 2,5
Vilket ger cirka 511.
Nu med två av dessa som inrättats på två analoga stift kan vi skapa två heltal variabler för att lagra deras värden två och göra jämförelseoperatorer för att se vilket som har det lägsta värdet, vrida roboten i den riktningen.