아두이노UNO를 사용하여 새로운 타입의 아두이노 SoftPot(위치감지)센서와 서보모터 연동 사용예입니다.

아두이노 스타터킷 및 아두이노 인벤터킷에 포함된  새로운타입의 센서입니다.


SoftPot센서는 세개의 단자가 있으며 기본 작동법은 가변저항과 같습니다.  전압핀과 GND을 연결하면 나머지 단자를 통해 접촉위치에 해당되는 전압을 측정할 수 있습니다.   아래의 회로도 참조

[그림1. SoftPot센서 단자안내 - 대응 회로도(사용법은 가변저항과 같습니다.)


아두이노 스케치 소스는 아래와 같습니다. 
스케치에서 기본제공하는 서보제어 예제코드를 거의 그대로 사용했습니다.  참 쉽죠잉~!

알림:
스케치제공 서보모터 작동 기본예제 코드는 작동범위를 0~180으로 설정했지만, 실제로 서보모터의 종류에따라 이값의 범위를 지원하지 못하는경우가 있습니다. 이경우 서보모터에 무리가 가게 되므로  제경우 10~170으로 값의 범위를 줄여줬습니다. 항상 사용하려는 기기의 한계범위를 고려해서 프로그래밍을 해줘야 기기를 오래오래 고장없이 사용할 수 있습니다.


#include <Servo.h>
 
Servo myservo;  // 서보모터제어를 위한 객체를 생성합니다
 
int potpin = 0;  // 센서입력을 받은 아날로그핀을 A0로 설정합니다.
int val;    //  센서입력(아날로그)값을 임시저장할 변수입니다
 
void setup()
{
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}
 
void loop()
{
  val = analogRead(potpin);            // A0에 연결된 SoftPot센서의 값을 읽어옵니다.
  val = map(val, 0, 1023, 10, 170);     // 아날로그입력값 0~1023을 서보모터에 맞게 10~170으로 변환합니다.
  myservo.write(val);                  //  서보모터신호를 센서 입력값에 따라 변경합니다
  delay(15);                           // 약간의 지연시간을 줍니다. 
}

//code 뷰어가 오류가 계속되어 그냥 텍스트로 올렸습니다 ;;

+ Recent posts