"> 제목 "> 제목 ">
<head>
  <!-- HTML Meta Tags -->
  <meta charset="UTF-8" />
  <title> 제목 </title>
  <meta
    name="description"   content=" 설명 "   />
  <meta name="keywords" content="키워드, 양파고, Yang Phago, 노션, 양파고 노션, notion" />

  <!-- Open Graph / Facebook -->
  <meta   property="og:title"   content="제목 "  />
  <meta  property="og:description" content=" 설명, 양파고, Yang Phago, 노션, 양파고 노션  "  />
  <meta property="og:image" content="대표 이미지" />
  <meta property="og:url" content="페이지 주소" />
  <meta property="og:type" content="website" />
</head>

<aside> 💡 delay함수가 이상한 이유: 매개변수에 정한 시간(밀리 초) 동안 프로그램 멈춤. (1초는 1000 밀리 초) ❓멈춘동안 다른 그 어떤것도 하지 못함

</aside>

1. delay()함수의 딜레마

Q. 아두이노에서 다음과 같은 상황이 가능할까?

Untitled

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가 없는 코드를 사용해야 함

1-1. 해결방안 3가지

  1. 시간 분할 방식 (Time Division Multiplexing):
  2. 인터럽트 기반 방식
  3. 멀티태스킹을 구현한 라이브러리 사용

참고. 멀티쓰레드란?

2. millis함수 사용해보기