원래는 analogWrite(led, 밝기) 를 이용하여 

 

방이 어두워지면 그만큼 LED를 밝게 하려고 했다.

 

그런데, 저런 0~255에 해당하는 LED 밝기가 티가 잘 나질 않았다.

 

그래서 결국 digitalWrite를 이용해 LED를 여러개 사용하기로 했다.

 

조도 센서에 대해 모른다면 

 

<이전 내용>

cooldong.tistory.com/7?category=1014903

 

[Arduino] 아두이노 Cds 조도센서

코드 파일 다운로드 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- 조도 센서(Cd..

cooldong.tistory.com

을 보고 오자.

 

보드 : 아두이노 우노

개발 환경 : Arduino ide

부품 :

 

1.  Cds 조도 센서

2. 10kΩ -1개

3. 220Ω - 4개

4. LED 4개

5. 전선 12개

 

 

 

<회로도>

조도센서, led 4개, 220Ω

 

 

---------------------------------------------------------------------------------------------

Cds_sensor_V3.ino
0.00MB

---------------------------------------------------------------------------------------------

 

#define Cds A0

int LED[4] = {2,3,4,5};
int darkness = 0;
int brightness = 0;
int percent = 0;
char buf[100];


void setup() {
  Serial.begin(9600);
  for(int i = 0; i < 4; i++)
  {
    pinMode(LED[i], OUTPUT);  
  }

}

void loop() {
  darkness = analogRead(Cds);

  percent = map(darkness, 1023, 0, 0, 100);  //PULL-UP 저항

  if(percent < 25) digitalWrite(LED[0], HIGH);  //white
  else digitalWrite(LED[0], LOW);
  if(percent < 40) digitalWrite(LED[1], HIGH);  //green
  else digitalWrite(LED[1], LOW);
  if(percent < 55) digitalWrite(LED[2], HIGH);  //yello
  else digitalWrite(LED[2], LOW);
  if(percent < 70) digitalWrite(LED[3], HIGH);  //red
  else digitalWrite(LED[3], LOW);
  
  sprintf(buf, "data: %4d |밝기: %3d %%", darkness ,percent);
  Serial.println(buf);

  delay(100);
  
}

◈ 특징 1 

LED를 배열로 넣어 선언해주고 사용하였다.

 

 특징 2

sprintf 을 C언어의 printf 함수처럼 사용 가능

 

 특징 3

map 함수를 통해  1023(어두움) ~ 0 (밝음) 을   0% ~100% 로 표현 

 

 특징 4

외부 풀업 저항을 사용 -> 내부 풀업 저항으로 대체 가능

풀 다운 저항일 경우 map 함수 범위는 반대

 

어두워 졌을 때

 

 

https://youtu.be/Ci31QnkhvSk

작동 영상

 

+ Recent posts