본문 바로가기
만들기/Arduino

아두이노 서보모터로 카카오톡 공감 스티커 자동 클릭 매크로(Arduino / servo moter / 자동 클릭)

by 인성패밀리 2023. 1. 6.
반응형

요즘 카카오톡 프로필에 공감 스티커가 생겼습니다.

 

손으로 누르기가 힘들어서 아두이노를 이용하여 자동 클릭 장치를 만들어보았습니다.

 

개인적으로 만들어본 소감은 프레임이 정말 단단해야한다. 그리고 터치 역할을 그냥 볼펜 뒤에 있는 평범한 터치펜으로 해보았는데 터치 감도가 매우 중요했습니다. 그런 부분만 빼면 회로와 코드는 정말 쉬웠습니다.

 

만들기 과정

 

필수 준비물 : 아두이노, 브레드 보드(크기 상관 없음), 조이스틱, 서보모터, 서보모터 팔, usb 연결선, 터치 가능한 물체, 각종 점퍼선

조이스틱의 역할은 시작, 멈춤, 딜레이 속도 빠르게, 딜레이 속도 느리게 4개의 역할을 수행하게 될 것입니다.

 

기본적인 회로입니다.

틴커캐드에 조이스틱이 없어서 가변저항으로 표현하려다가 오해가 생길 수 있으니 이렇게 표현하겠습니다.

 

실제 만들기 장면1

조이스틱을 먼저 연결했습니다.

 

 

실제 만들기 장면2

서보 모터를 연결했습니다.

 

실제 만들기 장면3

아두이노에서 5v와 GND를 연결했습니다. 회로는 끝났습니다.

 

실제 만들기 장면4

저는 집에 굴러다니는 재료로 만들었는데 개인적으로 싹 나무 젓가락으로 견고하게 만들걸 후회했습니다. 이제 문제는 코드입니다.

 

아두이노에 코드 넣기

총 4가지의 동작이 들어갈 예정입니다.

1. 조이스틱 x의 값이 300 미만일 경우 서보 모터 무한 반복

2. 이때 조이스틱 x의 값이 800 초과일 경우 무한 반복 탈출

3. 조이스틱 y의 값이 300 미만일 경우 딜레이 시간 0.1초로 재설정

4. 조이스틱 y의 값이 800 초과일 경우 딜레이 시간 0.5초로 재설정

 

코드가 복잡하지 않아서 간단히 주석으로 설명 대신하겠습니다.

# include <Servo.h>  // 서보 모터를 동작시키기 위한 라이브러리 선언

Servo myservo;  // 서보 모터를 동작시킬 변수 선언

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);  // 혹시나 조이스틱이 고장나 확인 할 경우를 대비해 시리얼통신 뚫어놓은 것
  myservo.attach(3);  // 3번 핀을 이용해 서보를 동작시킬 것
  myservo.write(120);  // 서보 모터의 각도를 120도로 셋팅
  pinMode(A0, INPUT);  // 조이스틱 값은 아날로그 신호로 입력 받음 -> A0 포트에 입력 값을 받음
  pinMode(A1, INPUT);  // A1 포트에 입력 값을 받음
}

int x = 0;  // 조이스틱 x의 값을 저장할 변수 선언
int y = 0;  // 조이스틱 y의 값을 저장할 변수 선언
int delay_val = 100;  // 서보모터가 왔다갔다 할 딜레이 기본값 셋팅
void loop() {
  // put your main code here, to run repeatedly:
  x = analogRead(A0);  // 조이스틱 x의 값 저장
  y = analogRead(A1);  // 조이스틱 y의 값 저장
  if(x < 300){  // 조이스틱 x의 값이 300 미만일 경우 서보 모터 무한반복하기
    while(true){
      myservo.write(55);  // 서보 모터 각도롤 55도로 셋팅
      delay(delay_val);  // delay_val 값 만큼 딜레이
      myservo.write(85);  // 서보 모터 각도롤 85도로 셋팅
      delay(delay_val);  // delay_val 값 만큼 딜레이
      x = analogRead(A0);  // 조이스틱 x의 값 저장
      if(x > 800){  //만약 조이스틱 x의 값이 800 초과라면 이제 나가자!
        myservo.write(120);  // 조이스틱을 다시 120도로 셋팅
        break;  // 반복문 탈출
      }
    }
  }
  if(y < 300){  // 만약 조이스틱 y의 값이 300 미만일 경우
    delay_val = 100;  // 딜레이 변수를 0.1초로 변경
  }else if (y > 800){  // 첫 번째 조건이 아니고 조이스틱 y의 값이 800 초과일 경우 
    delay_val = 500;  // 딜레이 변수를 0.5초로 변경
  }
}

 

 

실제 동작 과정입니다.

조이스틱을 이용해서 멈췄다가 다시 동작했다가 딜레이 시간 조절 등을 영상에서 확인하실 수 있습니다.

 

 

요거 만들면서 각도는 시행착오를 거쳐서 해야합니다. 각자 서보 모터가 놓이 위치가 모두 다를 것이기 때문입니다. 실제로 카카오톡 공감을 눌러보았는데 개인적으로 터치 펜이 조금 더 좋은 것이였으면 더 잘되지 않았을까 생각이 됩니다.

 

재미삼아 보시면 좋을 것 같습니다.^^

반응형

댓글