디지털 출력
아두이노 핀맵
아두이노 입출력(I/O) 포트(port)
아두이노 디지털 출력 digitalWrite( )
LED(발광다이오드)란?
방향(+, -)이 있는 전자 부품
순방향으로 전압을 가하면 빛이나는 반도체
LED: 빛(Light)을 내는(Emitting) 다이오드(Diode)
LED 극성 구분하기
순방향
극성 구분하는 법
LED 보호 저항
LED가 손상되지 않게 보호하려면
LED는 보통 2V 내외에서 동작한다.
그 이상의 전압을 가하면 타버린다.
아두이노의 출력은 5V이다.
저항이 3V를 감당하고, LED에 2V정도 공급하려면?
200~300옴 정도의 저항을 직렬로 달아준다.
Blink 예제로 LED 제어
Blink 예제 소스코드
// 설정함수: 한번만 실행
void setup() {
// 내장LED(LED_BUILTIN)와 연결된 디지털핀을 출력으로 설정
pinMode(LED_BUILTIN, OUTPUT);
}
// 루프함수: 영원히 계속 실행
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // LED 켜기(HIGH는 5V 전압)
delay(1000); // 1초(1000밀리초) 동안 기다림
digitalWrite(LED_BUILTIN, LOW); // LED 끄기(LOW는 0V 전압)
delay(1000); // 1초(1000밀리초) 동안 기다림
}
아두이노 외부에 LED 연결하기
회로1
회로2
회로3
[질문] 위 세개의 회로는 서로 같은가?
신호등 LED 모듈
세가지 색상의 LED와 각각의 보호저항을 소형 기판에 구현한 모듈
동작전압: 5V
GND: GND
R : 빨강
Y : 노랑
G : 초록
[과제] 삼색 신호등 구현
회로 구성
구현 조건
녹색(2초) → 노랑(0.5초) → 빨강(2초)
부저
능동부저, 수동부저 구별하기 [바로가기]
회로도
[과제] 비프음 발생기 구현
1초에 한번씩 비프음을 발생하는 buzzer() 함수 작성
n회 비프음 발생 beep(n) 작성
소스코드 01buzzer.ino
#define piezoPin 2 // 부저
void setup() {
pinMode(piezoPin, OUTPUT);
}
void loop() {
//buzzer();
beep(3);
delay(1000);
}
// 부저가 1초 간격으로 동작
void buzzer(){
digitalWrite(piezoPin , HIGH);
delay(1000);
digitalWrite(piezoPin , LOW);
delay(1000);
}
// 비프음 n회 발생
void beep(int n) {
for (int i = 0; i < n; i++) {
digitalWrite(piezoPin , HIGH); // 비프 울림
delay(20);
digitalWrite(piezoPin , LOW); // 비프 꺼짐
if(n>1) delay(30);
}
}