#include #include #include #include #include #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) #define CARDCS 4 // Card chip select pin #define DREQ 3 // VS1053 Data request, ideally an Interrupt pin Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS); #include "Adafruit_WS2801.h" uint8_t START_DATA_PIN = 2; uint8_t START_CLOCK_PIN = 5; uint16_t START_NUM_LEDS = 60; Adafruit_WS2801 startLED = Adafruit_WS2801(START_NUM_LEDS, START_DATA_PIN, START_CLOCK_PIN); uint8_t W_DATA_PIN = 8; uint8_t W_CLOCK_PIN = 10; uint16_t W_NUM_LEDS = 9; Adafruit_WS2801 wLED = Adafruit_WS2801(W_NUM_LEDS, W_DATA_PIN, W_CLOCK_PIN); #include //NeoPixel Setup #define NEO_PIN 9 #define BRIGHTNESS 50 Adafruit_NeoPixel ring = Adafruit_NeoPixel(24, NEO_PIN, NEO_GRBW + NEO_KHZ800); #define CAP1188_MOSI -4 #define CAP1188_MISO -5 #define CAP1188_CLK -6 #define CAP1188_RESET -2 #define CAP1188_CS -3 Adafruit_CAP1188 cap = Adafruit_CAP1188(); #define buttonPin 13 int buttonRead = 0; int buttonState = 0; int mode = 0; int randWeather = 0; int currMode = 0; int lastMode = 0; void setup() { //Setup Serial.begin(115200); Serial.println("start"); ring.begin(); startLED.begin(); wLED.begin(); ring.setBrightness(BRIGHTNESS); randomSeed(analogRead(0)); randWeather = random(32, 100); for (int i = 0; i < START_NUM_LEDS; i++) { //turn off all LEDs startLED.setPixelColor(i, Color(0, 0, 0)); wLED.setPixelColor(i, Color(0, 0, 0)); ring.setPixelColor(i, ring.Color(0, 0, 0)); startLED.show(); wLED.show(); ring.show(); } for (int i = 0; i < START_NUM_LEDS; i++) { startLED.setPixelColor(i, Color(128, 0, 128)); ring.setPixelColor(i, ring.Color(128, 0, 128)); ring.show(); startLED.show(); delay(30); } delay(400); for (int i = START_NUM_LEDS - 1; i > -1; i--) { startLED.setPixelColor(i, Color(0, 0, 0)); ring.setPixelColor(i, ring.Color(0, 0, 0)); ring.show(); startLED.show(); delay(30); } Serial.println("Adafruit VS1053 Simple Test"); 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")); if (!SD.begin(CARDCS)) { Serial.println(F("SD failed, or not present")); while (1); // don't do anything more } musicPlayer.setVolume(1, 1); musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT); Serial.println(F("Playing track 001")); musicPlayer.playFullFile("track002.mp3"); if (!cap.begin()) { Serial.println("CAP1188 not found"); while (1); } Serial.println("CAP1188 found!"); cap.writeRegister(0x2A, 0x80); } // End Setup void loop() { uint8_t touched = cap.touched(); for (uint8_t i = 0; i < 4; i++) { if (touched & (1 << i)) { mode = (i + 1); } } buttonRead = digitalRead(buttonPin); // Button if (buttonRead == HIGH) { if (buttonState == 0) { randWeather = random(32, 100); Serial.println(randWeather); buttonState = 1; } } else { buttonState = 0; } // End Button switch (mode) { case 1: // Weather for (int i = 5; i < W_NUM_LEDS; i++) { wLED.setPixelColor(i, Color(0, 0, 0)); } currMode = mode; if (currMode != lastMode) { musicPlayer.playFullFile("track003.mp3"); lastMode = currMode; } else {} Serial.println(randWeather); if (randWeather >= 32 && randWeather <= 50) { for (int i = 0; i < 5; i++) { wLED.setPixelColor(i, Color(20, 20, 255)); } Serial.println("<50"); } if (randWeather >= 51 && randWeather <= 65) { for (int i = 0; i < 5; i++) { wLED.setPixelColor(i, Color(5, 255, 5)); } Serial.println("<65"); } if (randWeather >= 66 && randWeather <= 80) { for (int i = 0; i < 5; i++) { wLED.setPixelColor(i, Color(255, 51, 10)); } Serial.println("<80"); } if (randWeather >= 81 && randWeather <= 100) { for (int i = 0; i < 5; i++) { wLED.setPixelColor(i, Color(255, 5, 0)); } Serial.println("<100"); } break; case 2: // Case 2 for (int i = 0; i < 5; i++) { wLED.setPixelColor(i, Color(0, 0, 0)); } currMode = mode; if (currMode != lastMode) { musicPlayer.playFullFile("track004.mp3"); lastMode = currMode; } else {} for (int i = 5; i < W_NUM_LEDS; i++) { wLED.setPixelColor(i, Color(20, 20, 255)); } break; case 3: // Case 3 currMode = mode; if (currMode != lastMode) { musicPlayer.playFullFile("track005.mp3"); lastMode = currMode; } else {} for (int i = 0; i < W_NUM_LEDS; i++) { wLED.setPixelColor(i, Color(0, 0, 0)); } break; case 4: // Case 4 currMode = mode; if (currMode != lastMode) { musicPlayer.playFullFile("track006.mp3"); lastMode = currMode; } else {} for (int i = 0; i < W_NUM_LEDS; i++) { wLED.setPixelColor(i, Color(0, 0, 0)); } break; } wLED.show(); } // End Loop uint32_t Color(byte r, byte g, byte b) { uint32_t c; c = r; c <<= 8; c |= g; c <<= 8; c |= b; return c; }