#include <Wire.h>
#include <ButtonDebounce.h>
#include <Adafruit_NeoPixel.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <RotaryEncoder.h>
#include <L293D.h>
#include <TCA9548A.h>
// Setup Buttons
#define DebounceTime 250 // in milliseconds
ButtonDebounce btn_MuteAll (1, DebounceTime);
ButtonDebounce btn_MuteMic (2, DebounceTime);
ButtonDebounce btn_Mute1 (3, DebounceTime);
ButtonDebounce btn_Mute2 (4, DebounceTime);
ButtonDebounce btn_Mute3 (5, DebounceTime);
ButtonDebounce btn_Source1 (6, DebounceTime);
ButtonDebounce btn_Source2 (7, DebounceTime);
ButtonDebounce btn_Source3 (8, DebounceTime);
ButtonDebounce btn_Source4 (9, DebounceTime);
// Setup WS2812 LEDs
#define LED_DataPin 10
#define NumPixels 9
#define Brightness 50
Adafruit_NeoPixel pixels(NumPixels, LED_DataPin, NEO_GRB + NEO_KHZ800);
//Setup Displays
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3D
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display1(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 display2(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Adafruit_SSD1306 display3(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Setup a RotaryEncoder with 2 steps per latch for the 2 signal input pins:
#define ENCODER_A 31
#define ENCODER_B 30
#define ROTARYSTEPS 2
#define ROTARYMIN 0
#define ROTARYMAX 16
RotaryEncoder encoder(ENCODER_A, ENCODER_B, RotaryEncoder::LatchMode::TWO03);
//Setup L293D Motor Controllers
#define MOTOR1_EN 33
#define MOTOR1_FOR 34
#define MOTOR1_REV 35
#define MOTOR2_EN 36
#define MOTOR2_FOR 37
#define MOTOR2_REV 38
#define MOTOR3_EN 39
#define MOTOR3_FOR 40
#define MOTOR3_REV 41
L293D motor1(MOTOR1_FOR, MOTOR1_REV, MOTOR1_EN);
L293D motor2(MOTOR2_FOR, MOTOR2_REV, MOTOR2_EN);
L293D motor3(MOTOR3_FOR, MOTOR3_REV, MOTOR3_EN);
//Setup I2C Mux
TCA9548A I2CMux;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
I2CMux.begin(Wire);
I2CMux.closeAll();
pixels.begin();
pixels.show(); // Turn OFF all pixels ASAP
pixels.setBrightness(Brightness); //set default brightness
}
void loop() {
// put your main code here, to run repeatedly:
}
Mute All
Mute Mic
Mute 1
Mute 2
Mute 3
Source 1
Source 2
Source 3
Source 4
Motor1 Fwd
Motor1 Rev
Motor2 Fwd
Motor2 Rev
Motor3 Fwd
Motor3 Rev