engineer2you
Published © CC BY

Arduino music player with LEDs tutorial

making project playing music with LEDs. Easy project can be completed in 10 minutes!

IntermediateFull instructions provided1 hour4,026
Arduino music player with LEDs tutorial

Things used in this project

Hardware components

UTSOURCE Electronic Parts
UTSOURCE Electronic Parts
×1

Story

Read more

Code

Code snippet #1

Plain text
#include <SD.h>               // need to include the SD library
#define SD_ChipSelectPin 10   //pin10 for Arduino Pro Mini
#include <TMRpcm.h>           //  Lib to play wav file
#include <SPI.h>

TMRpcm tmrpcm;   // create an object for use in this sketch

unsigned long time = 0;
int waveform = 0;
int qtyLED = 0;
int timeLED = 25;

void setup(){
  tmrpcm.speakerPin = 9; //pin 9 for Aduino Pro Mini
  Serial.begin(9600);
  pinMode(17,OUTPUT);
  pinMode(16,OUTPUT);
  pinMode(15,OUTPUT);
  pinMode(14,OUTPUT);
  if (!SD.begin(SD_ChipSelectPin)) {  // see if the card is present and can be initialized:
    Serial.println("SD fail");  
    return;   // don't do anything more if not
  }
  else{   
    Serial.println("SD ok");   
  }
  tmrpcm.play("music.wav"); //the sound file "music" will play each time the arduino powers up, or is reset
  tmrpcm.volume(2);
}

void loop(){
  waveform = OCR1A; //read TIMER1 value, represent for wave form music
  waveform = waveform - 256;  // middle point of volume(2) is 256
  qtyLED = waveform/16;  //q'ty LED need to be ON
  if (qtyLED <= 0){
    qtyLED0();
    delay(timeLED);
  }
  if (qtyLED == 1){
    qtyLED0();
    delay(timeLED);
    qtyLED1();
    delay(timeLED);
  }
  if (qtyLED == 2){
    qtyLED0();
    delay(timeLED);
    qtyLED1();
    delay(timeLED);
    qtyLED2();
    delay(timeLED);
  }
  if (qtyLED == 3){
    qtyLED0();
    delay(timeLED);
    qtyLED1();
    delay(timeLED);
    qtyLED2();
    delay(timeLED);
    qtyLED3();
    delay(timeLED);
  }
  if (qtyLED == 4){
    qtyLED0();
    delay(timeLED);
    qtyLED1();
    delay(timeLED);
    qtyLED2();
    delay(timeLED);
    qtyLED3();
    delay(timeLED);
    qtyLED4();
    delay(timeLED);
  }

  if(Serial.available()){    
    switch(Serial.read()){
    case 'd': tmrpcm.play("music.wav"); break;
    case 'b': tmrpcm.play("BeatIt.wav"); break;
    case 'r': tmrpcm.play("Race_Car.wav"); break;
    case 'p': tmrpcm.pause(); break;
    case '?': if(tmrpcm.isPlaying()){ Serial.println("A wav file is being played");} break;
    case 'S': tmrpcm.stopPlayback(); break;
    case '=': tmrpcm.volume(1); break;
    case '-': tmrpcm.volume(0); break;
    case '0': tmrpcm.quality(0); break;
    case '1': tmrpcm.quality(1); break;
    default: break;
    }
  }
}

void qtyLED1(){
  digitalWrite(17,0);
  digitalWrite(16,0);
  digitalWrite(15,0);
  digitalWrite(14,1);
}
void qtyLED2(){
  digitalWrite(17,0);
  digitalWrite(16,0);
  digitalWrite(15,1);
  digitalWrite(14,1);
}
void qtyLED3(){
  digitalWrite(17,0);
  digitalWrite(16,1);
  digitalWrite(15,1);
  digitalWrite(14,1);
}
void qtyLED4(){
  digitalWrite(17,1);
  digitalWrite(16,1);
  digitalWrite(15,1);
  digitalWrite(14,1);
}
void qtyLED0(){
  digitalWrite(17,0);
  digitalWrite(16,0);
  digitalWrite(15,0);
  digitalWrite(14,0);
}

Credits

engineer2you

engineer2you

24 projects • 93 followers
i'm mechatronics engineer who loves making funny project and sharing for you. See me at: https://www.youtube.com/c/engineer2you

Comments