PringlesLooper/PringlesLooper/PringlesLooper.ino

211 lines
3.6 KiB
Arduino
Raw Permalink Normal View History

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
}
}