1. 디지털 신호란?
디지털 신호는 주로 0(OFF)와 1(ON), 두 가지 상태로만 표현됩니다. 아두이노에서는 이를 통해 장치의 작동을 제어할 수 있습니다.
- 디지털 핀: 아두이노에는 0번부터 13번까지의 디지털 핀이 있습니다. 이 핀들은 디지털 신호를 입출력할 수 있으며, 특정 핀을 입력용으로 사용할지, 출력용으로 사용할지 설정해야 합니다.
- pinMode: 디지털 핀의 용도를 설정하는 명령어
- 매개변수: 핀의 이름, 입력 또는 출력
- INPUT: 0, 입력으로 설정
- OUTPUT: 1, 출력으로 설정
pinMode(13, OUTPUT); // 13번 핀을 출력 모드로 설정
2. 디지털 출력
- 디지털 출력: 디지털 핀에서 전압을 출력하여 전자 기기를 제어하는 방식입니다. 예를 들어, LED를 제어할 때 전압을 0V에서 5V로 바꾸어 LED를 켜고 끌 수 있습니다.
- digitalWrite: 디지털 신호를 출력할때 사용하는 명령어
- 매개변수: 디지털 신호를 출력할 핀 번호, 디지털 신호를 내보낼지 안 내보낼지 알려주는 값
- LOW: 0, 전압 0V
- HIGH: 1, 전압 5V
pinMode(13, OUTPUT); // 13번 핀을 출력으로 설정
digitalWrite(13, HIGH); // 13번 핀에서 5V 출력 (LED ON)
digitalWrite(13, LOW); // 13번 핀에서 0V 출력 (LED OFF)
3. 디지털 입력
- 디지털 입력: 버튼과 같은 입력 장치의 상태를 확인할 때 사용됩니다. 버튼이 눌렸는지 여부를 확인하여 프로그램에서 특정 동작을 수행할 수 있습니다.
- digitalRead: 디지털 신호 입력 값을 읽는 명령어
- 매개변수: 디지털 신호 입력 값을 읽을 핀 번호
- 함수를 호출하면 해당 핀 번호의 입력 값을 반환 값으로 돌려준다.
- 반환값을 HIGH, LOW와 비교해 전압이 무슨 상태인지 확인
pinMode(13, INPUT); // 13번 핀을 입력으로 설정
int buttonState = digitalRead(13); // 버튼 상태 읽기 (HIGH 또는 LOW)
if(buttonState == HIGH){
// 전압이 HIGH인 경우
} else {
// 전압이 LOW인 경우
}
- pinMode 함수를 이용해 디지털 핀을 입력 용도로 쓸지 출력 용도로 쓸지 결정한다.
- 출력인 경우 digitalWrite 함수를 이용해 출력을 제어한다.
- 입력인 경우 digitalRead 함수를 이용해 입력 값을 읽는다.
4. 플로팅 현상과 풀업/풀다운 저항
디지털 핀을 입력으로 사용할 때는 플로팅 현상이 발생할 수 있습니다. 이는 핀이 HIGH와 LOW 사이에서 전압이 불안정하게 왔다 갔다 하는 현상입니다. 디지털 핀을 입력으로 설정하면 입력 핀 주위에 아주 작은 전류가 흐르기 때문입니다. 이 문제를 해결하기 위해 풀업 또는 풀다운 저항을 사용하여 입력 핀의 전압을 안정시킵니다.
- 풀다운 저항: 입력 핀을 기본적으로 LOW 상태에 고정시키고, 버튼을 눌렀을 때 HIGH 상태로 전환합니다.
- 풀업 저항: 입력 핀을 기본적으로 HIGH 상태에 고정시키고, 버튼을 눌렀을 때 LOW 상태로 전환합니다.
1) 풀다운 저항
- 입력 핀의 전압을 평상시 LOW로 고정시킨다.
- 버튼이 안 눌렸을 때 입력 핀과 그라운드 핀이 저항을 사이에 두고 연결된다.
- 평상시 입력 핀에 흐르는 작은 전류가 모두 그라운드 핀으로 빠져나가 입력 핀의 전압이 LOW가 된다.
- 버튼을 눌렀을 때는 5V 전원 핀에서 전류가 흘러 입력 핀으로 들어가고 이 때문에 입력 핀의 전압이 HIGH가 된다.
- 그라운드 핀으로 전류가 흐르지 않는 이유
- 버튼을 눌렀을 때 5V 전원 핀에서 전류가 출발
- 전류는 전선을 통해 가다 두 갈래길에 도착
- 한쪽은 곧바로 입력 핀으로 들어가는 길, 한 쪽은 중간에 저항이 있고 그라운드 핀으로 가는 길
- 전류는 큰저항(10k 옴)이 중간에 있는 그라운드 핀보다 입력 핀으로 흐름
2) 풀업 저항
- 입력 핀의 전압을 평상시 HIGH로 고정시킨다.
- 평상 시 5V 전원 핀과 입력 핀이 중간에 저항을 두고 연결된다.
- 풀다운때와 마찬가지로 10k 옴 정도의 큰 저항 사용
- 5V 전원 핀과 연결되어 있기 때문에 전압은 HIGH가 된다.
- 버튼을 눌렀을 때 5V 전원 핀에서 전류가 흘러 그라운드 핀으로 들어가고 이 때문에 입력 핀의 전압이 LOW가 된다.
- 버튼을 눌렀을 때 5V 전원 핀에서 전류가 출발하고 저항을 지난다.
- 두 갈래길에 도착하는데 한 쪽은 입력 핀으로 가는 길, 한 쪽은 그라운드 핀으로 가는 길
- 그라운드 핀의 전압이 완전 0V이기 때문에 전류는 입력 핀 쪽이 아닌 그라운드 핀 쪽으로 흐른다.
- 입력 핀에 흐르는 작은 전류도 마찬가지로 그라운드 핀 쪽으로 흐른다.
5. 아날로그 신호란?
아날로그 신호는 0V부터 5V 사이의 다양한 전압 값을 처리할 수 있는 신호입니다. 이는 전압이 연속적으로 변하는 것을 측정하거나 제어할 때 유용합니다.
- 아날로그 입력: 아두이노에는 A0부터 A5까지의 아날로그 핀이 있으며, 이 핀을 통해 입력되는 전압 값을 읽을 수 있습니다.
int sensorValue = analogRead(A0); // A0 핀의 아날로그 신호 읽기 (0 ~ 1023)
- 아날로그 출력: 아두이노에서는 아날로그 출력 핀을 통해 PWM(펄스 폭 변조) 방식을 사용하여 0V와 5V 사이의 전압을 출력할 수 있습니다. 전압의 값: 0(0V)~255(5V)
analogWrite(9, 127); // 9번 핀에 약 2.5V 출력 (0~255 범위)
아날로그 신호는 조도 센서, 온도 센서 등에서 값을 읽어와 LED 밝기를 제어하거나 모터 속도를 조절하는 데 활용할 수 있습니다.
5. PWM(펄스 폭 변조)
아두이노의 PWM 방식은 디지털 신호를 사용하여 아날로그처럼 출력할 수 있는 방법입니다. 이는 일정 시간 동안 신호를 켜고 끄는 방식으로 전압을 조절하는 기술입니다. PWM을 통해 전류의 흐름을 조절하며, High와 Low 비율(튜티 사이클,Duty Cycle)을 이용해 평균 전압을 제어합니다.
- PWM의 원리와 특징
- 듀티 사이클(Duty Ctcle): 단위 시간 동안 높은 전압이 차지하는 비율로, PWM 신호의 출력 전압을 결정하는 요소입니다.
- 아두이노의 한계: 아두이노의 디지털 GPIO 핀은 단일 비트 신호(0 또는 1)만 출력할 수 있어 높이를 조절할 수 없습니다. 대신 ~ ~3, ~5, ~6, ~9, ~10, ~11번 핀('~' 틸트 표시)을 통해 PWM을 사용하여 아날로그와 비슷한 출력을 만듭니다.
- 응용 분야
- PWM은 무드 등 조명 조절, 부저의 음계 조절, LCD 밝기 조절과 같은 다양한 응용에서 사용됩니다.
- 사용 방법
- 아두이노에서 PWM을 사용할 때는 analogWrite(0~255) 함수를 이용해 듀티 사이클을 설정하며 이를 통해 출력 강도를 제어할 수 있습니다.
- 예를 들어, analogWrite(9, 127)은 9번 핀에서 절반의 시간 동안 신호를 켜고 나머지 절반 동안 신호를 꺼서 평균적으로 2.5V의 전압을 출력하는 것과 같습니다.
'IT개발및프로그래밍 > 아두이노' 카테고리의 다른 글
아두이노 6: 삼색 LED 색 변경하기(버튼, 자동) (0) | 2024.10.28 |
---|---|
아두이노 5 : PWM을 이용한 LED 제어 및 버튼 활용하기 (0) | 2024.10.28 |
아두이노 3: 아두이노 프로그래밍 기초 (0) | 2024.10.22 |
아두이노 2: 아두이노 준비하기 (1) | 2024.10.22 |
아두이노 1: 아두이노의 이해와 활용 (0) | 2024.10.22 |