<head>
<meta charset="UTF-8" />
<title> 아두이노 멀티태스킹: millis() 함수로 delay 없이 코딩하기 (중급 강좌) | 양파고 </title>
<meta
name="description" content="delay() 때문에 센서가 먹통인가요? millis() 함수를 사용해 아두이노 멈춤 없이 LED 제어와 통신을 동시에 하는 '멀티태스킹' 비법을 공개합니다. 소스 코드와 함께 중수로 레벨업하세요!" />
<meta name="keywords" content="아두이노 millis, 아두이노 멀티태스킹, arduino millis example, 아두이노 delay 없이, millis 함수 사용법, 아두이노 타이머, 노션, 양파고 노션, notion" />
<meta property="og:title" content="아두이노 멀티태스킹: millis() 함수로 delay 없이 코딩하기 (중급 강좌)" />
<meta property="og:description" content="초보 티 벗으려면 필수! 'delay' 대신 'millis'를 써야 하는 이유와 3가지 핵심 패턴을 정리했습니다. 이제 여러 작업을 동시에 처리해보세요." />
<meta property="og:image" content="<https://oopy.lazyrockets.com/api/v2/notion/image?src=https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2F9f3c9c6b-c056-484e-9466-231ab1f2008a%2Ff1d1e086-d9df-4bd2-96e7-17ee2624c603%2F%25ED%2581%25AC%25EA%25B8%25B0%25EB%25B3%2580%25ED%2599%2598Arduino_Logo_Registered.svg.png&blockId=3840bc44-ec86-4d35-b835-23158a9aef5c>" />
<meta property="og:url" content="<https://yangphago.oopy.io/605402f6-4f29-46c1-981e-ec7ed3d5437b>" />
<meta property="og:type" content="website" />
</head>
<aside> 💡 delay함수가 이상한 이유: 매개변수에 정한 시간(밀리 초) 동안 프로그램 멈춤. (1초는 1000 밀리 초) ❓멈춘동안 다른 그 어떤것도 하지 못함
</aside>
Q. 아두이노에서 다음과 같은 상황이 가능할까?

int green=10;
int red=9;
int push=3;
void setup() {
pinMode(green, OUTPUT);
pinMode(red, OUTPUT);
pinMode(push, INPUT);
}
void loop() {
digitalWrite(green, HIGH);
delay(1000);
digitalWrite(green, LOW);
delay(1000);
digitalWrite(red, digitalRead(push));
delay(10);
}
😒이런 식의 작동방식이 떠오르겠지만, 결론은 안됨
👎 delay()함수를 사용하게 되면 delay시간동안 아무것도 하지 않고 “기다리기 때문”에 하나의 동작이 끝나야 다음 동작을 하게 됨
➡️ 결론: 여러가지의 동작(=작업)을 동작하려는 시간에 정확하게 동작하게 하기 위해서는 delay가 없는 코드를 사용해야 함
“시간함수(millis)”**를 사용ProtoThread, **FreeRTOS**와 같은 라이브러리를 사용