The minimal configuration we need is 3 Buttons , a Display for Looper State, Host BPM and Bar Informations, a gyroscope for modulations and a Wifi Connection. Because of the Touch iputs of the NodeMCU we use touch buttons.
Everything will be sent per OSC Protocoll over udp / Wifi.
Scribbles of the arm panel // by S.Fischer
The footpanel has the same configuration like the portable controller but without the gyroscope and with Power adapter instead of Battery.
OSCBundle msg;
int b1state = debouncer.read();
if ( b1state == 1) {
msg.add("/Performer1/Button/1").add((int32_t)b1state);
tft.fillRect(5, 5, 40, 20, TFT_RED);
}
if ( b1state == 0) {
//Serial.println("1 Pressed");
msg.add("/Performer1/Button/1").add((int32_t)b1state);
}
And this is value X of the Gyroscope :
if( myIMU.readRegisterInt16(&temp, LSM6DS3_ACC_GYRO_OUTX_L_XL) != 0 )
{
errorsAndWarnings++;
}
//Serial.print(" X = ");
float estimated_value = Filter.updateEstimate(temp);
msg.add("/Performer1/Gyro/x").add((int32_t)estimated_value);
Debouncing and Filtering is done by the SimpleKalman Library and the Bounce2 Library.
https://github.com/thomasfredericks/Bounce2
https://github.com/denyssene/SimpleKalmanFilter
The display still has some overlay problems and is flickering a little.
SparkFun Libary is used for the display.
https://github.com/sparkfun/SparkFun_LSM6DS3_Arduino_Library/blob/master/src/SparkFunLSM6DS3.h
TO DO :
- add LiPo and charger
- 3D Design of arm panel with final parts
- upload/update per wifi