BASIC4MCU | 질문게시판 | 답변 : 블루투스와 mp3모듈 질문있습니다
페이지 정보
작성자 master 작성일2018-12-04 16:52 조회9,712회 댓글1건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=6270
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-04 오후 4:55:38// by Ok-Hyun Park//메가1개와 나노 3개를 이용해서 블루투스 통신을 이용하여 전류의 세기에 따라 알림을 주는 제품을 만드려고합니다.전류가 0.5암페어를 넘어갈 때,다른 부분(엘이디,진동)은 작동이 잘되는데 mp3파일이 실행이 안되는데 무슨문제일까요?!부품은 메가1개랑 나노3개,DFPlayer모듈 쓰고 있습니다.블루투스를 메가에 serial1~3까지 쓰고있고,mp3플레이어를 serial0에 연결했습니다..//#include <DFPlayer_Mini_Mp3.h>//int LED2=7; // 초음파센서 on/off확인 초록int LED1=8; // 전류 1번 on/ off 확인int LED3=9; // 전류 2번 on/ off 확인int LED4=10; // 전류 3번 on/ off 확인int vib1=3,vib2=2,vib3=4; // 진동센서int echo=6,trig=5; // 초음파 센서의 핀번호를 설정한다.int button1=11,button2=12,button3=13; // 스위치의 핀번호 설정//char sig1,sig2,sig3;int state1=0,amstate1=0;int state2=0,amstate2=0;int state3=0,amstate3=0;//void setup(){Serial.begin(9600); Serial1.begin(9600); Serial2.begin(9600); Serial3.begin(9600);mp3_set_serial(Serial); delay(1); mp3_set_volume(30);pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED4,OUTPUT);pinMode(trig,OUTPUT); pinMode(echo,INPUT);pinMode(button1,INPUT_PULLUP); pinMode(button2,INPUT_PULLUP); pinMode(button3,INPUT_PULLUP);}//void loop(){if(Serial1.available()>0){ // 1번 블루투스sig1=Serial1.read();if(sig1=='c'){ state1=0; } // 나노에서 버튼을 누르면 c가 입력된다.아스키코드 99if(sig1=='d'){ state1=1; } // 나노에서 버튼을 누르면 d가 입력된다.아스키코드 100if(sig1=='e'){ amstate1=1; } // 전류가 0.5Amp 이상이면 나노에서 e를 보냄.아스키코드 101if(sig1=='f'){ amstate1=0; } // 전류가 0.5Amp 이하이면 나노에서 f를 보냄.아스키 코드 102}if(Serial2.available()>0){ // 2번 블루투스sig2=Serial2.read();if(sig2=='h'){ state2=0; } // 나노에서 버튼을 누르면 h가 입력된다.아스키코드 104if(sig2=='i'){ state2=1; } // 나노에서 버튼을 누르면 i가 입력된다.아스키코드 105 i,j일때 불이 꺼짐=전류가 흐름if(sig2=='j'){ amstate2=1; } // 전류가 0.5Amp 이상이면 나노에서 j를 보냄.아스키코드 106if(sig2=='k'){ amstate2=0; } // 전류가 0.5Amp 이하이면 나노에서 k를 보냄.아스키 코드 107}if(Serial3.available()>0){ // 3번 블루투스sig3=Serial3.read();if(sig3=='m'){ state3=0; } // 나노에서 버튼을 누르면 m가 입력된다.아스키코드 109if(sig3=='n'){ state3=1; } // 나노에서 버튼을 누르면 n가 입력된다.아스키코드 110 i,j일때 불이 꺼짐=전류가 흐름if(sig3=='o'){ amstate3=1; } // 전류가 0.5Amp 이상이면 나노에서 o를 보냄.아스키코드 111if(sig3=='p'){ amstate3=0; } // 전류가 0.5Amp 이하이면 나노에서 p를 보냄.아스키 코드 112}//delay(100);digitalWrite(trig,1); delayMicroseconds(10); digitalWrite(trig,0);unsigned long duration=pulseIn(echo,1);float distance=((340.0*(float)duration)/10000.)/2.;//if(distance>=0.01&&distance<=15.00){digitalWrite(LED2,1); // 초록불 들어옴//if(state1==1&&amstate1==1){ digitalWrite(LED1,0); analogWrite(vib1,80); mp3_play(1); } // 전류 0.5Amp이상 // 불꺼짐=전류흐름 //진동울림 //mp3 1번파일 재생else { digitalWrite(LED1,1); analogWrite(vib1, 0); } // 전류 0.5 이하 // 불켜짐=전류제어 // 진동 안울림//if(state2==1&&amstate2==1){ digitalWrite(LED3,0); analogWrite(vib2,80); } // 전류 0.5Amp이상else { digitalWrite(LED3,1); analogWrite(vib2, 0); } // 전류 0.5 이하//if(state3==1&&amstate3==1){ digitalWrite(LED4,0); analogWrite(vib3,80); } // 전류 0.5Amp이상else { digitalWrite(LED4,1); analogWrite(vib3, 0); } // 전류 0.5 이하//if(digitalRead(button1)==0){ Serial1.write(103); delay(500); } // 버튼을 누르면 g를 나노에 보내줌if(digitalRead(button2)==0){ Serial2.write(108); delay(500); } // 버튼을 누르면 l를 나노에 보내줌if(digitalRead(button3)==0){ Serial3.write(113); delay(500); } // 버튼을 누르면 q를 나노에 보내줌}else{ // 거리가 15이상이면 초록 LED불켜짐.digitalWrite(LED2,0); digitalWrite(LED1,0); digitalWrite(LED3,0); digitalWrite(LED4,0);analogWrite(vib1,0); analogWrite(vib2,0); analogWrite(vib3,0); mp3_stop();}}
테스트는 간단한 코드로 하세요
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-12-04 오후 4:57:41// by Ok-Hyun Park//#include <DFPlayer_Mini_Mp3.h>//void setup(){Serial.begin(9600);mp3_set_serial(Serial); delay(1); mp3_set_volume(30);}//void loop(){mp3_play(1); // mp3 1번파일 재생delay(3000);mp3_stop();delay(3000);}
댓글 1
조회수 9,712뾰옹상님의 댓글
뾰옹상 작성일mp3만 했을 때는 되는데 이프문 안에 넣어서 재생을 하면 안되더라구요,, 무슨 문제일까용