Search Code

Arduino와 제어 스위치를 사용하여 LDR로 Arduino를 조명하기

Arduino와 제어 스위치를 사용하여 LDR로 Arduino를 조명하기

이 튜토리얼에서는 아두이노와 함께 빛 의존 저항기(LDR)를 사용하여 주변 조명 수준에 따라 조명을 제어하는 방법을 살펴보겠습니다. LDR은 빛의 강도에 따라 저항이 변하므로 환경이 밝은지 어두운지를 감지하는 데 사용할 수 있습니다. 빛이 특정 임계값 이하일 때, 우리는 출력 핀을 켜서 조명을 활성화할 것입니다.

LDR Illustration and symbol

필요한 주요 구성 요소로는 아두이노 보드, 10k 옴 저항, LDR, 그리고 점퍼 와이어가 포함됩니다. LDR은 저항과 함께 전압 분배기 구성으로 연결되어 아날로그 전압을 읽게 되며, 이는 빛의 강도에 따라 변합니다. 우리는 이 전압을 사용하여 LED 또는 기타 출력 장치를 제어할 것입니다.

설정 및 코드의 시각적 시연을 위해 관련 비디오(비디오 0:10)를 꼭 확인하세요.

하드웨어 설명

광 의존 저항기(LDR)는 입사하는 빛의 세기가 증가함에 따라 저항이 감소하는 저항기의 일종입니다. 이는 빛의 수준을 모니터링해야 하는 응용 프로그램에서 일반적으로 사용됩니다. 우리의 설정에서 LDR은 주변 빛의 수준을 감지하는 데 사용되며, 이에 따라 아두이노에 아날로그 전압을 전송합니다.

아두이노는 아날로그 핀 중 하나를 통해 이 전압을 읽고 정의된 임계값에 따라 연결된 조명을 켜거나 끌지 결정합니다. 10k 옴 저항기는 LDR과 함께 전압 분배기 구성에서 사용되어 아두이노가 읽을 수 있는 안정적인 전압 출력을 생성합니다.

데이터시트 세부정보

제조업체일반적인
부품 번호LDR
저항 (빛)100 - 500 Ω
저항 (어두운)10 kΩ - 1 MΩ
작동 전압3.3 V - 5 V
응답 시간20 ms (전형적)
패키지관통 홀

  • 적절한 전압 수준을 유지하십시오; 5V를 초과하지 마십시오.
  • 풀다운 저항을 사용하여 측정값을 안정화하세요.
  • 전압 분배기를 위해 적절한 저항 값(10kΩ)을 선택하세요.
  • 필요하다면 노이즈 필터링을 위해 커패시터를 사용하는 것을 고려하세요.
  • 테스트할 때 LDR을 직접적인 광원에서 멀리 두세요.

배선 지침

Wiring LDR with Arduino
Wiring LDR with Arduino

회로를 설정하려면, 먼저 LDR의 한 단자를 Arduino의 3.3V 전원 공급 장치에 연결합니다. LDR의 다른 단자는 10k 옴 저항의 한 쪽 끝에 연결됩니다. 저항의 다른 쪽 끝은 접지에 연결해야 합니다.

다음으로, LDR와 저항의 접합부를 아날로그 입력 핀에 연결합니다.A0이 연결은 아두이노가 전압을 읽을 수 있게 해줍니다. 아두이노의 접지를 회로의 공통 접지에 연결하여 올바른 기능을 보장하는 것을 잊지 마세요.

코드 예제 및 안내

다음 코드 조각은 직렬 통신을 초기화하고 LDR에서 아날로그 값을 읽습니다. 그런 다음 이 값은 전압으로 변환되어 직렬 모니터에 출력됩니다.

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

이 코드에서 변수LDRvalueLDR에서 원시 아날로그 판독값을 저장합니다. 전압은 최대 아날로그 값(1023)과 전압 기준(5V)을 기반으로 계산됩니다.

다음으로, 이 전압이 임계값(이 경우 3V) 이하인지 확인하여 출력 핀을 제어합니다.

if(voltage < 3 ){ 
  digitalWrite(10, HIGH); // Turn on the light
}else{
  digitalWrite(10, LOW); // Turn off the light
}

여기서 측정된 전압이 3볼트 이하인 경우, 출력 핀(10)을 HIGH로 설정하여 불을 켭니다. 그렇지 않으면 LOW로 설정하여 불을 끕니다. 조명 상태를 지속적으로 확인함으로써 주변 조명 수준에 따라 실시간으로 제어할 수 있습니다.

시연 / 기대할 사항

배선 작업을 완료하고 코드를 업로드하면 LDR의 빛 강도를 변화시킬 때 직렬 모니터에서 전압 읽기가 변경되는 것을 볼 수 있어야 합니다. LDR을 덮으면 전압이 증가하고, 빛에 노출되면 전압이 감소해야 합니다. 이러한 동작은 빛을 제어하는 출력 핀에 직접적인 영향을 미칩니다.

부동 입력이나 잘못된 전압 수준과 같은 일반적인 함정에 주의하세요. 이는 잘못된 측정값으로 이어질 수 있습니다 (비디오 12:30에서).

비디오 타임스탬프

  • 00:00LDR 소개
  • 01:30하드웨어 설정
  • 03:45코드 설명
  • 06:00코드 실행하기
  • 09:15문제 해결 팁

이미지

Wiring LDR with Arduino
Wiring LDR with Arduino
An LDR
An LDR
LDR Illustration and symbol
LDR Illustration and symbol
14-Using an LDR with an Arduino and a control switch for a light
언어: C++
//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);

}

자원 및 참고자료

아직 자원이 없습니다.

파일📁

다른 파일들