?>

Hard Copy World

HCW

Q&A

Home > Forum >

Q&A

질문 | 아두이노 소리센서 및 mp3 모듈

페이지 정보

작성자 백경렬 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 작성일18-09-24 23:47 조회126회 댓글1건

본문

#include <Servo.h>
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

Servo myServo;

int led=13;
int threshold = 50;
int sound=0;
int led_value;

void setup() {

  // put your setup code here, to run once:
  myServo.attach(11);
  myServo.write(0);
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  digitalWrite(led,LOW);
  led_value=0;
  mp3_set_serial(Serial);
  delay(1);
  mp3_set_volume(5);
}

void loop() {

  // put your main code here, to run repeatedly:

  sound = analogRead(A0);
  int ValA0 = analogRead(A0);
  Serial.println(ValA0);
  if(sound > threshold){
    led_value != led_value;
    digitalWrite(led, led_value);
    delay(1000);
    led_value =0;
    myServo.write(180);
    delay(1000);
    myServo.write(0);

  }
  if(sound > threshold){
    mp3_play(1);
    delay(60000);
    mp3_next();
    delay(60000);
    mp3_next();
    delay(60000);
    mp3_next();
    delay(60000);
  }



}
일정 수치 이상의 소리감지 후 led가 켜지면서 서보모터와 mp3모듈이 동시에 작동되어야 되는데 잘 안되네요,,, 어디 부분이 문제인거죠? 컴파일과 업로드에는 문제가 없습니다.

댓글목록

최고관리자님의 댓글

최고관리자 쪽지보내기 메일보내기 홈페이지 자기소개 아이디로 검색 전체게시물 작성일

loop() 함수 안에 있는 내용을 보시면,
소리가 threshold 크기 이사이면 LED와 서보모터를 제어합니다. 그리고 이 와중에 delay()를 사용했으므로 약 2초 이상의 시간이 여기에 소요됩니다. 즉 mp3 작업을 하기까지 앞단의 딜레이가 존재합니다. 또한 mp3 플레이 하는 중에도 중간 중간 1분 씩 딜레이가 들어가 있어서 동시에 작동이 안되는 것처럼 보일겁니다. delay() 를 없애고 동작하도록 수정하셔야 합니다.