Używanie LDR z Arduino i przełącznika sterującego do oświetlenia Arduino
W tym samouczku zbadamy, jak używać rezystora zależnego od światła (LDR) z Arduino do sterowania światłem w zależności od poziomu światła otoczenia. LDR zmienia swoją rezystancję w zależności od intensywności światła; w ten sposób może być używany do wykrywania, czy w otoczeniu jest jasno, czy ciemno. Gdy światło spadnie poniżej określonego progu, włączymy pin wyjściowy, aby aktywować światło.

Podstawowe komponenty, których będziesz potrzebować, to płytka Arduino, rezystor 10k omów, LDR i kilka przewodów połączeniowych. LDR będzie podłączony w konfiguracji dzielnika napięcia z rezystorem, aby odczytać analogowe napięcie, które będzie się zmieniać w zależności od intensywności światła. Użyjemy tego napięcia do sterowania diodą LED lub innymi urządzeniami wyjściowymi.
Aby zobaczyć wizualną demonstrację ustawienia i kodu, koniecznie sprawdź powiązany film (w filmie o 0:10).
Wyjaśnienie sprzętu
Rezystor zależny od światła (LDR) to rodzaj rezystora, którego opór maleje wraz ze wzrostem intensywności padającego światła. Jest powszechnie stosowany w aplikacjach, w których należy monitorować poziomy światła. W naszym układzie LDR będzie używany do wykrywania poziomów światła otoczenia i będzie wysyłał odpowiadające napięcie analogowe do Arduino.
Arduino odczyta to napięcie przez jeden ze swoich analogowych pinów i zdecyduje, czy włączyć, czy wyłączyć podłączone światło na podstawie określonego progu. Rezystor 10k omów jest używany w konfiguracji dzielnika napięcia z LDR, aby stworzyć stabilne napięcie wyjściowe, które Arduino może odczytać.
Szczegóły karty katalogowej
| Producent | Ogólny |
|---|---|
| Numer części | LDR |
| Opór (lekki) | 100 - 500 Ω |
| Opór (ciemny) | 10 kΩ - 1 MΩ |
| Napięcie robocze | 3,3 V - 5 V |
| Czas odpowiedzi | 20 ms (typ.) |
| Pakiet | Przelotowy otwór |
- Zapewnij odpowiednie poziomy napięcia; nie przekraczaj 5V.
- Użyj rezystora podciągającego, aby ustabilizować odczyty.
- Wybierz odpowiednią wartość rezystora (10kΩ) dla dzielnika napięcia.
- Rozważ użycie kondensatora do filtrowania szumów, jeśli to konieczne.
- Trzymaj LDR z dala od bezpośrednich źródeł światła podczas testowania.
Instrukcje dotyczące okablowania

Aby skonfigurować obwód, zacznij od podłączenia jednego terminala LDR do zasilania 3,3V na Arduino. Drugi terminal LDR należy podłączyć do jednego końca rezystora 10k omów. Drugi koniec rezystora powinien być podłączony do masy.
Następnie utwórz połączenie między złączem LDR a rezystorem a analogowym pinem wejściowym, takim jakA0To połączenie umożliwi Arduino odczyt napięcia. Upewnij się, że podłączasz masę Arduino do wspólnej masy twojego obwodu, aby zapewnić prawidłowe działanie.
Przykłady kodu i przewodnik
Poniższy fragment kodu inicjalizuje komunikację szeregową i odczytuje wartość analogową z LDR. Wartość ta jest następnie przeliczana na napięcie i wyświetlana w monitorze szeregowym.
int LDRvalue = analogRead(A0); // Read the analog value from LDR
float voltage = LDRvalue * (5.0 / 1023.0); // Convert to voltage
Serial.print("Voltage ="); // Print label
Serial.print(voltage); // Print actual voltage
W tym kodzie zmiennaLDRvalueprzechowuje surowe analogowe odczyty z LDR. Napięcie jest obliczane na podstawie maksymalnej wartości analogowej (1023) i odniesienia napięcia (5V).
Następnie sprawdzamy, czy to napięcie jest poniżej progu (3V w tym przypadku), aby kontrolować pin wyjściowy.
if(voltage < 3 ){
digitalWrite(10, HIGH); // Turn on the light
}else{
digitalWrite(10, LOW); // Turn off the light
}Tutaj, jeśli zmierzone napięcie jest poniżej 3 woltów, ustawiamy pin wyjściowy (10) na HIGH, włączając światło; w przeciwnym razie jest ustawiony na LOW, wyłączając je. Ciągłe sprawdzanie stanu światła umożliwia kontrolę w czasie rzeczywistym w oparciu o poziomy światła otoczenia.
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i przesłaniu swojego kodu powinieneś zauważyć zmiany odczytów napięcia na monitorze szeregowym w miarę zmiany intensywności światła na LDR. Jeśli zakryjesz LDR, napięcie powinno wzrosnąć, a gdy będzie wystawione na światło, powinno spaść. To zachowanie bezpośrednio wpłynie na pin wyjściowy, który kontroluje światło.
Bądź ostrożny wobec powszechnych pułapek, takich jak pływające sygnały wejściowe lub nieprawidłowe poziomy napięcia, które mogą prowadzić do błędnych odczytów (w wideo o 12:30).
Znaczniki czasowe wideo
- 00:00Wprowadzenie do LDR
- 01:30Konfiguracja sprzętu
- 03:45Wyjaśnienie kodu
- 06:00Uruchamianie kodu
- 09:15Porady dotyczące rozwiązywania problemów
//Original source: https://www.arduino.cc/en/Tutorial/ReadAnalogVoltage
// This code is used with a video tutorial for RoboJax.com
// Published on August 31, 2017 from Ajax, ON, Canada.
// Written/Edited by A.B.S
/void setup()
{
Serial.begin(9600); // setup serial
pinMode(10, OUTPUT);
}
void loop(){
int LDRvalue = analogRead(A0);
// Convert the analog reading (which goes from 0 - 1023) to a voltage (0 - 5V):
float voltage = LDRvalue * (5.0 / 1023.0);
// print out the value you read:
Serial.print("Voltage =");// prints the text "Voltage ="
Serial.print(voltage);// prints the actual voltage
// check if voltage is less than 3, then set pin 10 to high or ON
if(voltage < 3 ){
digitalWrite(10, HIGH);
}else{
digitalWrite(10, LOW); // or keep it OFF when voltage is larger than 3
}
Serial.println();
delay(300);
}
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Inne pliki
-
Schemat obwodu LDR 1
LDR_circuit1.PDF0.04 MB -
Schemat obwodu LDR 2
LDR_circuit2.PDF0.04 MB