BASIC4MCU | 질문게시판 | 아두이노 코드관련 질문
페이지 정보
작성자 왕초봉 작성일2023-03-31 20:48 조회186회 댓글1건본문
안녕하세요 제가 초음파 센서가 일정 거리에서 물체를 감지하면 진동모터가 작동하고 블루투스 모듈에서 앱인벤터로 만든 앱으로 신호를 보내서 경고음이 울리게 만들려고 합니다.
아래는 코드입니다.
#include <SoftwareSerial.h> // SoftwareSerial 라이브러리를 사용하기 위해 선언합니다.
#define echoPin 2 // 초음파 센서의 Echo 핀을 2번 핀으로 설정합니다.
#define trigPin 3 // 초음파 센서의 Trig 핀을 3번 핀으로 설정합니다.
#define motorPin 9 // 진동모터의 핀을 9번 핀으로 설정합니다.
SoftwareSerial BTSerial(10, 11); // SoftwareSerial 객체를 생성합니다. RX 핀을 10번 핀, TX 핀을 11번 핀으로 설정합니다.
void setup() {
pinMode(trigPin, OUTPUT); // Trig 핀을 출력으로 설정합니다.
pinMode(echoPin, INPUT); // Echo 핀을 입력으로 설정합니다.
pinMode(motorPin, OUTPUT); // 진동모터 핀을 출력으로 설정합니다.
BTSerial.begin(9600); // 블루투스 모듈의 통신 속도를 9600으로 설정합니다.
}
void loop() {
long duration, distance; // 변수를 선언합니다.
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Trig 핀에 10마이크로초 동안 HIGH 신호를 보냅니다.
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH); // Echo 핀에서 HIGH 신호가 들어오는 시간을 측정합니다.
distance = duration * 0.034 / 2; // 초음파가 진행한 거리를 계산합니다.
if (distance <= 100) { // 거리가 100cm 이하일 경우 진동모터를 2초간 작동합니다.
digitalWrite(motorPin, HIGH);
delay(2000);
digitalWrite(motorPin, LOW);
BTSerial.print("1"); // 블루투스 모듈을 통해 "1" 신호를 보냅니다.
}
else {
BTSerial.print("0"); // 거리가 100cm 이상일 경우 블루투스 모듈을 통해 "0" 신호를 보냅니다.
}
100cm거리에서 초음파 센서가 물체를 감지하면 블루투스 모듈에서 앱인벤터로 만든 앱으로 1이라는 신호를 보내서 경고음이 울리게 하고싶습니다.
제가 아직 부품들이 없어서 직접 동작을 잘하는지 확인을 하지 못해서 코딩이라도 미리 할려고 합니다.위에 코드로 실현이 가능한가요? 아니면 어떤 점을 보완하면 좋을까요?
댓글 1
조회수 186master님의 댓글
master 작성일직접 구동 해보고 문제가 생길 때에 질문해주세요