Arduino Uno 로 아날로그 슬라이드 포텐셔미터 모듈 Slide Sensor 를 사용하는 방법을 알아보고
간단하게 LED 와 SG90 마이크로 서보모터를 제어해 보는 프로젝트 입니다
10K Ohm 의 슬라이드 포텐셔미터가 장착 되어 있는 슬라이드 센서 입니다
슬라이드 위치에 따라 변하는 아날로그 저항 출력값을 확인 할수 있습니다
3.3~5V, 10K 옴의 포텐셔미터 구성으로 아두이노 등 그밖의 마이크로 컨트롤 보드와 연결해서 간단하게 테스트 하고 사용할 수 있습니다
<슬라이드 포텐셔미터 모듈 이미지>
사실 센서라기 보다는 슬라이드 형식의 10K 옴의 포텐셔미터라고 하는게 맞는 것 같습니다
슬라이드 센서, 슬라이드 위치 센서 라고도 하는것 같습니다
위 인터페이스 설명을 보면 알수 있듯이 모듈은 편의상 2개의 VCC,GND 전원핀과
2개의 OTA 와 OTB 아날로그 출력핀을 사용할 수 있게 되어 있습니다 (둘중에 아무 쪽이나 사용해도 무방합니다)
사용된 부품
Arduino Uno R3 (Italy)
미니브래드보드
아날로그 슬라이드 포텐셔미터 모듈
점퍼케이블(숫놈-암놈)
점퍼케이블(숫놈-숫놈)
5mm LED 블루 - 1개
막대저항 220 Ohm - 1개
SG90 마이크로 서보모터 - 1개
구성 배선도-시리얼 모니터로 슬라이드 위치에 따른 출력값 변화 확인해 보기
구성 배선도-슬라이드 위치를 변경해서 LED 밝기 제어해 보기
구성 배선도-슬라이드 위치를 변경해서 SG90 마이크로 서보모터 제어해 보기
사용된 예제소스
주의사항
별도 라이브러리 설치는 필요 없으며 위 예제소스를 다운로드해서 스케치 업로드 해주고 테스트 하면 됩니다
example code 는 시리얼 모니터로 슬라이드 위치에 따른 출력값 변화 확인해 보기
example code2 는 슬라이드 위치를 변경해서 LED 밝기 제어해 보기
example code3 는 슬라이드 위치를 변경해서 SG90 마이크로 서보모터 제어해 보기
입니다
첫번째 예제코드를 살펴보면
const int potIn = A0;
슬라이드 포텐셔미터 A0번 핀 아날로그 출력핀 세팅 입니다
void loop(){
RawValue = analogRead(potIn);
Voltage = (RawValue * 5.0 )/ 1024.0; // scale the ADC
아날로그 출력값이므로 당연히 최대 1024 그리고 5V 까지의 출력값을 확인할 수 있습니다
Serial.print("Raw Value = " ); // shows pre-scaled value
Serial.print(RawValue);
Serial.print("\t Voltage = "); // shows the voltage measured
Serial.print(Voltage,3); //3 digits after decimal point
Serial.print("\t Resistance = "); // shows the voltage measured
Serial.println(Resistance);
delay(500); // 1/2 sec so your display doesnt't scroll too fast
}
Serial.print 명령어가 확인되고
슬라이드 포텐셔미터로 부터 측정 된 값 스케일과 볼트를 시리얼 모니터로 출력해 줍니다
두번째 예제코드를 살펴보면
// 슬라이드 포텐셔미터 A1핀으로 설정합니다.
int potentiometer = A1;
// LED를 3핀으로 설정합니다.
int led = 3;
// 실행시 가장 먼저 호출되는 함수이며, 최초 1회만 실행됩니다.
// 변수를 선언하거나 초기화를 위한 코드를 포함합니다.
void setup() {
Serial.begin(9600);
// LED가 연결된 핀을 OUTPUT으로 설정합니다.
pinMode(led, OUTPUT);
}
// setup() 함수가 호출된 이후, loop() 함수가 호출되며,
// 블록 안의 코드를 무한히 반복 실행됩니다.
void loop() {
// 슬라이드 포텐셔미터로 부터 측정된 값을 읽습니다.
// 슬라이드 포텐셔미터로 부터 입력되어지는 전압의 크기(0~5V)에 따라 0~1023 범위의 값으로 변환되어 반환합니다.
int pmValue = analogRead(potentiometer);
// 측정된 밝기 값를 시리얼 모니터에 출력합니다.
Serial.print("potentiometer = ");
Serial.println(pmValue);
// 가변저항으로부터 측정된 값 (0~1024)을 아날로그 출력 값 (0~255) 범위로 변환합니다.
pmValue = map(pmValue, 0, 1023, 0, 255);
// LED가 연결된 핀으로, 변환된 값 만큼의 밝기로 켜지도록 설정합니다.
// 만일 측정된 값이 500 이라면, 디지털 핀으로 출력 할 수 있는 최대값 255의 절반에 해당되므로,
// LED가 5V 전류로 낼 수 있는 최대 밝기의 절반으로 해석 할 수 있습니다.
// 이는 디지털로 아날로그 신호를 보내는 펄스 폭 모듈레이션(PWM)에서 duty-cycle이 50%인 것으로 설정됩니다.
analogWrite(led, pmValue);
// 0.1초 동안 대기합니다.
delay(100);
}
세번째 예제코드를 살펴보면
#include <Servo.h>
Servo myservo;
아두이노 기본 라이브러리 Servo.h 라이브러리를 사용합니다
int potpin = 0;
슬라이드 포텐셔미터 아날로그 핀 설정 0번 입니다
myservo.attach(9);
서보모터 핀 설정 9번 입니다
val = map(val, 0, 1023, 0, 179);
0~1023 까지 변화되는 출력값에 따라서 최대 180도 까지 서보모터를 회전시킵니다
프로젝트 동영상 - 시리얼 모니터로 슬라이드 위치에 따른 출력값 변화 확인해 보기
프로젝트 동영상 - 슬라이드 위치를 변경해서 LED 밝기 제어해 보기
프로젝트 동영상 - 슬라이드 위치를 변경해서 SG90 마이크로 서보모터 제어해 보기
댓글