가변저항(Potentiometer)
아날로그 신호의 입력 범위
아날로그 입력 신호를 0에서 1,023까지의 값으로 표현할 수 있다. 즉, 가변저항의 가운데 2번 단자를 아두이노의 아날로그 입력 핀에 연결해 입력받는 값의 범위는 0 ~ 1,023이다. 아날로그를 디지털로 변환하기 위한 ADC(Analog Digital Converter)가 10비트(bit)를 지원하기 때문이다. 10비트(bit)가 표현할 수 있는 경우의 수가 2의 10승, 즉 1,024이므로 0부터 1,023까지인 것이다.
아날로그 입력을 통해 가변저항의 값을 읽거나 조도센서, 온도센서, 초음파센서의 값을 측정하는 방법
가변저항값을 측정하고 그래프로 확인해보았다. 노브를 움직이면 직렬 모니터에 표시되는 수치가 변경된다. 또한 아날로그 입력값의 범위가 0~1,023 사이에서 변경된다.

// c# code
//
void setup()
{
Serial.begin(9600); // 시리얼 통신 초기화
// 1초에 9600비트로 데이터 전송
}
// loop() 함수 :
// 컴퓨터에서 실행 중인 C# 프로그램에서 전달된 명령에 따라 LED를 켜고 끄는 코드
void loop()
{
int readValue = analogRead(A0); // 아날로그 입력 핀 A0의 신호값을 읽어 변수에 저장
Serial.println(readValue); // 변수값을 직렬 모니터에 출력
}

// c# code
//
void setup()
{
Serial.begin(9600); // 시리얼 통신 초기화
// 1초에 9600비트로 데이터 전송
pinMode(13, OUTPUT); // 디지털 핀 13번을 출력 모드로 설정
}
// loop() 함수 :
// 컴퓨터에서 실행 중인 C# 프로그램에서 전달된 명령에 따라 LED를 켜고 끄는 코드
void loop()
{
int readValue = analogRead(A0); // 아날로그 입력 핀 A0의 신호값을 읽어 변수에 저장
Serial.println(readValue); // 변수값을 직렬 모니터에 출력
// 가변저항으로부터 읽은 값에 따라 LED를 제어
if(readValue < 500) // readValue < 500이면
digitalWrite(13, LOW); // digitalWrite() 함수로 13번 핀에 LOW 신호를 보내 LED를 끄고,
else // readValue < 500이 아니면
digitalWrite(13< HIGH); // digitalWrite() 함수로 13번 핀에 HIGH 신호를 보내 LED를 켠다.
}





// c# code
//
void setup()
{
Serial.begin(9600); // 시리얼 통신 초기화
// 1초에 9600비트로 데이터 전송
pinMode(13, OUTPUT); // 디지털 핀 13번을 출력 모드로 설정
}
// loop() 함수 :
// 컴퓨터에서 실행 중인 C# 프로그램에서 전달된 명령에 따라 LED를 켜고 끄는 코드
void loop()
{
int readValue = analogRead(A0); // 아날로그 입력 핀 A0의 신호값을 읽어 변수에 저장
Serial.println(readValue); // 변수값을 직렬 모니터에 출력
// 가변저항으로부터 읽은 값에 따라 LED를 제어
digitalWrite(13, LOW); // digitalWrite() 함수로 13번 핀에 LOW 신호를 보내 LED를 끄고,
delay(readValue); // readValue값만큼 코드 실행을 기다린다.
digitalWrite(13, HIGH); // digitalWrite() 함수로 13번 핀에 HIGH 신호를 보내 LED를 켠다.
delay(readValue); // readValue값만큼 코드 실행을 기다린다.
}
// c# code
//
void setup()
{
Serial.begin(9600); // 시리얼 통신 초기화
// 1초에 9600비트로 데이터 전송
pinMode(13, OUTPUT); // 디지털 핀 13번을 출력 모드로 설정
}
// loop() 함수 :
// 컴퓨터에서 실행 중인 C# 프로그램에서 전달된 명령에 따라 LED를 켜고 끄는 코드
void loop()
{
int input = analogRead(A0); // 아날로그 입력 핀 A0의 신호값을 읽어 변수에 저장
int output = input/1023*2000; // 출력값에 변환식 적용
Serial.print(input); // 변수값을 직렬 모니터에 출력
Serial.print('\t'); // 공백 출력
Serial.println(output); // 변수값을 직렬 모니터에 출력
// 가변저항으로부터 읽은 값에 따라 LED를 제어
digitalWrite(13, LOW); // digitalWrite() 함수로 13번 핀에 LOW 신호를 보내 LED를 끄고,
delay(output); // 변수로 지연 시간을 제어
// output값만큼 코드 실행을 기다린다.
digitalWrite(13, HIGH); // digitalWrite() 함수로 13번 핀에 HIGH 신호를 보내 LED를 켠다.
delay(output); // output값만큼 코드 실행을 기다린다.
}
int output = input/1023*2000;: 출력값에 변환식을 적용하여 지연 시간의 범위를 0ms ~ 2,000ms로 변경하였다.
int output = (float)input/1023*2000;
