메이킹 일지 (마무리 완료)/음성 장난감 총 (完)

음성이 나오는 장난감 총 - 1. 회로 구성 및 코딩

  • -

 

이번에는 단순합니다. 제목 그대로 제작을 목표로 했습니다.

 

그런데 이제 실제 BB탄 에어건에 들어가게 만들려고 합니다.

 

 

그러면 당연히 안에 들어갈 수 있을정도로 간략화시켜서 제작해야합니다.

 

기존의 아두이노 우노를 활용한 DFPlayer는 진행해본 경험이 있었지만

 

2021.09.20 - [메이킹 일지 (마무리 완료)/Ammonomicon (完)] - Ammonomicon 프로젝트 - 3. 회로 정리 및 케이스 모델링, 데코레이션

 

Ammonomicon 프로젝트 - 3. 회로 정리 및 케이스 모델링, 데코레이션

이전 게시글 : https://bker001.tistory.com/113 Ammonomicon 프로젝트 - 2. 한무 코딩, 음원구하기 이전 게시글 : https://bker001.tistory.com/112?category=1049458 Ammonomicon 프로젝트 - 1. 재료 파밍, 전선 연결 이번 프로젝

bker001.tistory.com

 

Nano를 활용한 DFPlayer는 활용해본 경험이 없었기에 이번에는 공부를 해야했습니다.

그래서 한참동안 찾아보고 알아본 회로가 이렇게 됩니다.

 

 

찾아보니까 RX선에만 10K옴을 추가해서 연결하면 전혀 문제가 없다는 것을 확인할 수 있어서 좋았습니다.

따라서 이 회로에서는 릴레이, LED, 스위치 2개, DFPlayer, 스피커까지 기능을 구현해놨습니다.

 

의외로 아두이노 나노가 잘 돌아가는 것 같아서 코딩까지 진행했습니다.

일단 이전의 프로젝트에서 사용한 switch문을 활용해서 짜봤습니다. 

 

#include "DFRobotDFPlayerMini.h"
#include "SoftwareSerial.h"
#include <SPI.h>


SoftwareSerial mySoftwareSerial (3, 2);
DFRobotDFPlayerMini myDFPlayer;
int buttonPin1 = 5;
int buttonPin2 = 6;
int led = 4;
int Mode1 = 0;
int Mode2 = 0;

void setup () {
  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  pinMode(4, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(buttonPin1, HIGH);
  digitalWrite(buttonPin2, HIGH);
  mySoftwareSerial.begin(9600);
  myDFPlayer.begin(mySoftwareSerial);
  myDFPlayer.volume(28); // 볼륨 1~30
//  myDFPlayer.play(1); 0001번을 재생
//  delay(3500); 3.5초간 재생
  Serial.begin(9600);
}


void loop () {
  boolean play_state1 = digitalRead(5); // Pin2가 나와 연결
  boolean play_state2 = digitalRead(6);
  if (play_state2 == HIGH){ // 페이스멜터
    Mode1++;
    switch(Mode1 % 3){
    case 0:
     myDFPlayer.play(6);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(4, LOW);
     Mode1 = 0;
     break;
    case 1:
     myDFPlayer.play(2);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(4, LOW);
     break;
    case 2:
     myDFPlayer.play(4);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(4, LOW);

     break;
    }
  }
  if (Mode1 == 0 && play_state1 == HIGH){
     myDFPlayer.play(1);
     digitalWrite(7, HIGH);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(7, LOW);
     digitalWrite(4, LOW);
    }
  if (Mode1 == 1 && play_state1 == HIGH){
     myDFPlayer.play(3);
     digitalWrite(7, HIGH);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(7, LOW);
     digitalWrite(4, LOW);
    }
  if (Mode1 == 2 && play_state1 == HIGH){
     myDFPlayer.play(5);
     digitalWrite(7, HIGH);
     digitalWrite(4, HIGH);
     delay(200);
     digitalWrite(7, LOW);
     digitalWrite(4, LOW);
    }
  else {}
}

 

5번 버튼과 6번 버튼 중 하나는 모드를 변경하고, 하나는 모드에 따라서 소리가 다르게 나오는 것을 구현했습니다.

 

DFPlayer로 아두이노 나노로 연결하는 방법을 찾으시던 분들에게 이 글이 조금 도움이 되었으면 합니다.

 

다음은 실제 회로 제작 및 확인 글이 됩니다.

 

반응형
Contents

포스팅 주소를 복사했습니다!

이 글이 도움이 되었다면 추천 부탁드립니다!