원래는 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개
<회로도>
---------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
#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 함수 범위는 반대
'Arduino' 카테고리의 다른 글
[Arduino] 아두이노 기울기 센서 (tilt sensor) (0) | 2021.05.31 |
---|---|
[Arduino] NodeMCU(와이파이 미사용) + RGB led 테스트 - platformio ide (0) | 2021.05.06 |
[Arduino] 아두이노 - Pull up 저항, 내부 풀업 저항 원리, 푸시 버튼 (0) | 2021.04.19 |
[Arduino] 아두이노 Cds 조도센서 (0) | 2021.04.19 |
[Arduino]아두이노 나노보드(Nano) USB 포트 인식 (0) | 2021.04.17 |