Refactor variable names and types

Neccessary because on ARM 'char' != int8_t but uint_8
Just declaring what know you want makes this far less confusing.
see https://en.cppreference.com/w/cpp/language/types
This commit is contained in:
Oliver Parczyk 2023-12-16 11:18:51 +01:00
parent ab48f69b6c
commit 58bdf0aac7

View File

@ -4,15 +4,15 @@
#define MIDI_NAME {'P', 'i', 'n', 'g', 'b', 'o', 'a', 'r', 'd'} #define MIDI_NAME {'P', 'i', 'n', 'g', 'b', 'o', 'a', 'r', 'd'}
#define MIDI_NAME_LEN 9 #define MIDI_NAME_LEN 9
#define CHECK_PINS 9 #define KEY_GROUP_NUM 9
#define KEY_PINS 6 #define KEY_PINS 6
#define NUMBER_OF_KEYS 49
#define BOUNCE_TIME 5 #define BOUNCE_TIME 5
#define POWER_SUPPLY_CHECK_PIN 13 #define POWER_SUPPLY_CHECK_PIN 13
#define NUMBER_OF_KEYS 49
#define SELF_DRIVE_INTERVAL 100 #define SELF_DRIVE_INTERVAL 100
Bounce check_pins[CHECK_PINS] { Bounce group_pins[KEY_GROUP_NUM] {
{14, BOUNCE_TIME}, // not KEYS1..6 {14, BOUNCE_TIME}, // not KEYS1..6
{15, BOUNCE_TIME}, // not KEYS7..12 {15, BOUNCE_TIME}, // not KEYS7..12
{16, BOUNCE_TIME}, // not KEYS13..18 {16, BOUNCE_TIME}, // not KEYS13..18
@ -25,20 +25,20 @@ Bounce check_pins[CHECK_PINS] {
}; };
// not KEY0%6..not KEY5%6 // not KEY0%6..not KEY5%6
const unsigned char key_pins[KEY_PINS] {2, 3, 4, 5, 6, 7}; const uint8_t key_pins[KEY_PINS] {2, 3, 4, 5, 6, 7};
// Array of pressed keys (initially all 0) // Array of pressed keys (initially all 0)
bool keys_pressed[NUMBER_OF_KEYS]; bool keys_pressed[NUMBER_OF_KEYS];
// K1, K2, K3, K4, K5, K12, K13, K14, K15 // K1, K2, K3, K4, K5, K12, K13, K14, K15
const unsigned char self_drive_pins[CHECK_PINS] {8, 9, 10, 11, 12, 26, 23, 24, 25}; const uint8_t self_drive_pins[KEY_GROUP_NUM] {8, 9, 10, 11, 12, 26, 23, 24, 25};
volatile unsigned char curr_self_drive_pin = 0; volatile uint8_t current_self_drive_pin = 0;
IntervalTimer self_drive_timer = IntervalTimer(); IntervalTimer self_drive_timer = IntervalTimer();
// Map the current array and pressed key to a MIDI note // Map the current array and pressed key to a MIDI note
unsigned char mapToMidi(char curr_arr, char key) { uint8_t mapToMidi(uint8_t active_key_group, uint8_t key) {
unsigned char offset = (curr_arr >> 1) * 12; uint8_t offset = (active_key_group >> 1) * 12;
// TODO: maybe we have to switch the notes and array offsets // TODO: maybe we have to switch the notes and array offsets
// Uneven offset are the upper octave, even the lower // Uneven offset are the upper octave, even the lower
if (curr_arr & 1) { if (active_key_group & 1) {
switch (key) { switch (key) {
case 0: return offset + 42; // F#2 + offset case 0: return offset + 42; // F#2 + offset
case 1: return offset + 43; // G2 + offset case 1: return offset + 43; // G2 + offset
@ -63,18 +63,18 @@ unsigned char mapToMidi(char curr_arr, char key) {
} }
// Check if any of the array pins fell since last time // Check if any of the array pins fell since last time
char findCurrentArrPin() { int8_t getActiveKeyGroup() {
for (unsigned char i = 0; i < CHECK_PINS; i++) { for (uint8_t i = 0; i < KEY_GROUP_NUM; i++) {
// Update status // Update status
check_pins[i].update(); group_pins[i].update();
// Check if the pin fell or is low // Check if the pin fell or is low
// ! inverted // ! inverted
if (check_pins[i].fell()) return i; if (group_pins[i].fell()) return i;
} }
// If none fell we should have enough time to see which one is low // If none fell we should have enough time to see which one is low
for (unsigned char i = 0; i < CHECK_PINS; i++) { for (uint8_t i = 0; i < KEY_GROUP_NUM; i++) {
if (check_pins[i].read() == LOW) return i; if (group_pins[i].read() == LOW) return i;
} }
// Default return // Default return
@ -84,17 +84,17 @@ char findCurrentArrPin() {
// Set the next self drive pin // Set the next self drive pin
FASTRUN void nextSelfDrivePin() { FASTRUN void nextSelfDrivePin() {
// Set the current pin to high // Set the current pin to high
digitalWriteFast(self_drive_pins[curr_self_drive_pin], HIGH); digitalWriteFast(self_drive_pins[current_self_drive_pin], HIGH);
// Set the next pin // Set the next pin
curr_self_drive_pin = (curr_self_drive_pin + 1) % CHECK_PINS; current_self_drive_pin = (current_self_drive_pin + 1) % KEY_GROUP_NUM;
} }
// Interrupt for power supply check // Interrupt for power supply check
FASTRUN void powerStateChanged() { FASTRUN void powerStateChanged() {
unsigned char state = digitalReadFast(POWER_SUPPLY_CHECK_PIN); uint8_t state = digitalReadFast(POWER_SUPPLY_CHECK_PIN);
// ! inverted // ! inverted
if (state == LOW) { if (state == LOW) {
curr_self_drive_pin = 0; current_self_drive_pin = 0;
self_drive_timer.begin(nextSelfDrivePin, SELF_DRIVE_INTERVAL); self_drive_timer.begin(nextSelfDrivePin, SELF_DRIVE_INTERVAL);
} else { } else {
self_drive_timer.end(); self_drive_timer.end();
@ -104,11 +104,11 @@ FASTRUN void powerStateChanged() {
// Initial start function // Initial start function
void setup() { void setup() {
// Set all in- and outputs // Set all in- and outputs
for (unsigned char i = 0; i < CHECK_PINS; i++) { for (uint8_t i = 0; i < KEY_GROUP_NUM; i++) {
pinMode(check_pins[i].getPin(), INPUT); pinMode(group_pins[i].getPin(), INPUT);
pinMode(self_drive_pins[i], INPUT); pinMode(self_drive_pins[i], INPUT);
} }
for (unsigned char i = 0; i < KEY_PINS; i++) { for (uint8_t i = 0; i < KEY_PINS; i++) {
pinMode(key_pins[i], INPUT); pinMode(key_pins[i], INPUT);
} }
pinMode(POWER_SUPPLY_CHECK_PIN, INPUT); pinMode(POWER_SUPPLY_CHECK_PIN, INPUT);
@ -121,32 +121,32 @@ void setup() {
// Main loop // Main loop
void loop() { void loop() {
// Find active arr pin // Find active arr pin
char curr_arr = findCurrentArrPin(); int8_t active_key_group = getActiveKeyGroup();
// If none is active, we do nothing, else we check the keys // If none is active, we do nothing, else we check the keys
if (curr_arr >= 0) { if (active_key_group >= 0) {
// Get all the key values ans send the MIDI message if needed // Get all the key values ans send the MIDI message if needed
unsigned char value; uint8_t value;
for (unsigned char i = 0; i < KEY_PINS; i++) { for (uint8_t i = 0; i < KEY_PINS; i++) {
value = digitalReadFast(key_pins[i]); value = digitalReadFast(key_pins[i]);
// If the key is pressed, we send a MIDI message and set the entry in the array // If the key is pressed, we send a MIDI message and set the entry in the array
// ! inverted // ! inverted
if (value == LOW) { if (value == LOW) {
// Check if the key is not already pressed // Check if the key is not already pressed
if (keys_pressed[curr_arr * 6 + i] == 0) { if (keys_pressed[active_key_group * 6 + i] == 0) {
// Send MIDI message // Send MIDI message
usbMIDI.sendNoteOn(mapToMidi(curr_arr, i), 127, 1); usbMIDI.sendNoteOn(mapToMidi(active_key_group, i), 127, 1);
// Set the entry in the array // Set the entry in the array
keys_pressed[curr_arr * 6 + i] = 1; keys_pressed[active_key_group * 6 + i] = 1;
} }
} else { } else {
// Check if the key is not already released // Check if the key is not already released
if (keys_pressed[curr_arr * 6 + i] == 1) { if (keys_pressed[active_key_group * 6 + i] == 1) {
// Send MIDI message // Send MIDI message
usbMIDI.sendNoteOff(mapToMidi(curr_arr, i), 0, 1); usbMIDI.sendNoteOff(mapToMidi(active_key_group, i), 0, 1);
// Set the entry in the array // Set the entry in the array
keys_pressed[curr_arr * 6 + i] = 0; keys_pressed[active_key_group * 6 + i] = 0;
} }
} }
} }