LDR – Hålmonterad

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

  1. Fäst skölden på Arduinons ovansida.
  2. Koppla LDR:en över kopplingsdäckets mittengap.
  3. Koppla LDR:ens ena ben till GND med en svart labbkabel.
  4. Koppla LDR:ens andra ben till en 10k ohms resistor och till A1 med en labbkabel.
  5. Koppla resistorns andra ben till 5V med en röd labbkabel.
  6. 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
      • (intanalogPin: 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
      • (intanalogPin - 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
      • (intbaseValue - Utgångsvärdet som sensoren ger.
      • (intthreshold - Tröskelvärdet som utlöser ett ’tryck’.

    • pressed( timeout ) -  kontrollerar om LDR:n triggas.
      • Parametrar
        • (inttimeout - 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
        • (inttimeout - 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 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.