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