En LDR (Fotomotstånd) är en analog sensor som läser av ljusintensitet. Kopplad till en analog pin på Arduinon varierar dess avlästa värde i teorin från 0 till 1023 beroende på mängden ljus som lyser på den. I praktiken kommer värdet aldrig gå ner till 0 eller upp till 1023 och spannet bestäms av ljusförhållandena på platsen.
Material
- 1 Arduino Uno
- 1 Education-sköld
- 1 LDR
- 1 10k ohms resistor
- 3 labbkablar
Instruktioner
- Fäst skölden på Arduinons ovansida.
- Koppla LDR:en över kopplingsdäckets mittengap.
- Koppla LDR:ens ena ben till GND med en svart labbkabel.
- Koppla LDR:ens andra ben till en 10k ohms resistor och till A1 med en labbkabel.
- Koppla resistorns andra ben till 5V med en röd labbkabel.
- Koppla Arduinon till datorn och ladda upp exemplet ’LDRTest’.
Läs värdena
Kod
Hitta koden i Example>EducationShield>Help>LDRTest
Du bör nu täcka LDR:en med din hand och se hur värdena ändras i seriemonitorn. När LDR:en täcks bör du se ett värde närmare 0, när den exponeras för ljus bör värden stiga till närmare 1000. Dessa värden beror på ljusförhållandena på din plats.
Kommandon
LDR( analogPin )
- skapar ett LDR-objekt.- Parametrar
-
(
int
)analogPin
: Den analoga pinen till vilken LDR:en är kopplad.
-
- Parametrar
test()
- skriver ut sensorns värden till seriemonitorn.
Switch
Eftersom avläsningen av LDR:en påverkas mycket av miljön behöver den kalibreras innan den används. Om LDR:en ska användas som en knapp, eller använda funktionen getState()
, behöver du först få fram två värden från den. LDR:ens baseValue, när ingenting täcker eller lyser på den, och tröskelvärdet. Så här gör du för att få fram tröskelvärdet: Först behöver du bestämma dig för vad det är som ska trigga sensorn, antingen att LDR:en täcks av ett objekt eller att den blir exponerad för ljus. Värdet som läsningen från LDR:en ger vid den önskade situationen kan vi kalla för toppvärdet. Tröskelvärdet är ett värde som väljs av dig, mellan baseValue och toppvärdet. Ju närmre baseValue, desto känsligare är din LDR-switch, men samtidigt blir det större risk för “falska tryck”.
Kod
Hitta koden i Example>EducationShield>Help>LDR.
Du bör nu öppna seriemonitorn och följa de utskrivna instruktionerna genom att täcka LDR:en. Varje gång en instruktion utförs bör seriemonitorn skriva ut ’1’.
Kommandon
LDR( analogPin )
- skapar ett LDR-objekt.- Parametrar
-
(
int
)analogPin
- den analoga pinen till vilken LDR:en är kopplad.
-
- Parametrar
config(baseValue, threshold )
- Konfigurerar bas- och tröskelvärdet när LDR:en ska användas som en switch.- Parametrar
- (
int
)baseValue
- Utgångsvärdet som sensoren ger. -
(
int
)threshold
- Tröskelvärdet som utlöser ett ’tryck’.
- (
pressed( timeout )
- kontrollerar om LDR:n triggas.- Parametrar
- (
int
)timeout
- millisekunder inom vilka sensoren måste triggas. Standardvärdet är 0.
- (
- Retur
-
(
boolean
) returnerar 1 om sensorn triggas i tid, annars 0. Om timeout inte används pausar programmet här, tills sensorn triggats.
-
- Parametrar
released( timeout)
- kontrollerar om sensoren “släppts”.- Parametrar
- (
int
)timeout
- millisekunder inom vilka sensorn behöver “släppas”. Standardvärdet är 0.
- (
- Retur
-
(
boolean
) - returnerar 1 om sensorn “släppts” i tid, annars 0. Om timeout inte används pausar programmet här, tills sensorn “släppts”.
-
- Parametrar
getState()
- kontrollerar om sensorn triggas eller släpps.- Retur
- (
boolean
) – returns 1 when the sensor is pressed, 0 when it is not pressed.
- (
- Retur
- Parametrar
Problemlösning
- Var noga med att kopplingarna mellan LDR, kablar och Arduinon är korrekta.
- Var säker på att din sensor kopplats till samma analoga pin som du angett i din kod.