임베디드 시스템은 특정 목적에 맞게 설계되고 최적화된 시스템을 말한다. 일반적으로 임베디드 시스템은 제한된 자원 내에서 특정 기능을 수행하도록 설계된 하드웨어와 소프트웨어의 결합이다.
임베디드 시스템 개발은 PC(host system)에서 진행되며, 타겟 시스템(target system)에 다운로드된다.
PC에서 작성된 코드는 타겟 시스템에 맞는 코드로 작성되어야 하며, 이 과정을 교차 개발 환경이라 한다.
SoC는 CPU 코어와 주변 장치 회로를 하나의 칩에 통합한 것이다.
즉, PC의 마더보드를 하나의 칩에 구현한 것으로 볼 수 있다.
LED를 사용하면 반드시 저항을 추가해야 한다. 저항이 0이면, V = IR 법칙에 따라 전류가 무한대로 증가하여 회로가 손상될 수 있기 때문이다.
V = IR
R = V/I
= 5V / 0.05A
= 100Ω
LED를 켤 때는 직접적으로 9번 핀에서 전류를 보내는 것보다는, 5V 에너지 소스에서 전류를 전달한 후, 9번 핀으로 나가는 방법이 더 안정적이다.
이때, 9번 핀에서 0V(LOW)를 출력하면 LED가 켜지며, 5V(HIGH)를 출력하면 꺼진다.
이는 Source Current보다는 Sink Current 방식을 사용하는 것이 안정적이라는 뜻이다.
9번 핀은 PWM(Pulse Width Modulation) 기능을 제공한다. 일반적으로 디지털 회로는 0V(LOW) 또는 5V(HIGH)만 출력할 수 있다. 하지만 PWM을 사용하면 2.5V, 3V 같은 아날로그 값을 흉내낼 수 있다.
버튼을 누르거나 뗄 때, 스위치 접촉 불량으로 인해 일시적으로 입력값이 불안정해질 수 있다. 이를 버튼 디바운스(Button Debounce)라고 한다.

모터: 전기 에너지를 회전 에너지로 변환
초음파 센서는 소리를 발사하고 반사 신호와의 시간 차이를 이용해 거리를 측정한다. 동작 방식은 다음과 같다:
1. Trigger Pin: Low에서 High로 올리면 초음파 센서가 동작을 시작한다.
2. Echo Pin: 초음파가 반사되면 Echo Pin이 High로 변하고, 일정 시간 후 Low로 떨어진다.
3. 이 시간 간격이 바로 거리 계산에 사용된다.
4. Arduino의 pulseIn(pin, value) 함수로 핀에서 High 상태가 유지되는 시간을 측정할 수 있다.
pulseIn(pin, value) // 예시: pin = 9, value = HIGH
Serial LCD는 직렬 통신(Serial Communication)을 사용하여 데이터를 주고받을 수 있다. 연결 방식은 다음과 같다:
| LCD | Arduino board |
|---|---|
| + | 5v |
| - | GND |
| Rx | Tx |
| Tx | (연결하지 않음) |
가변저항을 이용해 LED의 밝기를 조절할 수 있다. 가변저항의 출력 전압은 0V ~ 5V 사이에서 변화하며, 이를 Arduino가 아날로그 신호로 읽는다.
가변저항 연결: 가운데 핀을 아날로그 핀(A2)에 연결하고, LED는 저항(470옴)을 거쳐 GND에 연결한다.
아날로그-디지털 컨버터(ADC): Arduino에 내장된 ADC가 입력 전압을 10비트(0~1023)의 디지털 값으로 변환해준다.
PWM(Pulse Width Modulation): LED 밝기를 조절하려면 PWM 신호를 사용해 0~255 범위로 변환해야 하므로, 아날로그 값을 4로 나눠야 한다.