Arduino 특정시간 제어와 릴레이 다루기
LED 기본예제 소스(1초 단위로 LED 깜박이기)
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(1000);
digitalWrite(13, LOW);
delay(1000);
}
딜레이효과 소스
unsigned long previousMillis = 0;
const long interval = 1000;
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis >= delayTime){
previousMillis = currentMillis;
원하는 동작;
}
}
두 코딩을 합치면
int led = 13; //Red LED 핀번호
unsigned long previousMillis = 0; //이전시간
const long delayTime = 1000; //1초(1000) 대기시간
boolean ledState = false; //LED 현재상태
void setup() {
pinMode(led, OUTPUT); //13번 핀을 출력모드로 사용.
}
void loop() {
unsigned long currentMillis = millis(); //현재시간값 가져옴
if(currentMillis - previousMillis >= delayTime){ //1000초 시간이 흘렀는지 체크
previousMillis = currentMillis; //1초가 지나 참임으로 1초 지난 현재시간을 이전시간에 저장
ledState=!ledState; //1초 if문이 참이니깐 1초 단위로 ledState 값을 반전시키면 1초 단위로 참/거짓됨.
digitalWrite(led, ledState); //참(5V) or 거짓(0V)
}
}
코드 주석을 달아 놓았으니깐 따로 설명은 필요 없겠죠.
##소스##
10초간 릴레이가 ON 되고 5초간 OFF 되는 프로그램
사실 소스는 별거 없다. 어떤 센서를 이용하여 어떤 상황에서 전원을 ON/OFF를 할지가 가장 중요하다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
//KY019 5V 릴레이 모듈
int relay = 10; //릴레이에 5V 신호를 보낼 핀설정
void setup ()
{
pinMode (relay, OUTPUT); // relay를 output으로 설정한다.
}
void loop ()
{
digitalWrite (relay, HIGH); // 릴레이 ON
delay (10000); //10초 delay
digitalWrite (relay, LOW); // 릴레이 OFF
delay (5000); //5초 delay
}
|
cs |
##결과##
나의 경우엔 헤어드라이어를 아두이노에서 ON/OFF 해 보았다.
프로그램대로 10초간 전원이 연결되어 켜지고, 5초간 전원이 차단되어 꺼진다.