thanks for the advice, bare in your mind that my coding knowledge is zero , just tell me what i need to delete exactly. "what's a macro?"
#define LooperRecord_CC 28
#define LooperPlay_CC 29
#define LooperOnce_CC 30
#define LooperDub_CC 31
#define LooperRev_CC 32
#define LooperBypass_CC 33
// Switch 1.
case 0:
MIDI.sendControlChange(SceneSelect_CC, 0, MIDICHAN);
// Switch 1.
case 0:
MIDI.sendControlChange(LooperRecord_CC, 0, MIDICHAN);
MIDI.sendControlChange(LooperRecord_CC, 0, MIDICHAN);
MIDI.sendControlChange(28, 0, MIDICHAN);
Congratulations for the build!I thought I'd post my version of this, inspiration from Piing and a few other places. Main difference is I have a screen per switch so ended up writing the code from scratch (using Tysonit's lib though for axe control). You can find it on github under user kmcgain -> Pedalboard (couldn't post a link).
There's still feature ideas that I'll add over time but I've got it to the point where it's stable and time to share. Some points of difference:
- Display of scene names against switches
- Effect bypassing + name display on switches
- Multiple layouts + switching between them, for me layout 1 is about scenes, layout 2 for effects
- Tap tempo with flashing LED on board
If anyone wants to go down this route I'm happy to help out although perhaps in a different thread to avoid confusion. This is 1 Arduino Due controlling it rather than the Mega.
If I had my time again I would probably go with a master display that's larger for things like preset detail and live tuner + individual displays for switches. I'll probably get some 3d printed screen surrounds as well to hide the rough screen cutouts.
View attachment 73297
View attachment 73298
What kind of casing did you use to build this? A standard type? And the lcd, switches and so on. Looks great!I thought I'd post my version of this, inspiration from Piing and a few other places. Main difference is I have a screen per switch so ended up writing the code from scratch (using Tysonit's lib though for axe control). You can find it on github under user kmcgain -> Pedalboard (couldn't post a link).
There's still feature ideas that I'll add over time but I've got it to the point where it's stable and time to share. Some points of difference:
- Display of scene names against switches
- Effect bypassing + name display on switches
- Multiple layouts + switching between them, for me layout 1 is about scenes, layout 2 for effects
- Tap tempo with flashing LED on board
If anyone wants to go down this route I'm happy to help out although perhaps in a different thread to avoid confusion. This is 1 Arduino Due controlling it rather than the Mega.
If I had my time again I would probably go with a master display that's larger for things like preset detail and live tuner + individual displays for switches. I'll probably get some 3d printed screen surrounds as well to hide the rough screen cutouts.
View attachment 73297
View attachment 73298
What kind of casing did you use to build this? A standard type? And the lcd, switches and so on. Looks great!
This information is good enough for me. Thx! Well... maybe a little more info on your power-midi box.Case:
Hamond 1456RL1BKBU from mouser.com
Used dremmel to cut the screen holes after drilling the corners out. I don't have a friend with a CNC machine
Sourced pretty much everything else off aliexpress, I'll provide descriptions so hopefully a search will find the right things (in case my links don't work).
Switches: 1pcs SPST Momentary Soft Touch Push Button Stomp Foot Pedal Switch Electric Guitar Switch OFF-Momentary ON
Screens: 1.8" TFT SPI ST7735
Can provide full shopping list / breakdown (like DIN, TRS, dc sockets) if you do want comprehensive build breakdown.
Also I built a custom midi+power box - standard midi in/out + 9v in, 7 pin midi out. Made a custom cable so I can send input,output and power all through 1. I couldn't find good options to buy off the shelf in Australia, at least not at a reasonable price.. the box was probably the easiest part of the whole project (just a cheap plastic enclosure), but it's certainly painful trying to reliably solder a 7 pin midi cable.
Cable management inside the box was a bit of a nightmare - each screen is 8 wires, 1 is unique, the rest shared. But at 15 screens this gets messy pretty quickly.
I have fixed it for you. Removed all unwanted characters from the Constant Definitions
Sketch attached
I thought I'd post my version of this, inspiration from Piing and a few other places. Main difference is I have a screen per switch so ended up writing the code from scratch (using Tysonit's lib though for axe control). You can find it on github under user kmcgain -> Pedalboard (couldn't post a link).
There's still feature ideas that I'll add over time but I've got it to the point where it's stable and time to share. Some points of difference:
- Display of scene names against switches
- Effect bypassing + name display on switches
- Multiple layouts + switching between them, for me layout 1 is about scenes, layout 2 for effects
- Tap tempo with flashing LED on board
If anyone wants to go down this route I'm happy to help out although perhaps in a different thread to avoid confusion. This is 1 Arduino Due controlling it rather than the Mega.
If I had my time again I would probably go with a master display that's larger for things like preset detail and live tuner + individual displays for switches. I'll probably get some 3d printed screen surrounds as well to hide the rough screen cutouts.
View attachment 73297
View attachment 73298
// Switch 5. Bank Down
case 4:
//PresetNumb=PresetNumb-95;
if (PresetNumb<5) PresetNumb=95; else if (PresetNumb=PresetNumb-5);
flashPin( leds[currentSwitch], pedalActiveFlash );
lcd.clear();lcd.setCursor(0,0); lcd.print(PresetNumb); lcd.print("-");lcd.print(PresetNumb+4);
flashPin(LED5, 500);
//Serial.println("Switch-5");
break;
// Switch 10. Bank UP
case 9:
if (PresetNumb>94) PresetNumb=0; else if (PresetNumb=PresetNumb+5);
flashPin( leds[currentSwitch], pedalActiveFlash );
lcd.clear(); lcd.setCursor(0,0); lcd.print(PresetNumb); lcd.print("-");lcd.print(PresetNumb+4);
flashPin(LED10, 500);
//Serial.println("Switch-10 ");
break;
/* LCD definition
* lcd(RS, Enable, D4, D5, D6, D7, BL)
* KEY pin to analogl pin 0
*/
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
/* LCD definition
* lcd(RS, Enable, D4, D5, D6, D7, BL)
* KEY pin to analogl pin 0
*/
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
//LiquidCrystal lcd2(8, 10, 9, 4, 5, 6); //Strange characters on Lcd1 when defining lcd2. Pending debug
I2C LCD has different pins. Make a search of your particular model, to find how it is connected and the library that you may need
https://www.instructables.com/How-to-Connect-I2C-Lcd-Display-to-Arduino-Uno/
@Piing THANKS, that helped a lot.
even though i have zero experience on how to code these things but i managed to make things work only for the Helloworld example.
at first i tried to upload the sketch in the link above with the included library "LiquidCrystal_I2C". and the LCD displayed the output in the Sketch.
then i checked the Helloworld example in the Arduino IDE and found that it calls a different LCD Library, so i switched the Library to "LiquidCrystal_I2C" and also had to amend the highlight part shown in in the attached screenshot which i think it has something to do with where the LCD rows and columns starts or maybe about the connections i dont know. anyway the Helloworld2 example worked on the LCD.
I didn't try anything with Axe control sketch yet, so do you think i only have to change the LCD library and leave everything as it is ?
Thanks again
View attachment 74359
Is there construction instructions? Sorry if I missed them
Congratulations on your first "Hello World"! You are on the right track
I remember my first "Hello World". It was a joy, after few days experimenting with libraries, pinouts and configurations.
Try replacing this:
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
With this:
LiquidCrystal_I2C lcd(0x27, 16, 2)
I am not sure if it would be necessary to modify the void setup(). You already have the lcd.begin(16, 2). At your example it is blank, but that is the default of 16 columns x 2 rows)
Try only with that first line