Introduction: DIY Inventive ART Project Idea With LED Lights and Sound

About: Maker 101; Beginner and intermediate level Maker projects! You can find projects such as "How to" and "DIY" on programmable boards such as Arduino, ESP8266, ESP32 and Raspberry Pi on this channel. The projects…

In this video I will be showing you how to make unique art project at home using LED strip and sound.

Step 1: Project Video

Step 2: Schematic and Gerber

Step 3: Source Code

Source Code:https://github.com/MertArduino/Art-Project-LED-Strip-DFPlayer-Arduino

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

#define NUM_LEDS_PER_STRIP 70
#define BRIGHTNESS  200
#define LED1pin 5
#define LED2pin 6
#define LED3pin 7

const int IR1pin = A0;
const int IR2pin = A1;
const int IR3pin = A2;

CRGB LED1color[NUM_LEDS_PER_STRIP];
CRGB LED2color[NUM_LEDS_PER_STRIP];
CRGB LED3color[NUM_LEDS_PER_STRIP];

SoftwareSerial mySoftwareSerial(10, 11); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);

void setup() 
{
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);
  if (!myDFPlayer.begin(mySoftwareSerial)) {
    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);
  }

  pinMode(IR1pin, INPUT);
  pinMode(IR2pin, INPUT);
  pinMode(IR3pin, INPUT);
  
  myDFPlayer.volume(20);
  myDFPlayer.EQ(DFPLAYER_EQ_CLASSIC);
  myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
  
  FastLED.addLeds<NEOPIXEL, LED1pin>(LED1color, NUM_LEDS_PER_STRIP);
  FastLED.addLeds<NEOPIXEL, LED2pin>(LED2color, NUM_LEDS_PER_STRIP);
  FastLED.addLeds<NEOPIXEL, LED3pin>(LED3color, NUM_LEDS_PER_STRIP);
  FastLED.setBrightness(  BRIGHTNESS );

}

void loop() {
  if(digitalRead(IR1pin) == LOW)
  {
    LED1show();
  }
  if(digitalRead(IR2pin) == LOW)
  {
    LED2show();
  }
  if(digitalRead(IR3pin) == LOW)
  {
    LED3show();
  }
}

void LED1show()
{
  myDFPlayer.play(1);
  for(int i = 0; i < NUM_LEDS_PER_STRIP; i++)
    {
      LED1color[i] = CRGB::Purple;
      FastLED.show();
      LED1color[i] = CRGB::Black;
      delay(100);
    }
      
    for(int i = NUM_LEDS_PER_STRIP-1; i >= 0; i--)
    {
      LED1color[i] = CRGB::Green;
      FastLED.show();
      LED1color[i] = CRGB::Black;
      delay(100);
    }
    myDFPlayer.pause();
}

void LED2show()
{
  myDFPlayer.play(2);
  for(int i = 0; i < NUM_LEDS_PER_STRIP; i++)
    {
      LED2color[i] = CRGB::Purple;
      FastLED.show();
      LED2color[i] = CRGB::Black;
      delay(100);
    }
      
    for(int i = NUM_LEDS_PER_STRIP-1; i >= 0; i--)
    {
      LED2color[i] = CRGB::Green;
      FastLED.show();
      LED2color[i] = CRGB::Black;
      delay(100);
    }
    myDFPlayer.pause();
}

void LED3show()
{
  myDFPlayer.play(3);
  for(int i = 0; i < NUM_LEDS_PER_STRIP; i++)
    {
      LED3color[i] = CRGB::Purple;
      FastLED.show();
      LED3color[i] = CRGB::Black;
      delay(100);
    }
      
    for(int i = NUM_LEDS_PER_STRIP-1; i >= 0; i--)
    {
      LED3color[i] = CRGB::Green;
      FastLED.show();
      LED3color[i] = CRGB::Black;
      delay(100);
    }
    myDFPlayer.pause();
}