조도 측정기
Coddy Arduino 여정의 입력 섹션에 포함된 레슨. 22개 중 22번째.
이 강의에서는 해당 부분을 하나로 합칩니다. 빛의 세기를 백분율로 출력하고, 휴대폰의 신호 막대처럼 LED 세 개로 된 막대에 표시하는 조도계입니다.
작업을 각각 하나의 역할을 맡는 함수들로 나누면 loop()가 설명문처럼 읽힙니다.
void loop() {
int percent = lightPercent();
showLevel(percent);
// 백분율을 출력한다
}lightPercent()는 조도 모듈의 AO를 읽고 0(어두움)부터 100(밝음)까지의 값을 반환합니다. 빛이 강해질수록 AO 값은 낮아지므로, 역방향으로 매핑합니다. map(reading, 0, 1023, 100, 0)은 1023을 0으로, 0을 100으로 바꿉니다.
showLevel(int percent)는 막대의 각 LED에 고유한 임계값을 지정합니다. 첫 번째 LED는 25 초과, 두 번째 LED는 50 초과, 세 번째 LED는 75 초과일 때 켜집니다. 빛이 약해지면 막대가 다시 줄어들 수 있도록 각 LED마다 else가 필요합니다.
챌린지
중급조도 모듈의 AO는 A0에 연결되어 있고, 막대의 LED는 핀 10, 11, 12에 연결되어 있습니다:
int lightPercent(): 어두울 때 0, 밝을 때 100void showLevel(int percent): 25를 초과하면 핀 10, 50을 초과하면 핀 11, 75를 초과하면 핀 12가 켜집니다loop()에서 두 함수를 호출하고, 백분율을 출력한 다음 200 ms 기다립니다
Run을 누르고, 조도 슬라이더를 움직인 다음 Check를 누르세요.
직접 해보기
const int lowPin = 10;
const int midPin = 11;
const int highPin = 12;
// 여기에 int lightPercent()를 작성하세요
// 여기에 void showLevel(int percent)를 작성하세요
void setup() {
pinMode(lowPin, OUTPUT);
pinMode(midPin, OUTPUT);
pinMode(highPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
// 빛의 세기를 백분율로 읽고, 막대에 표시하고, 출력한 다음 200 ms 동안 기다리세요
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
입력의 모든 레슨
직접 연습해 보세요: Arduino 플레이그라운드