2016-07-15 11:37:39 +00:00
|
|
|
#include <Adafruit_NeoPixel.h>
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 11:37:39 +00:00
|
|
|
// Currently always asume with 2 pedals
|
|
|
|
//8 LEDs and Pin is 11
|
|
|
|
Adafruit_NeoPixel leds = Adafruit_NeoPixel(8, 11, NEO_GRB + NEO_KHZ800);
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
uint16_t gdef = 0;
|
2016-07-19 19:46:14 +00:00
|
|
|
uint16_t rdef = 50;
|
|
|
|
uint16_t bdef = 150;
|
2016-07-15 11:37:39 +00:00
|
|
|
|
|
|
|
bool oldValues[8] = {
|
|
|
|
1, 1, 1, 1, 1, 1, 1, 1
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
//byte counter;
|
|
|
|
byte CLOCK = 248;
|
|
|
|
byte START = 250;
|
|
|
|
byte CONTINUE = 251;
|
|
|
|
byte STOP = 252;
|
2016-07-15 11:37:39 +00:00
|
|
|
|
|
|
|
uint8_t pins[8] = {
|
|
|
|
17, 16, 15, 14, 2, 4, 3, 5
|
|
|
|
};
|
2015-11-20 16:00:38 +00:00
|
|
|
int tempState = 1;
|
|
|
|
int time = 0;
|
|
|
|
int bar = 1;
|
|
|
|
int pedalNote = 10;
|
|
|
|
int clearNote = 9;
|
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
void tick8() {
|
2015-11-20 16:00:38 +00:00
|
|
|
if (time == 24)
|
2016-07-15 11:37:39 +00:00
|
|
|
time = 0;
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
|
|
|
|
if (bar >= 8)
|
2016-07-15 11:37:39 +00:00
|
|
|
bar = 0;
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
if (time == 0) {
|
|
|
|
for (uint16_t i = 0; i < leds.numPixels(); i++) {
|
|
|
|
leds.setPixelColor(i, gdef, rdef, bdef);
|
|
|
|
}
|
|
|
|
leds.setPixelColor(bar, 255, 255, 255);
|
|
|
|
leds.show();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (time == 0)
|
|
|
|
bar++;
|
|
|
|
time++;
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void tickSimple() {
|
|
|
|
|
|
|
|
if (time == 24)
|
|
|
|
time = 0;
|
|
|
|
|
|
|
|
|
|
|
|
if (bar >= 4)
|
|
|
|
bar = 0;
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
|
|
|
|
if ((time == 0) && (bar == 0)) {
|
|
|
|
leds.setPixelColor(0, 0, 0, 255);
|
|
|
|
leds.setPixelColor(1, 0, 0, 255);
|
|
|
|
leds.show();
|
2016-07-15 12:44:33 +00:00
|
|
|
}
|
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
if (time == 3) {
|
|
|
|
leds.setPixelColor(0, 0, 0, 0);
|
|
|
|
leds.setPixelColor(1, 0, 0, 0);
|
2016-07-15 12:44:33 +00:00
|
|
|
leds.show();
|
|
|
|
}
|
|
|
|
|
2016-07-15 18:33:00 +00:00
|
|
|
if ((time == 0) && (bar != 0)) {
|
|
|
|
leds.setPixelColor(0, 0, 255, 0);
|
|
|
|
leds.setPixelColor(1, 0, 255, 0);
|
2016-07-15 12:44:33 +00:00
|
|
|
leds.show();
|
|
|
|
}
|
2016-07-15 18:33:00 +00:00
|
|
|
|
2016-07-15 11:37:39 +00:00
|
|
|
if (time == 0)
|
2016-07-15 18:33:00 +00:00
|
|
|
bar++;
|
2015-11-20 16:00:38 +00:00
|
|
|
time++;
|
2016-07-15 18:33:00 +00:00
|
|
|
|
2015-11-20 16:00:38 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void goClock()
|
|
|
|
{
|
|
|
|
time = 0;
|
|
|
|
bar = 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
void stopClock()
|
|
|
|
{
|
2016-07-15 18:33:00 +00:00
|
|
|
for (uint16_t i = 0; i < leds.numPixels(); i++) {
|
|
|
|
leds.setPixelColor(i, gdef, rdef, bdef);
|
|
|
|
}
|
|
|
|
leds.show();
|
2015-11-20 16:00:38 +00:00
|
|
|
}
|
|
|
|
|
2016-07-15 11:37:39 +00:00
|
|
|
|
|
|
|
void RealTimeSystem(byte realtimebyte) {
|
|
|
|
if (realtimebyte == 248) {
|
2016-07-15 18:33:00 +00:00
|
|
|
tick8();
|
|
|
|
}
|
2016-07-15 11:37:39 +00:00
|
|
|
|
|
|
|
if (realtimebyte == START || realtimebyte == CONTINUE) {
|
|
|
|
goClock();
|
|
|
|
}
|
|
|
|
|
|
|
|
if (realtimebyte == STOP) {
|
|
|
|
stopClock();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2015-11-20 16:00:38 +00:00
|
|
|
void setup() {
|
2016-07-15 11:37:39 +00:00
|
|
|
for (int i = 0; i < 8; i++) {
|
|
|
|
pinMode(pins[i], INPUT_PULLUP);
|
|
|
|
}
|
|
|
|
pinMode(13, OUTPUT); //LED
|
|
|
|
|
|
|
|
//MIDI.begin(MIDI_CHANNEL_OMNI);
|
|
|
|
// MIDI.setHandleClock(tick);
|
|
|
|
//MIDI.setHandleStart(goClock);
|
|
|
|
// // MIDI.setHandleContinue(goClock);
|
|
|
|
//MIDI.setHandleStop(stopClock);
|
|
|
|
|
2015-11-20 16:00:38 +00:00
|
|
|
//Modeled
|
2016-07-15 11:37:39 +00:00
|
|
|
// digitalWrite(11,HIGH);
|
|
|
|
|
|
|
|
usbMIDI.setHandleRealTimeSystem(RealTimeSystem);
|
|
|
|
leds.begin();
|
|
|
|
leds.show();
|
2016-07-15 18:33:00 +00:00
|
|
|
|
|
|
|
for (uint16_t i = 0; i < leds.numPixels(); i++) {
|
|
|
|
leds.setPixelColor(i, gdef, rdef, bdef);
|
|
|
|
}
|
|
|
|
leds.show();
|
|
|
|
|
2015-11-20 16:00:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void loop() {
|
2016-07-15 11:37:39 +00:00
|
|
|
usbMIDI.read();
|
2015-11-20 16:00:38 +00:00
|
|
|
|
2016-07-15 11:37:39 +00:00
|
|
|
for (int i = 0; i < 8; i++) {
|
|
|
|
//Ned ganz
|
|
|
|
tempState = digitalRead(pins[i]);
|
|
|
|
|
|
|
|
if (tempState != oldValues[i - 2])
|
2015-11-20 16:00:38 +00:00
|
|
|
{
|
|
|
|
// debouncetime
|
|
|
|
delay(1);
|
2016-07-15 11:37:39 +00:00
|
|
|
tempState = digitalRead(pins[i]);
|
|
|
|
|
|
|
|
if (tempState != oldValues[i - 2]) {
|
|
|
|
/* if(i == 10)
|
|
|
|
{
|
|
|
|
if(tempState == 0)
|
|
|
|
MIDI.sendNoteOn(pedalNote, 127, 1);
|
|
|
|
else
|
|
|
|
MIDI.sendNoteOff(pedalNote, 0, 1);
|
2015-11-20 16:00:38 +00:00
|
|
|
}
|
2016-07-15 11:37:39 +00:00
|
|
|
else if(i == 7)
|
|
|
|
{
|
|
|
|
if(tempState == 0){
|
|
|
|
if(pedalNote == 10)
|
|
|
|
{
|
|
|
|
pedalNote = 11;
|
|
|
|
clearNote = 13;
|
|
|
|
digitalWrite(11,LOW);
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
|
|
|
|
pedalNote = 10;
|
|
|
|
clearNote = 9;
|
|
|
|
digitalWrite(11,HIGH);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(i == 9)
|
|
|
|
{
|
|
|
|
if(tempState == 0)
|
|
|
|
MIDI.sendNoteOn(clearNote, 127, 1);
|
|
|
|
else
|
|
|
|
MIDI.sendNoteOff(clearNote, 0, 1);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{*/
|
|
|
|
if (tempState == 0) {
|
|
|
|
usbMIDI.sendNoteOn(i, 127, 1);
|
2016-07-15 18:33:00 +00:00
|
|
|
leds.setPixelColor(i, 0, 255, 0);
|
2016-07-15 11:49:32 +00:00
|
|
|
leds.show();
|
2016-07-15 11:37:39 +00:00
|
|
|
} else {
|
|
|
|
usbMIDI.sendNoteOff(i, 0, 1);
|
2016-07-15 18:33:00 +00:00
|
|
|
leds.setPixelColor(i, gdef, rdef, bdef);
|
2016-07-15 11:49:32 +00:00
|
|
|
leds.show();
|
2015-11-20 16:00:38 +00:00
|
|
|
}
|
2016-07-15 11:37:39 +00:00
|
|
|
// }
|
|
|
|
|
|
|
|
}
|
2015-11-20 16:00:38 +00:00
|
|
|
|
|
|
|
}
|
2016-07-15 11:37:39 +00:00
|
|
|
oldValues[i - 2] = tempState;
|
2015-11-20 16:00:38 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|