parent
6cc055e419
commit
10d77ae3a5
@ -0,0 +1,79 @@ |
||||
#include <TM1638plus_Model2.h> |
||||
#include <elapsedMillis.h> |
||||
#include <limits.h> |
||||
|
||||
#define STROBE_TM 9 |
||||
#define CLOCK_TM 8 |
||||
#define DIO_TM 7 |
||||
#define MIDI_CH_BIT3 5 |
||||
#define MIDI_CH_BIT2 4 |
||||
#define MIDI_CH_BIT1 3 |
||||
#define MIDI_CH_BIT0 2 |
||||
|
||||
bool swap_nibbles = false; |
||||
bool high_freq = false; |
||||
|
||||
#define BRIGHTNESS 6 |
||||
#define BUTTON_DEBOUNCE_TIME_MS 50 |
||||
|
||||
// Constructor object
|
||||
TM1638plus_Model2 tm(STROBE_TM, CLOCK_TM, DIO_TM, swap_nibbles, high_freq); |
||||
elapsedMillis button_debounce_timer; |
||||
|
||||
void setup() { |
||||
Serial.begin(9600); |
||||
delay(100); |
||||
|
||||
Serial.println("<SETUP>"); |
||||
|
||||
tm.displayBegin(); |
||||
tm.brightness(BRIGHTNESS); |
||||
tm.DisplayStr("MIDIHOST", 0); |
||||
|
||||
pinMode(MIDI_CH_BIT3, OUTPUT); |
||||
pinMode(MIDI_CH_BIT2, OUTPUT); |
||||
pinMode(MIDI_CH_BIT1, OUTPUT); |
||||
pinMode(MIDI_CH_BIT0, OUTPUT); |
||||
digitalWrite(MIDI_CH_BIT3, LOW); |
||||
digitalWrite(MIDI_CH_BIT2, LOW); |
||||
digitalWrite(MIDI_CH_BIT1, LOW); |
||||
digitalWrite(MIDI_CH_BIT0, LOW); |
||||
|
||||
delay(500); |
||||
|
||||
Serial.println("</SETUP>"); |
||||
} |
||||
|
||||
void loop() { |
||||
uint8_t button; |
||||
|
||||
button = tm.ReadKey16(); |
||||
if (button > 0 && button_debounce_timer > BUTTON_DEBOUNCE_TIME_MS) { |
||||
Serial.print("Button: "); |
||||
Serial.println(button, DEC); |
||||
button_debounce_timer = 0; |
||||
tm.DisplayDecNum(button, 0, false, TMAlignTextRight); |
||||
|
||||
SetMidiChannel(button); |
||||
} |
||||
} |
||||
|
||||
void SetMidiChannel(uint8_t channel) { |
||||
Serial.print("Setting MIDI channel: "); |
||||
Serial.print(channel, DEC); |
||||
Serial.print(" ("); |
||||
printBinary(channel, 4); |
||||
Serial.println(")"); |
||||
|
||||
digitalWrite(MIDI_CH_BIT0, channel & 0x00); |
||||
digitalWrite(MIDI_CH_BIT1, channel & 0x01); |
||||
digitalWrite(MIDI_CH_BIT2, channel & 0x02); |
||||
digitalWrite(MIDI_CH_BIT3, channel & 0x08); |
||||
} |
||||
|
||||
void printBinary(uint32_t value, uint8_t len) { |
||||
for (len; len >= 0; len--) { |
||||
Serial.print((char)('0' + ((value >> len) & 1))); |
||||
} |
||||
Serial.println(); |
||||
} |
Loading…
Reference in new issue