반응형
오늘은 아두이노 아날로그 신호 입출력에 대해 알아보겠습니다.
디지털 핀에서는 디지털 신호 입출력이 모두 가능했던 반면, 아날로그 신호는 입력과 출력이 서로 다른 핀을 사용합니다. 입력은 ANALOG IN 문구가 표시된 A0~A5 총 6개에서 가능하고, 출력은 디지털핀 숫자 옆에 '~'가 붙은 PWM핀에서 가능합니다.
PWM은 Pulse Width Modulation의 약자로 진동의 폭을 조절한다는 의미입니다. 다시 말하면 출력할 수 있는 전압값을 기준으로 이를 일정한 비율(duty)동안에는 High로 유지하고 나머지는 Low값으로 출력하여 아래와 같은 사각파의 출력을 만들어 낼수있다.
출처 : https://ko.wikipedia.org/wiki/%ED%8E%84%EC%8A%A4_%ED%8F%AD_%EB%B3%80%EC%A1%B0 |
Duty 10%단위로 펄스 폭 컨트롤의 경우 Duty 10%단위로 펄스 폭 컨트롤의 경우 |
출처 : https://ko.wikipedia.org/wiki/%ED%8E%84%EC%8A%A4_%ED%8F%AD_%EB%B3%80%EC%A1%B0 |
아두이노는 외부기기로부터 0~5V의 아날로그 신호를 입력받으면 0~1023의 값으로 인식합니다.
1) 가변저항으로 아날로그 신호 입력받기
준비물
- 아두이노 우노
- LED 소자 : 가장 일반적인원형라운드 LED를 준비합니다.
- 가변저항 : 3개의 핀과 회전부로 구성된 가변저항으로 양쪽 핀에 전원을 연결한 후 회전부를 돌리면 저항값에 의해 변형된 신호가 출력됩니다.
회로도
소스코드
int val=0;
void setup() {
Serial.begin(9600);
}
void loop() {
val=analogRead(A0); // 아날로그 A0에 입력되는 신호를 val에 저장
Serial.println(val); //시리얼 모니터에 val출력
delay(10);
}
2) 가변저항으로 LED 밝기 조절하기
회로도
소스코드
이제 가변저항으로 LED의 밝기를 조절해 보겠습니다.
int val=0;
void setup() {
Serial.begin(9600);
pinMode(9, OUTPUT);
}
void loop() {
val=analogRead(A0)/4; // 아날로그 A0에 입력되는 신호를 val에 저장
Serial.println(val); //시리얼 모니터에 val출력
analogWrite(9, val);
}
소스코드에서 아날로그 입력값을 4로 나눠 준 이유는 아두이노의 아날로그 단자에서 읽어들인 가변저항의 입력값은 0~1024이지만 LED의 밝기 값은 0~255까지 출력할 수 있기 때문입니다.
반응형
'피지컬컴퓨팅 > 아두이노' 카테고리의 다른 글
부저 활용하기(버튼으로 제어-버튼 피아노) (0) | 2024.03.15 |
---|---|
서보 모터 제어하기(가변저항 이용) (0) | 2024.03.11 |
초음파 센서(HC-SR04) 활용하기 (0) | 2024.03.05 |
PIR 모션센서와 LED 활용하기 (0) | 2024.03.05 |
LED 제어하기 (1) | 2024.03.05 |