아두이노 보드와 블루투스 어플을 사용하여 LED 및 DC 모터를 제어하는 방법을 소개합니다.
적용어플은 이번에 적용할 코드에 특성화된 어플이기에 하기와 같이 접속하여 다운받으시기
바랍니다.
# 어플 다운로드 방법
→ 플레이스토어에서 Arduino Bluetooth 검색
# 아두이노 회로구성은 다음과 같습니다.
- led에 220Ω 저항하나 추가해주세요. 저항 위치는 LED +,-극 어디에 연결해도
상관없습니다.
DC 모터를 연결하고 싶다면 시 LED를 제거 후 모터를 연결하면 됩니다. ↓↓
위와 같은 종류의 DC 모터는 무극성 타입이며 +,- 연결 순서에 따라 회전방향이 달라집니다.
아두이노 코드는 다음과 같습니다.
#include <SoftwareSerial.h>
int bluetoothTx = 2; // 디지털 2번핀 블루투스 TX핀 지정
int bluetoothRx = 3; // 디지털 3번핀 블루투스 RX핀 지정
int led = 13; // 디지털 13번 핀 led 지정
int buttonPin1 = 7; // 디지털 7번 핀 1번 버튼 지정
int buttonPin2 = 8; // 디지털 8번 핀 2번 버튼 지정
int button1State = 0; // 1번 버튼 상태 초기화
int button2State = 0; // 2번 버튼 상태 초기화
int dataFromBt; // Bluetooth 앱으로부터 입력이 담길 변수 지정
boolean lightBlink = false; //boolean 변수 lightBlink에 거짓값 담는다. (초기화)
SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); //소프트웨어 시리얼 채널 지정
//하드웨어 시리얼인 아두이노의 Tx, Rx 핀을 사용하면 코드 업로드 및 다운로드 시 충돌 발생
void setup()
{
Serial.begin(9600); // 초당 9600비트 시리얼 통신 시작
bluetooth.begin(9600); // 초당 9600비트 블루투스 통신 시작
pinMode(led, OUTPUT); // led 연결 핀 출력지정
pinMode(buttonPin1, INPUT); // 1번 버튼 연결 핀 입력지정
pinMode(buttonPin2, INPUT); // 2번 버튼 연결 핀 입력지정
}
void loop()
{
if (bluetooth.available()) //bluetooth 사용 가능시
{
// Serial.println((char)bluetooth.read());
dataFromBt = bluetooth.read(); // bluetooth 입력값이 변수에 담긴다
if (dataFromBt == '1') // bluetooth 입력이 1이면
{
Serial.println("led on"); // 시리얼모니터에 "led on" 출력
digitalWrite(led, HIGH); // led ON
bluetooth.print("1"); // bluetooth 1을 출력한다.
}
if (dataFromBt == '0') //bluetooth 입력이 0이면
{
Serial.println("led off"); // 시리얼모니터에 "led off" 출력
digitalWrite(led, LOW); // led OFF
bluetooth.print("0"); // bluetooth 앱의 off 버튼 동작
}
if (dataFromBt == 'b') // 변수에 b가 입력되면(앱에서 b입력시)
{
Serial.println("a"); // 시리얼 모니터 a출력
lightBlink = true; // lightBlink 변수에 참값을 넣는다.
}
else //변수에 b가 입력되지 않을 시
{
lightBlink = false; // lightBlink 변수에 거짓값을 넣는다.
}
}
if (lightBlink) // lightBlink 참이면 (블루투수 b 입력시) led 점멸 반복
{
digitalWrite(led, HIGH); // led ON
bluetooth.print("1"); // 블루투스 1출력
Serial.println("HIGH"); // 시리얼 모니터에서 "HIGH"를 출력
delay(500); // 0.5초 딜레이
digitalWrite(led, LOW); // led OFF
bluetooth.print("0"); // 블루투스 0 출력
Serial.println("LOW"); //시리얼 모니터에서 "LOW"를 출력
delay(500); // 0.5초 딜레이
}
//------arduino push button code----------------
button1State = digitalRead(buttonPin1); // 1번 버튼 상태값 변수에 7번핀 입력값을 대입
button2State = digitalRead(buttonPin2); // 2번 버튼 상태값 변수에 8번핀 입력값을 대입
if (button1State == HIGH) // 버튼1번 누를 시
{
digitalWrite(led, HIGH); // led ON
bluetooth.print("1"); // 블루투스 앱 1 출력
Serial.println("on"); //시리얼모니터 "on" 출력
}
if (button2State == HIGH) //버튼2번 누를 시
{
digitalWrite(led, LOW); // led OFF
bluetooth.print("0"); // 블루투스 앱 0 출력
Serial.println("off"); //시리얼모니터 "off" 출력
}
}
원본 작성자가 올린코드는 약간의 에러가 있어 하기를 주석처리 하였습니다.
// Serial.println((char)bluetooth.read());
그로인해 시리얼 모니터 출력내용 코드 일부는 실행되지 않고 있습니다.
원본내용은 유투브 동영상에 연결되어 있으니 링크를 눌러주세요.