BASIC4MCU | 질문게시판 | 아두이노와 앱인벤터 블루투스통신
페이지 정보
작성자 hello 작성일2019-11-10 16:44 조회11,909회 댓글3건본문
안녕하세요~ 항상 답변주신거에 많은 도움을 받는 학생입니다~
제가 앱인벤터로 블루투스 통신을 받고 싶은데요
초음파 센서에 15cm 안으로 물체가 감지됏을때 위험
그밖에는 안전으로 앱인벤터에 띄우고 싶어 코딩을 하였습니다. ㅠㅠ
그런데 앱인벤터에 블루투스 통신은 되는거 같지만 아무 변화가 없습니다 ㅠㅠ 무엇을 빠트린 걸까요ㅠㅠ?
#include
#include
#include
#include
const int RST_PIN = 9;
const int SS_PIN = 10;MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 인스턴스
byte cardkeyByte[4] = {0xE9, 0x85, 0x59, 0x98}; //card UID
boolean state = false; //초음파 센서 작동 상태값Servo servo;
const int SERVO_PIN = 8;
const int TONEPIN = 5;
SoftwareSerial BTSerial(2,3); // RX, TXint LED1= A5;
int LED2= A4;
const int TRIG_PIN = 7;
const int ECHO_PIN = 6;
void setup() {
Serial.begin(9600);
while (!Serial);
BTSerial.begin(9600);
SPI.begin(); //SPI 시작
mfrc522.PCD_Init(); //MFRC522 card 초기화
Serial.println(F("Warning: this example clears your mifare UID, use with care!"));pinMode(TRIG_PIN,OUTPUT); //초음파센서핀(TRIG)
pinMode(ECHO_PIN,INPUT); //초음파센서핀(ECHO)pinMode(LED1, OUTPUT); // 3번핀을 출력으로 설정
pinMode(LED2, OUTPUT);
servo.attach(SERVO_PIN);
servo.write(0);
delay(50);
}void loop() {
if(state == true){
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);
float distance = UltrasonicDistance();
if(distance<15){
state=false;
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
Serial.print("Close : ");
Serial.println(distance);
BTSerial.println("warning");
servo.write(0);
delay(500);
tone(TONEPIN ,3700); // 도음으로 8분음표(음길이)
delay(1000);
noTone(TONEPIN);tone(TONEPIN ,3900); // 도음으로 8분음표(음길이)
delay(1000);
noTone(TONEPIN);tone(TONEPIN ,3700); // 도음으로 8분음표(음길이)
delay(1000);
noTone(TONEPIN);tone(TONEPIN ,3900); // 도음으로 8분음표(음길이)
delay(1000);
noTone(TONEPIN);
}
}
// 새 카드 확인
if ( ! mfrc522.PICC_IsNewCardPresent()) return;// 카드 읽기
if ( ! mfrc522.PICC_ReadCardSerial()) return;//카드 확인 메세지 음
tone(TONEPIN ,523,1000/8); // 도음으로 8분음표(음길이)
delay(1000/4*1.30);
noTone(TONEPIN);//읽은 Card UID와 등록된 Card UID가 일치하는 확인
if (mfrc522.uid.uidByte[0] == cardkeyByte[0] && mfrc522.uid.uidByte[1] == cardkeyByte[1] &&
mfrc522.uid.uidByte[2] == cardkeyByte[2] && mfrc522.uid.uidByte[3] == cardkeyByte[3] ){
state = true;
Serial.println("Open");
BTSerial.println("safety ");
servo.write(180);delay(500);
}
}
float UltrasonicDistance(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN,HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN,LOW);
float duration = pulseIn(ECHO_PIN, HIGH);
return duration / 57.5;
}
댓글 3
조회수 11,909master님의 댓글
master 작성일
시계1 타이머가 동작하면 블루투스에서 데이터를 받아온다고 되어 있지요?
아무 때나 받아오도록 작성하면 안되는 건가요?
기본 예제가 그런 식으로 작성되어 있을 것으로 생각됩니다.
hello님의 댓글
hello
시꼐 타이머는 빼도 상관은 없습니다 ,
지금 앱에서는 블루투스 목록에HC-06까지는 뜨는데 연결이 안되는듯 합니다.
저는 아두이노 코딩에 문제가 있는걸로 생각이되는데 코딩에 어떤부분에 문제가 있는지 여쪄보고 싶습니다 ㅠㅠ
master님의 댓글
master
앱인벤터는 제가 사용해보지 않아서 구체적인 설명을 드리지 못합니다.
블루투스 기본 예제는 쉽게 구할 수 있으니 기본예제부터 동작을 확인하세요
https://www.google.com/search?q=%EC%95%84%EB%91%90%EC%9D%B4%EB%85%B8+%EB%B8%94%EB%A3%A8%ED%88%AC%EC%8A%A4+%EC%95%B1%EC%9D%B8%EB%B2%A4%ED%84%B0&pws=0&gl=us&gws_rd=cr