esmp3/src/esmp3.cpp

68 lines
1.5 KiB
C++

#include <WiFi.h>
#include <ArduinoOTA.h>
#include <SD.h>
#include "spi_master.h"
#include "playlist_manager.h"
#include "controller.h"
#include <Audio.h>
#include "esmp3.h"
#include <Ticker.h>
Controller controller;
Audio audio;
Ticker ticker_save_audio_current_time;
PlaylistManager* pm;
void setup() {
Serial.begin(115200);
WiFi.begin("Schlenz", "1410WischlingenPanda");
Serial.print("Connecting to WiFi...");
while(WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.print("Connected to WiFi. IP address: ");
Serial.println(WiFi.localIP());
ArduinoOTA.begin();
Serial.println("Initializing SPI...");
SPI.begin();
SPI.setHwCs(false);
SPIMaster::initialize();
Serial.print("Initializing SD card...");
SPIMaster::enable_sd();
while(!SD.begin(14, SPI, 25000000)) {
for(int i=0; i<10; i++) {
if(SPI.transfer(0xFF)==0xFF) break;
delay(10);
}
Serial.print(".");
delay(100);
}
Serial.println();
Serial.println("Initializing PlaylistManager...");
pm = new PlaylistManager();
Serial.println("Setting up audio...");
audio.setPinout(I2S_BCLK, I2S_LRC, I2S_DOUT);
audio.setVolume(15);
audio.forceMono(true);
Serial.println("Setting up tickers...");
ticker_save_audio_current_time.attach(5, save_audio_current_time);
Serial.println("Setup finished.");
}
void loop() {
ArduinoOTA.handle();
controller.handle();
audio.loop();
}
void save_audio_current_time() {
pm->set_audio_current_time(audio.getAudioCurrentTime());
}