Last active
November 8, 2015 13:32
-
-
Save conoro/58a028f7399b4e50619e to your computer and use it in GitHub Desktop.
DoorBell Scream 01
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Extra Halloween code Conor O'Neill 2015 | |
// Note there is a debounce error in here where the doorbell has to be pressed twice. | |
/*************************************************** | |
This is an example for the Adafruit VS1053 Codec Breakout | |
Designed specifically to work with the Adafruit VS1053 Codec Breakout | |
----> https://www.adafruit.com/products/1381 | |
Adafruit invests time and resources providing this open source code, | |
please support Adafruit and open-source hardware by purchasing | |
products from Adafruit! | |
Written by Limor Fried/Ladyada for Adafruit Industries. | |
BSD license, all text above must be included in any redistribution | |
****************************************************/ | |
// include SPI, MP3 and SD libraries | |
#include <SPI.h> | |
#include <Adafruit_VS1053.h> | |
#include <SD.h> | |
// Switch | |
int state = LOW; // the current state of the output pin | |
int reading; // the current reading from the input pin | |
int previous = HIGH; // the previous reading from the input pin | |
long time = 0; // the last time the output pin was toggled | |
long debounce = 200; // the debounce time, increase if the output flickers | |
// define the pins used | |
//#define CLK 13 // SPI Clock, shared with SD card | |
//#define MISO 12 // Input data, from VS1053/SD card | |
//#define MOSI 11 // Output data, to VS1053/SD card | |
// Connect CLK, MISO and MOSI to hardware SPI pins. | |
// See http://arduino.cc/en/Reference/SPI "Connections" | |
// These are the pins used for the breakout example | |
#define BREAKOUT_RESET 9 // VS1053 reset pin (output) | |
#define BREAKOUT_CS 10 // VS1053 chip select pin (output) | |
#define BREAKOUT_DCS 8 // VS1053 Data/command select pin (output) | |
// These are the pins used for the music maker shield | |
#define SHIELD_RESET -1 // VS1053 reset pin (unused!) | |
#define SHIELD_CS 7 // VS1053 chip select pin (output) | |
#define SHIELD_DCS 6 // VS1053 Data/command select pin (output) | |
// These are common pins between breakout and shield | |
#define CARDCS 4 // Card chip select pin | |
// DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt | |
#define DREQ 3 // VS1053 Data request, ideally an Interrupt pin | |
Adafruit_VS1053_FilePlayer musicPlayer = | |
// create breakout-example object! | |
Adafruit_VS1053_FilePlayer(BREAKOUT_RESET, BREAKOUT_CS, BREAKOUT_DCS, DREQ, CARDCS); | |
// create shield-example object! | |
//Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS); | |
void setup() { | |
Serial.begin(9600); | |
Serial.println("Adafruit VS1053 Simple Test"); | |
// Tell BananaPi to go Low and not light LED | |
pinMode(5, OUTPUT); | |
digitalWrite(5, LOW); | |
// Switch | |
pinMode(2, INPUT_PULLUP); | |
if (! musicPlayer.begin()) { // initialise the music player | |
Serial.println(F("Couldn't find VS1053, do you have the right pins defined?")); | |
while (1); | |
} | |
Serial.println(F("VS1053 found")); | |
SD.begin(CARDCS); // initialise the SD card | |
// Set volume for left, right channels. lower numbers == louder volume! | |
musicPlayer.setVolume(20,20); | |
// Timer interrupts are not suggested, better to use DREQ interrupt! | |
//musicPlayer.useInterrupt(VS1053_FILEPLAYER_TIMER0_INT); // timer int | |
// If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background | |
// audio playing | |
musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); // DREQ int | |
} | |
void loop() { | |
reading = digitalRead(2); | |
if (reading == LOW && previous == HIGH && millis() - time > debounce) { | |
if (state == LOW){ | |
state = HIGH; | |
digitalWrite(5, HIGH); | |
musicPlayer.playFullFile("track001.mp3"); | |
delay(10000); | |
digitalWrite(5, LOW); | |
} else { | |
state = LOW; | |
digitalWrite(5, LOW); | |
} | |
time = millis(); | |
} | |
previous = reading; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment