이번에 만들어 볼 회로는 가로등 역할을 하는 회로입니다.
일단 조도 센서를 이용해서 조도 값을 받아들인 후, 조도 값이 낮다면 불을 켜는 동작을 해볼 겁니다.
그리고 밝기 값은 조도 센서 값에 따라 조절되게 할 겁니다.
일단 조도 센서 하나를 아날로그 핀에, LED 하나를 10번 핀으로 연결하였습니다.
int pin_LED=10;
void setup()
{
Serial.begin(9600);
pinMode(pin_LED, OUTPUT);
pinMode(A0, INPUT);
}
void loop()
{
int ADC_value=analogRead(A0);
int PWM_value=map(ADC_value, 6, 679, 255, 0);
analogWrite(pin_LED, PWM_value);
Serial.println(String("Lamp control : ") + PWM_value);
delay(500);
}
조도 센서 값은 아두이노 보드로 전달해주어야 하기때문에 INPUT으로 동작을 설정했습니다.
ADC_value라는 변수에 조도 센서 값을 저장합니다.
PWM_value라는 변수에는 ADC_value값을 맵핑해서 넣어주었습니다.
map이라는 함수를 쓴 이유는 우리는 조도 값이 낮아질 때 서서히 LED를 켜줘야 합니다.
하지만 LED값이 PWM값으로 제어될 때, 0~255의 값으로 밝기가 밝아지기 때문에
map이라는 함수를 통해 조도 값이 낮을 때, LED PWM값이 높도록 값을 설정해 준 것입니다.
그리고 이 결과 값을 보기 위해 Serial 모니터로 출력하게 했습니다.
이 때, 너무 빠른 속도로 시리얼 모니터 창이 지나가면 안되기 때문에 delay값을 적당히 두었습니다.
이렇게 회로와 코드를 짠 후 동작을 시키게 되면 조도 값이 0일때, 밝기가 최대값인 255로 작동하게 됩니다.
조도 값을 올리면 올릴 수록 밝기 값이 내려가고 일정 밝기 이상으로 밝아지면 조명이 서서히 꺼지게 됩니다.
이번 회로는 map함수를 사용하지 않았다면 상당히 구현이 힘들었을 겁니다.
하지만, 아두이노 기본 라이브러리에 map함수가 포함되어 있어 아날로그 값을 8비트 값으로 변환시켰습니다.
'Dev > C언어' 카테고리의 다른 글
아두이노 초음파 센서 사용하기 (0) | 2020.08.09 |
---|---|
아두이노 Text LCD 사용하기 (0) | 2020.08.02 |
아두이노 millis와 interrupt로 LED 제어하기 (0) | 2020.07.20 |
아두이노 가변저항 사용하기 (0) | 2020.07.19 |
아두이노 피아노 만들기, 음 연주하기 (0) | 2020.07.18 |