Eksperymenty z fotorezystorem i Arduino
Fotorezystory to proste, ale niezwykle przydatne elementy elektroniczne, które pozwalają na wykrywanie natężenia światła. W tym wpisie podzielę się moim doświadczeniem w pracy z fotorezystorem podłączonym do Arduino, analizą odczytów ADC oraz sposobami dostosowania układu do naszych potrzeb.
1. Co będzie potrzebne?
Aby przeprowadzić testy z fotorezystorem i Arduino, potrzebujesz:
Fotorezystora (np. 20kΩ – 30kΩ )
Rezystora 10kΩ (lub innych wartości do testów)
Płytki Arduino (np. Arduino Uno)
Przewodów połączeniowych
2. Jak to działa?
Fotorezystor zmienia swoją rezystancję w zależności od ilości światła, które na niego pada. Im więcej światła, tym niższa rezystancja; w ciemności rezystancja wzrasta. Arduino nie może bezpośrednio odczytać rezystancji, dlatego stosujemy dzielnik napięcia.
W naszym układzie:
Fotorezystor – jedna nóżka do 5V, druga do A0 i do rezystora 10kΩ.
Rezystor 10kΩ – jeden koniec do GND, drugi do A0.
Dzięki temu Arduino odczytuje napięcie między fotorezystorem a rezystorem, które zmienia się w zależności od natężenia światła.
3. Schemat podłączenia
Opis schematu podłączenia Arduino, fotorezystora i diody LED
Schemat przedstawia sposób podłączenia fotorezystora i czerwonej diody LED do Arduino Uno. Układ działa w ten sposób, że fotorezystor mierzy natężenie światła, a dioda LED może zostać zaświecona w zależności od jego poziomu.
Fotorezystor pełni funkcję czujnika światła. Jest częścią dzielnika napięcia z rezystorem 10kΩ, dzięki czemu napięcie na pinie A0 zmienia się w zależności od oświetlenia.
Połączenia:
- Jedna nóżka fotorezystora → 5V Arduino
- Druga nóżka fotorezystora → Wejście analogowe A0 oraz do jednego końca rezystora 10kΩ
- Drugi koniec rezystora 10kΩ → GND
- Anoda (+) diody LED → Pin D13 Arduino
- Katoda (-) diody LED → Przez rezystor 220Ω do GND
Oto kod, który wgrany do Arduino pozwala włączać i wyłączać diodę LED za pośrednictwem fotorezystora.
5. Wyjaśnienie kodu:
Definicje zmiennych
ldrPin– Pin analogowy A0 używany do odczytu wartości z fotorezystora.ledPin– Pin cyfrowy D13, do którego podłączona jest dioda LED.threshold– Próg jasności (600 to wartość ADC), poniżej którego dioda się zapala. Można dostosować do warunków.
setup()pinMode(ledPin, OUTPUT);– Określa, że pin D13 będzie sterował diodą LEDSerial.begin(9600);– Umożliwia podgląd wartości odczytów w Monitorze szeregowym Arduino IDE.
loop()analogRead(ldrPin);– Pobiera wartość napięcia na dzielniku napięcia (0-1023).Serial.print("Odczytana wartość: ");– Wyświetla tekst w Monitorze szeregowym.Serial.println(ldrValue);– Wyświetla rzeczywistą wartość ADC.
- Jeśli wartość
ldrValuejest mniejsza niżthreshold(ciemno), włącza diodę LED (digitalWrite(ledPin, HIGH);). - Jeśli
ldrValuejest większa niżthreshold(jasno), dioda zostaje wyłączona (digitalWrite(ledPin, LOW);).
- delay(500) - Zapobiega zbyt częstym odczytom i skokowym zmianom – co 500 ms program ponawia odczyt.
Powyższy kod zawiera histerezę, która wprowadza tzw. "martwą strefę" (dead time), zapobiegając częstemu włączaniu i wyłączaniu diody LED. Dzięki temu, gdy wartości odczytane z fotorezystora balansują wokół progu jasności, unikamy migotania i niestabilnej pracy diody w zakresie przejściowym.
- Jeśli wartość ADC jest mniejsza niż
lowerThreshold(ciemno) i dioda jest wyłączona (ledState == false),
to:- Włącz LED (
digitalWrite(ledPin, HIGH);). - Zmień stan flagi
ledStatenatrue, aby zapamiętać, że dioda jest włączona.
- Włącz LED (
Zapobiega to ponownemu ustawianiu stanu LED w każdej pętli loop().
- Jeśli wartość ADC jest większa niż upperThreshold (jasno) i dioda jest włączona (ledState == true),
- Wyłącz LED (digitalWrite(ledPin, LOW);).
- Zmień stan flagi ledState na false, aby zapamiętać, że dioda jest wyłączona.
- Inteligentny system podlewania roślin
- Słoneczny tracker – panel podążający za słońcem
- Automatyczne oświetlenie nocne
- Inteligentne rolety
- Automatyczna przesłona do kamery
- Światła adaptacyjne w samochodzie RC
- Czujnik obecności światła – ochrona roślin domowych
- Zamek na światło – kod świetlny
- Automatyczna lupa podświetlana
- Kamizelka LED dla rowerzysty, która zwiększa swoją jasność w zależności od warunków oświetleniowych.



Życzę samych sukcesów
OdpowiedzUsuńDziękuję bardzo ;)
Usuń