안녕하세요 뀨입니다.
오늘 아두이노에서 가변저항을 연결해 값을 받아오는 것과 값을 맵핑하여 LED의 밝기를 변화시켜보겠습니다.
analogRead(), analogWrite() 함수에 대한 설명은 아두이노 강좌에 하나 있으니 참고하셔도 됩니다^^
2020/12/01 - [연구노트/아두이노 강좌] - 04장 디지털과 아날로그(digitalWrite/digitalRead, analogWrite/analogRead)
가변저항(Potentiometer)
- 전자회로에서 저항값을 임의로 바꿀 수 있는 저항.
- 저항값을 바꿈으로써 전류값을 바꿀 수 있음.
- 보통 3핀 VCC, SIG, GND로 구성됨.
- 슬라이더를 돌려서 조절
analogRead() 함수로 저항값 읽기
- vcc -> 5v, gnd ->gnd, sig -> a0로 각각 아두이노에서 가변저항으로 연결
- analogRead() 함수를 이용해 A0의 값을 읽는다.
- 5V이므로 0~1023의 값이 들어옴
소스코드
void setup() {
Serial.begin(9600);
}
void loop() {
int a;
a = analogRead(A0);
Serial.print("Read A0: ");
Serial.println(a);
}
map() 함수를 이용한 LED 밝기 조절
위에서 analogRead 함수로 가변저항의 값을 받아올 수 있었는데 이제 가변저항을 이용해 LED의 밝기를 조절하려고 합니다.
먼저 map() 함수
www.arduino.cc/reference/ko/language/functions/math/map/
result = map(value, fromLow, fromHigh, toLow, toHigh);
/**
* value : 변환할 값
* fromLow : 현재 범위값의 하한(value가 가질 수 있는 최소값)
* fromHigh : 현재 범위값의 상한(value가 가질 수 있는 최대값)
* toLow : 목표 범위 값의 하한(변환할 범위의 최소값)
* toHigh : 목표 범위 값의 상한(변환할 범위의 최대값)
*/
Map함수는 값을 자동으로 매핑해주는 함수입니다.
예를 들어 입력값이 0~20까지 들어오는데 이 범위를 0~100으로 매핑한다고 하면 아래의 표처럼 결과값을 출력해준다.
아두이노의 아날로그 출력은 0~255이기 때문에 0~1023 값을 맵핑하여 LED의 밝기를 조절할 것입니다.
- A0에서 가변저항의 값을 읽어서 ~D11 핀의 출력을 이용해 LED에 전류를 조절
- ※딱히 맵핑을 하지 않아도 가변저항의 SIG에서 바로 LED로 선을 연결해도 밝기를 조절할 수 있다.
소스코드
void setup() {
Serial.begin(9600);
}
void loop() {
int a, b;
a = analogRead(A0); //가변저항 값
b = map(a, 0, 1023, 0, 255); //0~1023을 0~255로 맵핑
Serial.print("Read/Map [A0]/[b]: ");
Serial.print(a);
Serial.print(" / ");
Serial.println(b);
analogWrite(11, b); //핀11을 b값으로 출력
}
동작 영상
'연구노트 > 아두이노' 카테고리의 다른 글
아두이노 Neopixel 네오픽셀 예제 분석!(colorWipe, theatherChase, rainbow, theatherChaseRainbow) (1) | 2020.12.29 |
---|---|
아두이노와 AM2315 온습도 측정!(I2C 통신, AM2315 온습도 센서) (0) | 2020.12.11 |
아두이노 네오픽셀(NeoPixel) LED 다루기 (0) | 2020.09.24 |