BASIC4MCU | 질문게시판 | 답변 : 앱 인벤터 및 아두이노 질문
페이지 정보
작성자 master 작성일2022-05-11 06:45 조회1,405회 댓글1건본문
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial HC06(2,3); // TX,RX
Servo myservo;
//
int echoPin=9,trigPin=8;
//
int pos=90;
int auto=1.cmd=0;
float duration,distance;
//
void setup(){
myservo.attach(10);
pinMode(trigPin,OUTPUT); pinMode(echoPin,INPUT);
Serial.begin(9600);
HC06.begin(9600);
}
//
void loop(){
if(auto){ // 자동모드
digitalWrite(trigPin,1); delayMicroseconds(10); digitalWrite(trigPin,0);
duration=pulseIn(echoPin,HIGH);
distance=340.*duration/10000./2.;
Serial.print(distance); Serial.println("cm");
if(distance>30)cmd='c'; // close
else cmd='o'; // open
myservo.write(pos);
}
//
if(Serial.available()){ HC06.write(Serial.read()); }
if(HC06.available()){
int r=HC06.read(); Serial.write(r);
if(r=='o'){ auto=0; cmd='o'; } // 수동모드 open
if(r=='c'){ auto=0; cmd='c'; } // 수동모드 close
if(r=='a'){ auto=1; } // 자동모드
}
//
if(cmd=='o'){ if(pos>= 95)pos-=5; } // open
if(cmd=='c'){ if(pos<=175)pos+=5; } // close
myservo.write(pos);
delay(100);
}
수동모드(auto=0)에서는 초음파센서에 따른 제어를 하지 않습니다.
자동모드(auto=1)로 원위치 하고 싶으면 'a' 컴맨드를 앱인벤터에서 전송하면 됩니다.
댓글 1
조회수 1,405suhosin님의 댓글
suhosin 작성일코드를 바탕으로 작업을 하는데 블루투스 모듈과 휴대폰이 계속 페어링이 되지가 않습니다. ㅠㅠ 저장은 되는데 연결이 안되서 앱인벤터 코드를 확인하지 못하고 있는데 혹시 원인 짚이시는부분을 알고계시면 알려주시면 감사드립니다