# 제목: 가변저항(INPUT) - 아두이노 - LCD1602(OUTPUT)으로 



# 내용: 가변저항을 사용해서 사용자가 직접 특정값을 입력해서 원하는 기능을 하도록 해보자.


일단 가변저항으로 어떻게 신호를 입력할 수 있을까?


이는 "전압분배법칙"을 사용해서 가능합니다.


법칙 자체를 설명하면 너무 복잡해질 것 같아서... 간단한 원리만 설명합니다.


가변저항은 총 3개의 핀으로 구성되어있고 좌/우측 끝 핀을 연결하면 전체저항값이 나오고,


끝단 중 하나와 가운데 핀을 연결하면 회전량만큼의 저항에 대한 값만 나오게 됩니다.


이걸 사용해서 좌/우끝단에 각각 +5V / GND 를 연결하고 가운데를 analog 입력에 넣으면 회전한 만큼 전압을 넣게되어


0~ 1023의 값을 입력할 수 있습니다. (analogRead() 메소드를 사용합니다)



# 코드:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
 
LiquidCrystal_I2C lcd(0x3F162);  // I2C LCD 객체 선언
const int resistorPin = A0;   //아두이노 A0 I/O에 가변저항을 연결합니다.
int sensorValue = 0;
 
void setup() {
  lcd.begin(); // lcd를 사용을 시작합니다.
  lcd.clear(); // lcd를 전부 지웁니다.
  lcd.home();  // 첫번째 줄 첫번째(좌측) 위치로 이동한다.
 
  pinMode(resistorPin, INPUT);  //resistorPin 을 입력으로 설정합니다.
}
 
void loop() {
  lcd.home();
  lcd.print("Resistor(0~1023)");
  lcd.setCursor(0,1);   // LCD 에 한자리 ~ 네자리가 표시될 때
  lcd.print("    ");    // 네자리 표시 후에 한자리~세자리 표시로 바뀌면
  lcd.setCursor(0,1);   // 마지막자리 숫자가 그대로 남아있게 되어 표기오류가 생긴다.
                        // 그래서 이 방법을 사용해서 해당 LCD칸을 초기화해준다.
  sensorValue = analogRead(resistorPin);  //analogRead()를 사용해서 아날로그 입력을 받는다.
  lcd.print(sensorValue);   //lcd에 0~1023 값을 출력한다.
  lcd.setCursor(4,1);
  lcd.print("value");
}
cs


# 회로도(Fritzing):




# 실행결과:



# 비고:


이 방법을 사용하여 가변저항입력값 (0~1023)에 범위를 주어 특정값에 특정한 액션을 취하게 할 수 있습니다. 가변저항 입력을 사용하여 구현할 수 있는 예제를 다음 글에 써보도록 할게요~


+ Recent posts