Lab-10: 안드로이드-아두이노 서보모터 제어

 

앱인벤터로 아두이노와 블루투스로 연결하여 서보모터 조정하기

 

(1) 아두이노 회로도 및 소스

- Servo Motor : 회전각을 조정할 수 있는 모터,            - HC-06 : 블루투스 모듈

 

소스코드오픈소스 사용

 

#include <Servo.h>        // 서보모터를 위한 Servo.h 라이브러리를 포함한다.

#include <SoftwareSerial.h>       // SoftwareSerial을 통해 블루투스와 데이터 전송

SoftwareSerial BTserial(10, 11);             // Rx, Tx

Servo servomotor;

int a = 0;           // 각도를 위한 변수 생성

 

void setup()

  servomotor.attach(9);   // 9번핀에 서보모터 연결

  BTserial.begin(9600); // 9600 속도로 블루투스시리얼(소프트웨어시리얼) 통신을 시작한다

 

 

void loop()

  if(BTserial.available())            // 블루투스를 통해 수신된 데이터가 있으면

    a = BTserial.read();             // 변수 a에 데이터를 저장하고

      if(a>=0 && a<=180)       // 변수 a의 값이 0보다 크고 180보다 작다면

      servomotor.write(a);        // 서보모터에 변수 a의 값을 입력

      delay(15);

   

 

 

 

(2) 앱 인벤터를 통해 어플리케이션 만들기

 

1. 목록 선택 (ListPicker), 레이블 (TextLable), 슬라이더 (Slider) 컴포넌트 추가.

2. 이름 변경과 너비 및 텍스트 변경

3. 슬라이더에서 최소값은 0, 최대값은 180으로 설정


 

위의 블록과 같이 블록도 생성.

 

1. 첫 번째 블록

   - 블루투스 목록을 선택하기 전에 블루투스 클라이언트에서 받는 서버의 주소와 이름들을 블루투스 목록으로 지정한다.

2. 두 번째 블록

   - 블루투스 목록에서 블루투스를 선택하게 되면 선택된 항목의 주소로 안드로이드에서 블루투스 클라이언트로 연결한다.

3. 세 번째 블록

   - 슬라이더의 섬네일 바가 움직일 때 마다 레이블의 텍스트값에서 숫자를 출력 하게 하고, 블루투스를 통해 숫자를 전송한다. (반올림을 해줘야 정수로 표현이 돼서 1바이트 숫자가 전송된다.)

 

(3) 결과

-어플리케이션 실행 화면

블루투스 연결은 지난 과정에서 한것과 같고 밑에 슬라이더를 통해 서보모터를 조정한다.

 

- 아두이노와 어플리케이션 실행 화면

 

추가

 

1. 텍스트 입력을 통한 서보모터 각도 조절.