반응형

안녕하세요!
녹칸다입니다!

녹칸다의 산업용 아두이노(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 

 

반응형
Posted by 덕력킹
,