BASIC4MCU | 질문게시판 | 유아전동차 블루트스 컨트롤+MP3
페이지 정보
작성자 kenneth 작성일2021-01-09 22:13 조회32회 댓글2건본문
안녕하세요. 아두이노 초보입니다.
딸내미 전동차 컨트롤러가 고장나서 아두이노로 작업 중인데요.
릴레이를 이용한 모터 구동(블루투스 연결 어플로 컨트롤) 소스랑,
MP3 구동(푸쉬 버튼 3개로 버튼 누를 때 해당 곡 플레이) 소스를 짜봤는데
따로 따로 업로드하면 잘 동작 하는데 소스를 합쳐서 업로드하면 둘 다 먹통이네요...
아무래도 블루투스 통신에 장애가 생기는 것 같은데 아래 소스를 어떻게 병합해야 되는지 가르침 부탁 드립니다. ^^
모터 구동 소스
#include <SoftwareSerial.h>
SoftwareSerial BTSerial(2, 3);
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
void setup () {
BTSerial.begin(9600);
Serial.begin (9600);
pinMode(IN1, OUTPUT); //모터구동
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
}
void loop () {
if (BTSerial.available()) {
char cmd = (char) BTSerial.read();
Serial.println(cmd);
if ( cmd == 'F') {
digitalWrite(IN1, HIGH); //전진
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
else if ( cmd == 'G') { //좌전진
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if ( cmd == 'I') { //우전진
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else if ( cmd == 'B') { //후진
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
else if ( cmd == 'H') { //좌후진
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if ( cmd == 'J') { //우후진
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else if ( cmd == 'L') { //좌측
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
}
else if ( cmd == 'R') { //우측
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
}
else{
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
}
}
}
MP3 구동 소스
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
SoftwareSerial MP3Module(4, 5);
DFRobotDFPlayerMini MP3Player;
void setup () {
Serial.begin (9600);
MP3Module.begin(9600);
if (!MP3Player.begin(MP3Module)) { // MP3 모듈을 초기화합니다. 초기화에 실패하면 오류를 발생시킵니다.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while (true);
}
delay(1);
MP3Player.volume(15); // 볼륨을 조절합니다. 0~30까지 설정이 가능합니다.
pinMode(A0,INPUT_PULLUP);
pinMode(A1,INPUT_PULLUP);
pinMode(A2,INPUT_PULLUP);
}
void loop ()
{
if(digitalRead(A0)==LOW){
MP3Player.play(2);
}
if(digitalRead(A1)==LOW){
MP3Player.play(1);
}
if(digitalRead(A2)==LOW){
MP3Player.play(3);
}
}
댓글 2
조회수 32master님의 댓글
master 작성일
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>
SoftwareSerial MP3Module(4,5);
DFRobotDFPlayerMini MP3Player;
SoftwareSerial BTSerial(2,3);
//
#define IN1 8
#define IN2 9
#define IN3 10
#define IN4 11
//
void setup(){
pinMode(A0,INPUT_PULLUP); pinMode(A1,INPUT_PULLUP); pinMode(A2,INPUT_PULLUP);
pinMode(IN1,OUTPUT); pinMode(IN2,OUTPUT); pinMode(IN3,OUTPUT); pinMode(IN4,OUTPUT);
Serial.begin(9600);
BTSerial.begin(9600);
MP3Module.begin(9600);
if(!MP3Player.begin(MP3Module)){ // MP3 모듈을 초기화합니다. 초기화에 실패하면 오류를 발생시킵니다.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true);
}
delay(1);
MP3Player.volume(15); // 볼륨을 조절합니다. 0~30까지 설정이 가능합니다.
BTSerial.listen();
}
//
void loop(){
if(BTSerial.available()){
char cmd =(char)BTSerial.read(); Serial.println(cmd);
if( cmd == 'F'){ digitalWrite(IN1,1); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,0); }
else if( cmd == 'G'){ digitalWrite(IN1,1); digitalWrite(IN2,0); digitalWrite(IN3,1); digitalWrite(IN4,0); } //좌전진
else if( cmd == 'I'){ digitalWrite(IN1,1); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,1); } //우전진
else if( cmd == 'B'){ digitalWrite(IN1,0); digitalWrite(IN2,1); digitalWrite(IN3,0); digitalWrite(IN4,0); }
else if( cmd == 'H'){ digitalWrite(IN1,0); digitalWrite(IN2,1); digitalWrite(IN3,1); digitalWrite(IN4,0); } //좌후진
else if( cmd == 'J'){ digitalWrite(IN1,0); digitalWrite(IN2,1); digitalWrite(IN3,0); digitalWrite(IN4,1); } //우후진
else if( cmd == 'L'){ digitalWrite(IN1,0); digitalWrite(IN2,0); digitalWrite(IN3,1); digitalWrite(IN4,0); }
else if( cmd == 'R'){ digitalWrite(IN1,0); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,1); }
else{ digitalWrite(IN1,0); digitalWrite(IN2,0); digitalWrite(IN3,0); digitalWrite(IN4,0); }
}
//
if(digitalRead(A0)==0){ MP3Player.play(2); }
if(digitalRead(A1)==0){ MP3Player.play(1); }
if(digitalRead(A2)==0){ MP3Player.play(3); }
}
kenneth님의 댓글
kenneth
와우~ 잘되네요... 너무 감사드려요. 새해 복 많이 받으세요 ^^