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 TinkerKit-LDR
- 1 TinkerKit-kabel
Instruktioner
- Fäst skölden på Arduinons ovansida.
- Koppla TinkerKit-LDR:en till analoga TinkerKit-kontakten, A1.
- 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
Problemlösning
- Var noga med att kopplingen mellan LDR, kabel och Arduinon är korrekt.
- Var säker på att din sensor kopplats till samma analoga pin som du angett i din kod.
- På baksidan av TinkerKit-LDR:en finns en liten LED som lyser upp när knappen är kopplad till ström. Om du är säker på att kopplingen är rätt och LED:n fortfarande inte lyser upp, har LDR:en sannolikt gått sönder.
- Parametrar