/*
Acryl Sign
by smi1100 - 12/09/2022
pins:
LED: 6
Buttons: 7, 8, 9, 10
DFPlayerMini: 11, 12
libraries:
- Adafruit_NeoPixel.h
- Arduino.h
- SoftwareSerial.h
- DFRobotDFPlayerMini.h
*/
// -------- DFPlayerMini --------
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(11, 12); // RX, TX
DFRobotDFPlayerMini myDFPlayer;
// -------- Neopixel --------
#include <Adafruit_NeoPixel.h>
#define LED_PIN 6 // Which pin on the Arduino is connected to the NeoPixels?
#define LED_COUNT 8 // How many NeoPixels are attached to the Arduino?
Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
// -------- Buttons --------
const int buttonPin_tiger = 7;
boolean newButtonState_tiger;
const int buttonPin_death_star = 8;
boolean newButtonState_death_star;
const int buttonPin_front = 9;
boolean oldButtonState_front = HIGH;
boolean newButtonState_front;
int strip_color_front = 1;
const int buttonPin_back = 10;
boolean oldButtonState_back = HIGH;
boolean newButtonState_back;
int strip_color_back = 1;
void setup()
{
delay(500);
// -------- DFPlayerMini --------
mySoftwareSerial.begin(9600);
Serial.begin(115200);
delay(3000);
Serial.println();
Serial.println("Initializing DFPlayer ... ");
if (!myDFPlayer.begin(mySoftwareSerial,true,false))
{
Serial.println("Unable to begin:");
Serial.println("1.Please recheck the connection");
Serial.println("2.Please insert the SD card");
while(true)
{
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println("DFPlayer Mini online.");
myDFPlayer.volume(20); //Set volume value. From 0 to 30
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD);
Serial.print(" MP3 Player Status: ");Serial.println(myDFPlayer.readState()); //read mp3 state
Serial.print(" MP3 Player Volume: ");Serial.println(myDFPlayer.readVolume()); //read current volume
Serial.print(" MP3 Player EQ: ");Serial.println(myDFPlayer.readEQ()); //read EQ setting
Serial.print(" MP3 Player on SD: ");Serial.println(myDFPlayer.readFileCounts()); //read all file counts in SD card
int AnzahlDateien_mp3 = myDFPlayer.readFileCountsInFolder("mp3");
if (AnzahlDateien_mp3 == -1) Serial.println("Der Ordner enth\u00e4lt keine Musikdateien");
else Serial.println((" - ") + String(AnzahlDateien_mp3) + " Dateien im Ordner mp3");
if (myDFPlayer.available())
{
printDetail(myDFPlayer.readType(), myDFPlayer.read()); //Print the detail message from DFPlayer to handle different errors and states.
}
myDFPlayer.playMp3Folder(1);
delay(1000);
// -------- Neopixel --------
strip.begin();
strip.show();
strip.setBrightness(255); // Set BRIGHTNESS to about 1/5 (max = 255)
// -------- Buttons --------
pinMode(buttonPin_front, INPUT_PULLUP);
pinMode(buttonPin_back, INPUT_PULLUP);
pinMode(buttonPin_tiger, INPUT_PULLUP);
pinMode(buttonPin_death_star, INPUT_PULLUP);
Serial.println("Setup complete");
Serial.println("");
delay(500);
}
void loop()
{
// -------- Button front --------
newButtonState_front = digitalRead(buttonPin_front);
if((newButtonState_front == LOW) && (oldButtonState_front == HIGH)) // Button not pressed = LOW
{
delay(20); // Short delay to debounce button.
newButtonState_front = digitalRead(buttonPin_front); // Check if button is still low after debounce.
if(newButtonState_front == LOW) // Yes, still low
{
if(strip_color_front > 9) strip_color_front = 1;
Serial.print("strip color front number: "); Serial.println(strip_color_front);
switch (strip_color_front)
{
case 1:
Serial.println("Strip color front RED");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 2:
Serial.println("Strip color front GREEN");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 0, 255, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 3:
Serial.println("Strip color front BLUE");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 0, 0, 255); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 4:
Serial.println("Strip color front WHITE");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 255, 255); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 5:
Serial.println("Strip color front PINK");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 20, 147); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 6:
Serial.println("Strip color front YELLOW");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 215,0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 7:
Serial.println("Strip color front OFF");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 0, 0,0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 8:
Serial.println("Strip color front rainbow");
Serial.println("");
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256)
{
strip.rainbow(firstPixelHue);
strip.show();
Serial.print("firstPixelHue: ");Serial.println(firstPixelHue);
delay(10);
if (firstPixelHue == 327168) firstPixelHue = 0;
newButtonState_front = digitalRead(buttonPin_front);
newButtonState_back = digitalRead(buttonPin_back);
if(newButtonState_front == HIGH || newButtonState_back == HIGH)
{
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
strip_color_back = 1;
break;
}
}
break;
case 9:
Serial.println("Strip color front color wipe");
Serial.println("");
int stopper = 0;
while (stopper == 0)
{
Serial.print("Stopper: ");Serial.println(stopper);
for(int i=0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i, 255, 0, 0);
strip.show();
newButtonState_front = digitalRead(buttonPin_front);
newButtonState_back = digitalRead(buttonPin_back);
if(newButtonState_front == HIGH || newButtonState_back == HIGH)
{
stopper = 1;
break;
}
delay(200);
}
for(int i=0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i, 0, 255, 0);
strip.show();
newButtonState_front = digitalRead(buttonPin_front);
newButtonState_back = digitalRead(buttonPin_back);
if(newButtonState_front == HIGH || newButtonState_back == HIGH)
{
stopper = 1;
break;
}
delay(200);
}
for(int i=0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i, 0, 0, 255);
strip.show();
newButtonState_front = digitalRead(buttonPin_front);
newButtonState_back = digitalRead(buttonPin_back);
if(newButtonState_front == HIGH || newButtonState_back == HIGH)
{
stopper = 1;
break;
}
delay(200);
}
}
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
strip_color_back = 1;
break;
} // end of switch
strip_color_front++;
}
}
oldButtonState_front = newButtonState_front;
// -------- Button back --------
newButtonState_back = digitalRead(buttonPin_back);
if((newButtonState_back == LOW) && (oldButtonState_back == HIGH))
{
delay(20);
newButtonState_back = digitalRead(buttonPin_back);
if(newButtonState_back == LOW)
{
if(strip_color_back > 7) strip_color_back = 1;
Serial.print("strip color back number: "); Serial.println(strip_color_back);
switch (strip_color_back)
{
case 1:
Serial.println("Strip color back RED");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 0, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 2:
Serial.println("Strip color back GREEN");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 0, 255, 0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 3:
Serial.println("Strip color back BLUE");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 0, 0, 255); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 4:
Serial.println("Strip color back WHITE");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 255, 255); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 5:
Serial.println("Strip color back PINK");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 20, 147); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 6:
Serial.println("Strip color back YELLOW");
Serial.println("");
for (int i = 4; i <= 7;i++)
{
strip.setPixelColor(i, 255, 215,0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
case 7:
Serial.println("Strip color front OFF");
Serial.println("");
for (int i = 0; i <= 3;i++)
{
strip.setPixelColor(i, 0, 0,0); //strip.setPixelColor(n, red, green, blue);
}
strip.show();
break;
}
strip_color_back++;
}
}
oldButtonState_back = newButtonState_back;
// -------- Button death star --------
newButtonState_death_star = digitalRead(buttonPin_death_star);
if(newButtonState_death_star == HIGH)
{
delay(20);
newButtonState_death_star = digitalRead(buttonPin_death_star);
Serial.println("");
Serial.println("------------------------");
Serial.println("Star Wars button pressed");
if(newButtonState_death_star == HIGH)
{
Serial.println("MP3 Star Wars INTRO playing");
myDFPlayer.playMp3Folder(2);
delay(1000);
for (int j = 0; j < 120; j++)
{
strip.setBrightness(j);
Serial.print("Death Star brightness = "); Serial.println(j);
for (int i = 4; i < 8; i++)
{
strip.setPixelColor(i, 255, 255, 255);
}
strip.show();
delay(130);
}
Serial.println("MP3 Star Wars ALARM playing");
myDFPlayer.playMp3Folder(3);
delay(1000);
delay(4000);
Serial.println("MP3 Star Wars FIRE playing");
myDFPlayer.playMp3Folder(4);
delay(1000);
delay(3000);
for (int i = 0; i < 4; i++)
{
strip.setPixelColor(i, 0, 255, 0);
}
strip.show();
delay(6000);
strip.clear();
strip.show();
}
}
// -------- Button tiger --------
newButtonState_tiger = digitalRead(buttonPin_tiger);
if(newButtonState_tiger == HIGH)
{
delay(20);
newButtonState_tiger = digitalRead(buttonPin_tiger);
Serial.println("");
Serial.println("------------------------");
Serial.println("Tiger button pressed");
if(newButtonState_tiger == HIGH)
{
strip.clear();
strip.show();
delay (5000);
Serial.println("MP3 Cat playing");
myDFPlayer.playMp3Folder(5);
delay(1000);
Serial.println("MP3 Cat playing");
myDFPlayer.playMp3Folder(5);
delay(1000);
delay(5000);
for (int i = 0; i < 4; i++)
{
strip.setPixelColor(i, 0, 0, 255);
}
strip.show();
Serial.println("MP3 Tiger playing");
myDFPlayer.playMp3Folder(6);
delay(1000);
delay(4000);
for (int i = 4; i < 8; i++)
{
strip.setPixelColor(i, 255, 0, 0);
}
strip.show();
}
}
}
void colorWipe(uint32_t color, int wait)
{
for(int i=0; i<strip.numPixels(); i++)
{
strip.setPixelColor(i, color);
strip.show();
delay(wait);
}
}
void printDetail(uint8_t type, int value)
{
switch (type)
{
case TimeOut:
Serial.println(F("Time Out!"));
break;
case WrongStack:
Serial.println(F("Stack Wrong!"));
break;
case DFPlayerCardInserted:
Serial.println(F("Card Inserted!"));
break;
case DFPlayerCardRemoved:
Serial.println(F("Card Removed!"));
break;
case DFPlayerCardOnline:
Serial.println(F("Card Online!"));
break;
case DFPlayerUSBInserted:
Serial.println("USB Inserted!");
break;
case DFPlayerUSBRemoved:
Serial.println("USB Removed!");
break;
case DFPlayerPlayFinished:
Serial.print(F("Number:"));
Serial.print(value);
Serial.println(F(" Play Finished!"));
break;
case DFPlayerError:
Serial.print(F("DFPlayerError:"));
switch (value)
{
case Busy:
Serial.println(F("Card not found"));
break;
case Sleeping:
Serial.println(F("Sleeping"));
break;
case SerialWrongStack:
Serial.println(F("Get Wrong Stack"));
break;
case CheckSumNotMatch:
Serial.println(F("Check Sum Not Match"));
break;
case FileIndexOut:
Serial.println(F("File Index Out of Bound"));
break;
case FileMismatch:
Serial.println(F("Cannot Find File"));
break;
case Advertise:
Serial.println(F("In Advertise"));
break;
default:
break;
}
break;
default:
break;
}
}
Comments
Please log in or sign up to comment.