오늘 끝나면
마이크로컨트롤러
- ✓마이크로컨트롤러의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 마이크로컨트롤러이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
Arduino 첫걸음 — 코드로 핀에 전기를 흘리다 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
Physical AI · 02
마이크로
컨트롤러
Arduino는 작은 칩 하나에 핀이 달린 컴퓨터다.
코드를 올리면 핀에 전기를 켜고 끈다.
LED 깜빡이기가 이 세계의 hello world다.
Arduino = 작은 칩 + 핀
Physical AI의 첫 부품은 거대한 GPU가 아니라 손바닥만 한 보드다.
Arduino는 마이크로컨트롤러(MCU) 한 칩을 중심으로 만든 보드다.
대표 모델 Arduino Uno는 ATmega328P 칩을 쓴다. 8비트, 16MHz, 메모리는 KB 단위다.
이 작은 칩 안에 CPU와 메모리, 입출력이 다 들어있다. 컴퓨터 한 대가 칩 하나로 압축된 셈이다.
화면에 영상을 그리는 게 아니라 핀에 전기를 켜고 끄는 게 일이라서 느려도 된다.
보드 가장자리에 핀(pin)이 줄지어 박혀 있다.
이 핀에 LED와 센서, 모터를 꽂아 바깥 세상과 연결한다.
파란 13번 핀이 보드에 달린 LED와 연결돼 있다
핀에 전기를 흘리다, digitalWrite
코드로 핀을 움직이는 명령은 딱 두 가지 상태다. HIGH 아니면 LOW다.
digitalWrite(13, HIGH)는 13번 핀에 전기를 흘려라, 즉 켜라는 뜻이다.
digitalWrite(13, LOW)는 끊어라, 즉 꺼라는 뜻이다.
디지털 핀은 두 값뿐이다. HIGH는 약 5V, LOW는 0V다.
중간값은 없다. 켜짐과 꺼짐, 1과 0의 세계다.
그 전에 핀을 출력으로 정해줘야 한다.
pinMode(13, OUTPUT)으로 “이 핀은 내보내는 핀”이라고 한 번 선언한다.
이 두 명령만 알면 LED와 부저, 릴레이를 다 켤 수 있다.
digitalWrite(13, HIGH)
핀이 1이 되면 LED가 켜진다
digitalWrite(13, LOW)
핀이 0이 되면 LED가 꺼진다
LED 깜빡이기 = hello world
모든 첫 Arduino 코드는 LED 하나를 깜빡인다. 이게 임베디드의 hello world다.
Arduino 코드는 두 칸으로 나뉜다.
setup()은 처음 한 번만 도는 칸이고, 여기서 pinMode로 핀을 정한다.
loop()은 전원이 켜진 동안 끝없이 도는 칸이다.
loop 안에서 켜고, 잠깐 멈추고, 끄고, 다시 잠깐 멈추기를 반복한다.
멈춤은 delay(1000)이고, 1000밀리초, 즉 1초 동안 그대로 있으라는 뜻이다.
이 켜고 끄고 기다리는 리듬이 눈에는 깜빡임으로 보인다.
오른쪽 코드가 가장 흔한 Blink 예제다. 숫자 하나(delay)만 바꿔도 깜빡이는 속도가 달라진다.
처음 한 번 돌며 핀을 정한다
전원 동안 무한 반복
직접 깜빡여 보기
오른쪽은 가상 Arduino다. 핀을 직접 켜고 꺼 본다.
digitalWrite 버튼으로 13번 핀을 HIGH나 LOW로 토글하면 위의 가상 LED가 즉시 켜지고 꺼진다.
RUN loop()을 누르면 delay 값만큼 쉬며 자동으로 깜빡인다. delay 슬라이더를 줄이면 빨라지고 키우면 느려진다.
코드 한 줄의 숫자가 물리 세계의 리듬을 정한다.
이 작은 토글이 모터 회전과 로봇 관절, 자율주행 신호의 가장 밑바닥 단위다.
digitalWrite(13, LOW);
작을수록 빨리 깜빡임
핀 하나가 세상을 움직인다
LED 깜빡이기는 장난 같지만, 원리는 끝까지 똑같다.
같은 digitalWrite(HIGH)로 LED 대신 릴레이를 켜면 전등이 켜진다.
모터 드라이버를 켜면 바퀴가 돌고, 부저를 켜면 소리가 난다.
켜고 끄는 속도를 아주 빠르게 조절하면(PWM) 밝기와 속도까지 부드럽게 다룬다.
이 강에서는 켜짐과 꺼짐만 봤고, 그 위에 센서(3강)와 제어(PID), 강화학습이 차곡차곡 쌓인다.
Q. Arduino에서 13번 핀에 연결된 LED를 켜는 명령은? (digitalRead(13) · digitalWrite(13, HIGH) · delay(13) · pinMode(13, INPUT))
정답은 digitalWrite(13, HIGH)다.digitalWrite(핀, HIGH)가 그 핀에 전기를 흘려 LED를 켠다.
digitalRead는 읽기, delay는 기다리기, pinMode(.., INPUT)은 입력으로 쓰겠다는 선언이고, 켜는 명령이 아니다.
| 핀에 꽂은 부품 | 켜지면 |
|---|---|
| LED | 불빛이 강에서 다룬다 |
| 부저 | 소리켜면 삑 |
| 릴레이 | 전등·가전큰 전류 스위치 |
| 모터 드라이버 | 바퀴 회전로봇 이동 |
명령은 그대로고 핀에 꽂은 부품만 바뀐다