#include <TeensyDMX.h> // DMX library
#include <Audio.h>
#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include <SerialFlash.h>
#include <Encoder.h>
namespace teensydmx = ::qindesign::teensydmx;
// GUItool: begin automatically generated code
AudioPlaySdWav playSdWav1; //xy=220,240
AudioPlaySdWav playSdWav2; //xy=222,302
AudioMixer4 mixer1; //xy=434,271
AudioOutputI2S i2s1; //xy=632,265
AudioConnection patchCord1(playSdWav1, 0, mixer1, 0);
AudioConnection patchCord2(playSdWav1, 1, mixer1, 1);
AudioConnection patchCord3(playSdWav2, 0, mixer1, 2);
AudioConnection patchCord4(playSdWav2, 1, mixer1, 3);
AudioConnection patchCord5(mixer1, 0, i2s1, 0);
AudioConnection patchCord6(mixer1, 0, i2s1, 1);
AudioControlSGTL5000 sgtl5000_1; //xy=372,166
// GUItool: end automatically generated code
#define SDCARD_CS_PIN 10 // SD card pins
#define SDCARD_MOSI_PIN 11
#define SDCARD_MISO_PIN 12
#define SDCARD_SCK_PIN 13
// Any pins used under the audio card seem to be corrupted with regards output
#define startbutton 31
#define stopbutton 32
#define encoderSW 33
Encoder encoderknob(34, 35);
long encoderposition = -999;
long newencoderposition;
constexpr uint8_t kTXPin = 36; // Pin for enabling or disabling the DMX board
teensydmx::Sender dmxTx{Serial7}; // Create the DMX sender on Serial7.
//----------------------------------------------------------------------------------------------------------------
void setup() {
pinMode(startbutton, INPUT_PULLUP);
pinMode(stopbutton, INPUT_PULLUP);
pinMode(encoderSW, INPUT_PULLUP);
pinMode(kTXPin, OUTPUT);
digitalWriteFast(kTXPin, HIGH); // Switch on the DMX board
Serial.begin(115200);
Wire.begin();
//dmxTx.begin();
AudioMemory(8); // Audio setup
sgtl5000_1.enable();
sgtl5000_1.volume(0.5);
//---------------- SD CARD ---------------
SPI.setMOSI(SDCARD_MOSI_PIN); // SD card setup
SPI.setSCK(SDCARD_SCK_PIN);
if (!(SD.begin(SDCARD_CS_PIN)))
{
while (1)
{
Serial.println(F("Unable to access the SD card")); // Flash the cistern leds if SD card is unavailable
delay(1000);
}
}
Serial.println(F("ONLINE....."));
playSdWav1.play("SDTEST1.WAV");
dmxTx.set(4, 255); // Turn the light on
delay(500);
dmxTx.set(3, 255); // Make it blue
delay(500);
dmxTx.begin();
// uint8_t data[3]{0x44, 0x88, 0xcc};
// dmxTx.set(10, data, 3); // Set channels 10-12 to the 3 values in 'data'
}
//################################################################################################################
void loop() {
//-------- Check Address rotary encoder-------------------------
newencoderposition = encoderknob.read();
if (newencoderposition != encoderposition) {
Serial.print("Encoder = ");
Serial.println(newencoderposition);
encoderposition = newencoderposition;
}
//----------- Buttons -------------
if (digitalRead(startbutton) == LOW) {
Serial.println(F("START"));
do {} while (digitalRead(startbutton) == LOW);
}
if (digitalRead(stopbutton) == LOW) {
Serial.println(F("STOP"));
do {} while (digitalRead(stopbutton) == LOW);
}
if (digitalRead(encoderSW) == LOW) {
Serial.println(F("ENCODER BUTTON"));
do {} while (digitalRead(encoderSW) == LOW);
}
}
//##############################################################################################################