유튜브 : https://youtu.be/8Fqp41gmimY
안녕하세요 지난 시간까지 아두이노의 기초를
배웠다면, 이번 시간 부터는 난이도가
조금 있는 중급 레벨의 공부를 하겠습니다.
유튜브에 자세한 설명도 참고해서
공부해주세요~!

준비물
아두이노 보드, cds센서(조도센서),
저항 300옴, 케이블, 빵판, led
네이버쇼핑에서 관련 센서
한번 보겠습니다. 광고는 아니고
검색만 해놓은거에요!
광센서만 있는 것이 아니고
모듈로 파는 것들을 사용하겠습니다
모듈이라고 해도 350원부터 팔고 있네요
이렇게 모듈로 파는 것을 추천드립니다.
위 사진처럼 모듈로 파는 것을 사주세요!
바로 회로 연결 보시겠습니다.
센서 A0 - 아두이노 A0
GND - GND
VCC - 5V
연결은 간단합니다.
아두이노 보드 A0에서 값을 읽어서
시리얼 모니터로 출력하는 코드 보겠습니다.
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println(analogRead(A0));
delay(300);
}
작동 영상입니다.
밑에 조도 센서에서 읽은 값이 올라오는데
센서를 주먹으로 쥐어서 어두워지면 센서의 값이 커집니다.
반대로
센서를 빛을 향하게 해서 밝아지면 센서의 값이 작아집니다.
센서로 값을 읽어서 어두우면 밝게 불을 켜는
예제를 보겠습니다. 이번엔 그냥 불을 켜는게
아니라 어두우면 어두운 만큼 더 밝게
덜 어두우면 불을 조금만 켜는 미션을
해보려고 합니다.
작동 영상부터 보실까요?
센서를 손으로 막으면 더 밝게 켜지는
것이 보이시나요??
회로도 보겠습니다.
조도센서는 그대로이고
6번핀에 300옴 저항과 led를 연결합니다.
코드 바로 보겠습니다.
int light, power;
void setup() {
Serial.begin(9600);
}
void loop() {
light = analogRead(A0);
power = map(light,50,1000,0,255);
analogWrite(6,power);
Serial.println(power);
}
첫줄부터 보자면
light에는 조도센서에서 읽은 값을 넣습니다.
power = map(light,50,1000,0,255);
power에서 map이라는 새로운 함수가 나왔는데요
지금 저는 조도센서의 값을 읽으면
밝을 때는
어두울 때는
이렇게 값의 분포를 보입니다. 정리하면
저희가 조도센서에서 읽어온 light는 대략
70 ~ 989 사이에 있습니다.
map이 어떤 일을 하는지 감이 오시나요?
power = map(light,50,1000,0,255);
light라는 값은 대충 50~1000사이에 존재하는데
(map함수의 2, 3번째 인자)
그 값이 0~255범위에서는 어떤 값에 대응될까요?
(map함수의 4, 5번째 인자)
그 값을 구해주는 함수 입니다.
power= round(255*(light-50)/950);
원래는 위처럼 비례식으로 구해야 하는데
이걸 쉽게 구해주는 함수입니다.
편하긴 한데 정교한 작업에서는
사용하지 않는 것이 좋습니다.
아두이노 홈페이지에 따르면
반올림하지 않고 소수부분을 버리는
연산을 합니다. round를 쓰면
반올림을 하는데 map은 버려버리니
1정도의 차이가 발생할 수 있습니다.
지금은 밝기 조절 용도이니 map을 써도
무방하겠습니다.
그럼 왜 0~255사이의 범위로 바꾼 것일까요?
int light, power;
void setup() {
Serial.begin(9600);
}
void loop() {
light = analogRead(A0);
power = map(light,50,1000,0,255);
analogWrite(6,power);
Serial.println(light);
delay(500);
}
이어서 나오는 analogWrite는 무엇일까요?
다음 글에 이어서 보겠습니다.
'아두이노 기초 강의' 카테고리의 다른 글
19. 피에조부저 part1 (0) | 2023.10.16 |
---|---|
20. 피에조부저 part2 (0) | 2023.10.16 |
22. 조도센서 cds센서 & pwm part2 (0) | 2023.10.16 |
23. 아두이노와 파이썬 연결해서 실시간 그래프 그리기 (0) | 2023.10.16 |
24. 택트 스위치 (0) | 2023.10.16 |