I think you could chose maps based on a pin state too.. I was thinking of doing it over digital comms though.. using pins is simpler for sure.

Somewhere in the program you'd probably poll that pin to see if it's changed. You'd probably have what I call a "working copy" of the map which is what the program uses, and 2 static copies that contain the data for the long term. As the pin changes HIGH, you'd copy from static map1 to the "working copy".. as it changes LOW, you'd copy the data of static map2 to the "working copy".. That would be pretty easy to implement.

If you have a spare ADC input, you could change gradually from one pin to the otherso if the ADC read 0, you take the data from static copy1, and if it's 1024, you take it from static copy2, and map the values between them...

I believe the last time I read through the lilbb code, the curve selection what in the setup section of the code, correct? If that is the case you would need to "reset" the arduino to define a new curve.

Here is the code I use to allow a potentiometer to define a curve on the fly.

////////////////////////////////Watches for the pot position when pot switch is off to see what turbo curve is selected/////////////////////////////////////////////////////////////////////////copying an array takes some time so I only check for this ever 900ms and I only copy the array if the last array doesn't match//void Watchpotcrv() {

if (curvemode != lastcurvemode){ //here is where I check to ensure that I only copy the array when needed, not every time

if (curvea) {memcpy(turbo_curve,turbo_curve_1,sizeof(turbo_curve)); BoostMapMode = 'P';} if (curveb) {memcpy(turbo_curve,turbo_curve_2,sizeof(turbo_curve)); BoostMapMode = 'D';} if (curvec) {memcpy(turbo_curve,turbo_curve_3,sizeof(turbo_curve)); BoostMapMode = 'T';} if (curved) {memcpy(turbo_curve,turbo_curve_4,sizeof(turbo_curve)); BoostMapMode = 'M';} lastcurvemode = curvemode; //if curve mode has changed this is where I set the last mode so I can check the next time. String MapMode = String(BoostMapMode); //printing this only when I need to saves time. lcd.setCursor(19, 3); lcd.print(MapMode); } }}You will have to edit the lilbb code, to take that out of the setup, but the above works well for me to switch curves on the fly.