조도 센서(CDS)

아두위키 : Arduwiki
ArduWiki (토론 | 기여)님의 2023년 12월 14일 (목) 16:14 판

빛이 밝을수록 저항값이 작아지는 센서입니다.

필요 하드웨어

연결

LED를 사용하지 않더라도, 조도 센서 측정 값을 시리얼 모니터로 확인하실 수 있습니다.

LED 미사용시 회로
LED 사용시 회로

예제 코드

조도 센서 값을 시리얼 모니터로 출력하고, 센서 값에 따라 LED의 밝기가 변하는 예제입니다.

#define A_cds A0

void setup()
{
  //시리얼 통신 보드레이트 설정
  Serial.begin(9600);
}

void loop()
{
  //analogRead로 들어오는 전압값을 읽습니다.
  //analogRead는 0~5V의 전압을 0~1024의 정수값으로 대응시킵니다.
  double value = analogRead(A_cds);
  Serial.print("value : ");
  Serial.println(value);
  delay(1000);
}

실행결과

조도 센서를 가리지 않았을 때(좌) 조도 센서를 가렸을 때(우) LED 밝기 비교
조도 센서를 가리지 않았을 때(좌) 조도 센서를 가렸을 때(우) LED 밝기 비교


고등학교 정보교과서(씨마스) 예제

P. 211 스스로 해결하기① (조도 센서, LED)

본 예제는 교과서 내용에 따라 엔트리파이선을 사용합니다.

아두이노 사용 방법 문서에서 엔트리파이선을 활용 방법을 참고하세요.


파일:씨마스 예제 P.211.png

연결

예제 코드

조도 센서 값에 따라 켜지는 LED 개수가 달라집니다.

사용 환경에 따라 var 값의 기준을 변경해주세요.

import Entry
import Arduino

def when_start():
    while True:
        var = Arduino.analogRead("A0")
        if var > 0:
            Arduino.digitalWrite(8,"HIGH")
		else:
			Arduino.digitalWrite(8,"LOW")
        if var > 30:
            Arduino.digitalWrite(9,"HIGH")
		else:
			Arduino.digitalWrite(9,"LOW")
        if var > 60:
            Arduino.digitalWrite(10,"HIGH")
		else:
			Arduino.digitalWrite(10,"LOW")
        if var > 90:
            Arduino.digitalWrite(11,"HIGH")
		else:
			Arduino.digitalWrite(11,"LOW")
        if var > 120:
            Arduino.digitalWrite(12,"HIGH")
		else:
			Arduino.digitalWrite(12,"LOW")


간단한 반복문을 추가한 코드입니다. 동작은 위 코드와 동일합니다.

import Entry
import Arduino

def when_start():
    while True:
		ledpin = 8
		k = 0
		var = Arduino.analogRead("A0")
		for i in range(5):
			if var > k:
				Arduino.digitalWrite(ledpin,"HIGH")
			else:
				Arduino.digitalWrite(ledpin,"LOW")
			ledpin += 1
			k += 30

실행결과

구매 링크

공집사몰