LDR – TinkerKit

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


  1. Fäst skölden på Arduinons ovansida.
  2. Koppla TinkerKit-LDR:en till analoga TinkerKit-kontakten, A1.
  3. 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.

  • 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.

  • 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.

    • 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”.

    • getState() - kontrollerar om sensorn triggas eller släpps.
      • Retur
        • (boolean) – returns 1 when the sensor is pressed, 0 when it is not pressed.

    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.