앱 인벤터로 블루투스에 의해 아두이노 우노의 붙박이 LED 를 on OFF 해 보자.
필요한 준비물은 아래와 같다.
안드로이드 스마트 폰; HC-06 아두이노 블루투스 센서 보드 X 1
아두이노 우노 보드 X 1; 점퍼선 4개
아두이노 우노 블루투스 배선
부품 명칭이 ZS-040 으로 되어 있으나 안드로이드 폰에 HC-06 으로 등록이 되었음에 유의한다. 2개의 블루투스 데이터 선은 RX 와 TX 이다. 아두이노 보드의 (0,1)은 코드를 업로딩할 때 사용하기 때문에 점퍼 선을 뺏다 끼웠다 하기 대단히 불편하므로 SoftwareSerial.h 라이브러리를 사용하기로 한다. 클라스 선언을 통해 (0,1) 대신 BTSerial (2,3)으로 선언한다. 블루투스 센서 보드의 TX 가 아두이노 우노에서는 RX 인 2번으로 매칭된다. 마찬가지로 블루투스 센서 보드의 RX는아두이노 우노에서 TX 인 3번으로 매칭된다.
아두이노 보드 외부에 별도의 LED 배선 없이 붙박이 LED 13번을 이용하기로 한다.
PC와의 통신은 9600 블루투스 통신속도도 9600 으로 설정한다. 블루투스 센서 보드 규격에 따라 좀 더 높은 속도 설정도 가능하다.
스마트 폰과의 블루투스 통신이 가능하다면 클라스 선언된 BTSerial,⚫⚫⚫ 명령 사용이 가능하다. 주로 .available() 과 .read() 이다.
블루투스 통신도 비밀번호 설정에 의한 보안이 되므로 버튼을 누룸에 따라 “1” 또는 “0 ”을 송신하면 충분하다.
수신 된 값이 “1” 또는 “0 ”인지 확인 후 digitalWrite() 명령에 의해 LED를 on OF
F 한다.
스마트 폰 블루투스 등록
앱 인벤터 코딩 디자인
파레트의 User Interface에서 ListPicker 1개, 버튼 2개, Connectivity에서 BluetoothClient 1개를 사용한다.
스마트 폰 화면 구성은 하래 한글 사용번과 유사한듯하다. ListPicker를 Viewer Screen1 에 드래그한 후 속성 창에서 Text 입력 박스에 LED Control을 입력한다. center, bold를 포함하는 폰트 세부 정보를 입력 하고 Width 항목에서 Fill
parent를 선택하면 화면에서 자동적으로 수평 한 줄을 차지하게 된다.
Turn on 버튼과 Turn OFF 버튼은 User Interface에서 버튼을 드래그 하기 이전에 Layout의 HorizontalArrangement를 드래그 한다. 그 다음 버튼 2개를 각각 드래그해 넣는다. 보다 세부적인 것은 각자 실습을 통해 익히도록 하자.
앱 인벤터 블록 편집
ListPicker 란 HTML에서 라디오 태그 라든지 또는 ul 태그와 비슷해 보인다. 스마트폰 웹 화면상에 필요한 버튼 내지는 정보를 나열하는 방식으로 보인다.
2개의 블루투스 통신 버튼을 가지는 LED Control 이라는 이름의 ListPicker1은 픽하기(Pick) 전에 블루투스 클라이언트로서 주소와 이름을 갖는다.
픽이된 후에는 그 주소와 이름으로 블루투스를 통해 외부와 연결(Connect) 한다. 이때 필요한 주소와 이름을 ListPicker1로부터 제공 받는다.
블루투스 연결이 이루어지면 Turn on 버튼과 Turn OFF 버튼을 번갈아 누르면 즉 “1” 이나 “0”을 송신하면 아두이노 우노의 붙박이 LED 가 on OFF 된다.
코딩된 앱 인베터 코딩을 저장하고 BUILD 하여 앱을 생성하도록 한다.
앱 인벤터 실행
스마트 폰에서 앱을 터치하든지 아니면 앱 인벤터 편집기로부터 QR 코드를 송신 받아 실행 시키게 되면 LED Control ListPicker가 나타난다.
이 ListPicker를 터치하면
그 아래의 블루투스 ID 번호가 나타난다. 이 번호를 다시 터치하면 세 번째 화면으로 바뀌는데 LED COntrol 대신 Connected 가 나타난다.
Turn on OFF 버튼을 눌러 LED 가 on OFF 됨을 확인해 보자.
블루투스를 서로 찾는 시간 동안에는 블루투스의 빨간 LED 가 빠르게 깜박인다. 찾으면 멈추게 된다.
appinventor_BT_LED_ON_OFF_01
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2,3);//(RX,TX)
int LED = 13;
void setup() {
Serial.begin(9600);
BTSerial.begin(9600);
pinMode(LED,OUTPUT);
}
void loop() {
if(BTSerial.available()) {
char data = BTSerial.read();
Serial.write(data);
if(data == '1') {
digitalWrite(LED,HIGH);
}
if(data == '0') {
digitalWrite(LED,LOW);
}
}
}//끝
'앱 인벤터 appinventor' 카테고리의 다른 글
앱 인벤터에 의한 보행계(pedometer) (0) | 2017.10.10 |
---|---|
앱인벤터 WiFi 에 의한 아두이노 NodeMCU LED ON OFF 예제:II (0) | 2017.10.05 |
앱인벤터 예제 Talk To Me! 스마트 폰 앱 설치 (0) | 2017.10.03 |
앱 인벤터 예제 Talk To Me! 블록 편집 (0) | 2017.10.03 |
앱 인벤터 예제 Talk To Me! 코딩 디자인 (0) | 2017.10.03 |