[faduino4-2] 산업용 아두이노에서 파일럿램프 2개를 서로 다른 간격으로 깜빡이는 예제!(millis함수사용)
프로그래밍/산업용아두이노(fa-duino) 2023. 7. 2. 15:46반응형
안녕하세요!
녹칸다입니다!
녹칸다의 산업용 아두이노(fa-duino)의 빠른 내용 전달을 위해서 코드와 작동결과만을 별도로 정리해보도록 하겠습니다~!
녹칸다의 산업용 아두이노 4편에서 2번예제를 정리해보도록 하겠습니다~!
이번 예제는 산업용 아두이노(faduino)의 38번핀과 39번핀에 파일럿램프를 1개씩 연결하고 각각의 램프가 서로 다른 간격으로 켜짐과 거짐을 반복하도록 millis()함수를 적용해보도록 하겠습니다~~!
38번램프는 1초간격으로 반짝이고 이와 동시에 39번램프는 2초 간격으로 반짝이도록 하는 것입니다~~!
이렇게 하려면 시간을 나눠서 동시작업을 해야하는 task의 개념이 필요하고 기본적 task구현을 위해서 millis()함수를 활용해보는 것입니다~!
예제의 소스코드는 아래와 같습니다~!
unsigned long t1 = 0; //타이머1
int step1 = 0; //1==램프가 켜진다, 2==램프가 꺼진다
unsigned long t2 = 0; //타이머2
int step2 = 0; //1==램프가 켜진다, 2==램프가 꺼진다
void setup() {
Serial.begin(9600);
pinMode(38,OUTPUT); //빨간 램프
pinMode(39,OUTPUT); //녹색 램프
}
void loop() {
///////////task1///////////////////
if(millis() - t1 > 1000 && step1 == 0){
//산업용 아두이노가 켜진지 1초가 지났다!
//어떤 작업~
t1 = millis();
digitalWrite(38,HIGH);
step1++;
}else if(millis() - t1 > 1000 && step1 == 1){
t1 = millis();
digitalWrite(38,LOW);
step1 = 0;
}
///////////task2///////////////////
if(millis() - t2 > 2000 && step2 == 0){
//산업용 아두이노가 켜진지 1초가 지났다!
//어떤 작업~
t2 = millis();
digitalWrite(39,HIGH);
step2++;
}else if(millis() - t2 > 2000 && step2 == 1){
t2 = millis();
digitalWrite(39,LOW);
step2 = 0;
}
}
예제의 실행결과는 녹칸다의 라이브방송중 해당위치를 링크하도록 하겠습니다~!
https://youtu.be/6RjVbPI6uG8?t=2843
반응형