아두이노 튜토리얼 7 - Blink Without DelayArduino Uno2015. 2. 11. 22:23
Table of Contents
반응형
참고한 원본 글은 http://arduino.cc/en/Tutorial/BlinkWithoutDelay 입니다.
두 가지 일을 동시에 실행시키려고 하는 경우 delay()함 수를 사용하게 되면 원하는 결과를 얻지 못할 수 있습니다. 예를 들어 LED를 깜박이게 하려고 delay함수를 사용하면 delay 함수 시간 동안 프로그램을 정지시키기 때문에 그 때 버튼을 누르는 경우 놓치게 됩니다.
그래서 delay함수를 사용하는 대신에 시간을 측정합니다. 이전 시간을 기록해두고 현재시간을 계속 체크해서 일정 시간이 경과했다면 LED의 상태를 바꾸어 주고 현재 시간을 기록해둡니다. 이 과정을 반복함으로써 LED는 깜박이게 됩니다.
별도의 하드웨어 추가없이 아두이노 Uno의 13번 핀에 연결되어 있는 내장되어 있는 LED를 사용합니다.
- const int ledPin = 13; //LED핀 연견된 번호
- int ledState = LOW; // LED상태를 LOW로 초기화
- unsigned long previousMillis = 0; // LED의 상태가 업데이트된 시간을 기록할 변수
- const long interval = 1000; //LED 상태 변경할 시간 지정(ms단위)
- void setup() {
- pinMode(ledPin, OUTPUT);//ledPin을 출력으로 설정
- }
- void loop(){
- //현재 시간을 기록
- unsigned long currentMillis = millis();
- //지난번 LED의 상태를 변경한 후 경과시간이 interval시간보다 크다면
- if(currentMillis - previousMillis >= interval) {
- //LED의 상태를 변경한 시간을 기록한다.
- previousMillis = currentMillis;
- if (ledState == LOW)//LED가 꺼진상태면
- ledState = HIGH; //LED를 켜진 상태로 하고
- else//LED가 켜진상태라면
- ledState = LOW; //LED를 꺼진상태로 한다.
- //ledState변수에 저장된 값으로 ledPin핀의 상태를 설정한다.
- digitalWrite(ledPin, ledState);
- }
- }
반응형
'Arduino Uno' 카테고리의 다른 글
Arduino UNO에서 DC 모터 제어 (3) | 2015.02.16 |
---|---|
아두이노 시뮬레이터 (0) | 2015.02.16 |
아듀이노 튜토리얼 6 - Analog Read Voltage (0) | 2015.02.11 |
Arduino 예제 – cds + 캐릭터 lcd (0) | 2015.01.20 |
아두이노 시리얼 명령으로 LED 켜고 끄기 (1) | 2015.01.20 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!