Components and supplies
Stereo Jack Socket, 6.3mm
USB Cable, USB Type C Plug
Arduino Nano Every
Tools and machines
Soldering kit
Apps and platforms
Arduino IDE 1.8
Serial USB Terminal (for Android)
Project description
Code
Source code
cpp
For Arduino Nano Every
1/* 2 A Serial Monitor for Digitech Brian May Pedal! 3 4 v.1.0 5 6 created 16 May 2023 7 by Carlo Giletto 8 9 * TIP to analog pin 0 // = digital pin 14 10 * RING to analog pin 1 // = digital pin 15 11 * 12*/ 13 14const int tip = 0; 15const int ring = 1; 16const int downPin = 15; 17const int upPin = 8; 18const int modePin = 14; 19 20const int highTS = 300; 21const int diodeTS = 50; 22const int groundTS = 20; 23 24const int green = 1, red = 2, blue = 3; 25const int longPressionTime = 2300; //long pression time in milliseconds, it should be 3000 ms, value tuned for my pedal 26const int shortPressionTime = 150; 27 28unsigned long downPressedTime = 0; 29unsigned long upPressedTime = 0; 30 31long downPressDuration = 0; 32long upPressDuration = 0; 33 34unsigned long lastDebounceTime = 0; // the last time the output pin was toggled 35const unsigned long debounceDelay = 30; // the debounce time; increase if the output flickers 36 37String readString; 38 39int buttonState = 0; 40int lastButtonState = 0; 41int refresh = HIGH; 42 43// default state 44 45int Tone = 1; 46int Mode = red; 47int settedTone = Tone; 48int settedMode = Mode; 49 50 51void setup() { 52 53 Serial.begin(115200); 54 55 Serial.println("Digitech Brian May Display"); 56 Serial.println("Version 2.0"); 57 58 toneDown(longPressionTime); 59 60} 61void loop() { 62 63 while (Serial.available()) { 64 delay(3); 65 char c = Serial.read(); 66 readString += c; 67 } 68 69 if (readString.length() > 0) { 70 //Serial.println(readString); 71 72 if (readString == "u\n") { 73 toneUp(shortPressionTime); 74 } 75 else if (readString == "d\n") { 76 toneDown(shortPressionTime); 77 } 78 else if (readString == "m\n") { 79 modeToggle(); 80 } 81 else if (readString == "ld\n") { 82 toneDown(longPressionTime); 83 } 84 else if (readString == "lu\n") { 85 toneUp(longPressionTime); 86 } 87 else if (readString == "1g\n") { 88 settedTone = 1; 89 settedMode = green; 90 } 91 else if (readString == "2g\n") { 92 settedTone = 2; 93 settedMode = green; 94 } 95 else if (readString == "3g\n") { 96 settedTone = 3; 97 settedMode = green; 98 } 99 else if (readString == "4g\n") { 100 settedTone = 4; 101 settedMode = green; 102 } 103 else if (readString == "5g\n") { 104 settedTone = 5; 105 settedMode = green; 106 } 107 else if (readString == "6g\n") { 108 settedTone = 6; 109 settedMode = green; 110 } 111 else if (readString == "7g\n") { 112 settedTone = 7; 113 settedMode = green; 114 } 115 else if (readString == "1r\n") { 116 settedTone = 1; 117 settedMode = red; 118 } 119 else if (readString == "2r\n") { 120 settedTone = 2; 121 settedMode = red; 122 } 123 else if (readString == "3r\n") { 124 settedTone = 3; 125 settedMode = red; 126 } 127 else if (readString == "4r\n") { 128 settedTone = 4; 129 settedMode = red; 130 } 131 else if (readString == "5r\n") { 132 settedTone = 5; 133 settedMode = red; 134 } 135 else if (readString == "6r\n") { 136 settedTone = 6; 137 settedMode = red; 138 } 139 else if (readString == "7r\n") { 140 settedTone = 7; 141 settedMode = red; 142 } 143 else{ 144 Serial.println(); 145 Serial.println(); 146 Serial.println("Help: m = toggle mode, u = up, d = down,"); 147 Serial.println("ld = long pression down, lu = long pression up"); 148 Serial.println("1r = Tone 1 Mode Red, 2g = Tone 2 green, etc..."); 149 } 150 151 readString = ""; 152 } 153 154 if (settedTone < Tone) { 155 refresh = HIGH; 156 for (int i = Tone - settedTone; i > 0; i--) { 157 toneDown(shortPressionTime); 158 } 159 } 160 if (settedTone > Tone) { 161 refresh = HIGH; 162 for (int i = settedTone - Tone; i > 0; i--) { 163 toneUp(shortPressionTime); 164 } 165 } 166 167 if (Mode != settedMode) { 168 modeToggle(); 169 refresh = HIGH; 170 } 171 172 int reading = buttons(); 173 174 if (reading != lastButtonState) { 175 lastDebounceTime = millis(); 176 } 177 178 if ((millis() - lastDebounceTime) > debounceDelay) { 179 if (reading != buttonState) { 180 buttonState = reading; 181 if (buttonState == 0) { 182 //Serial.println("Buttons Released"); 183 } 184 if (buttonState == 1) { 185 //Serial.println("MODE Pressed"); 186 refresh = HIGH; 187 if (Mode == green) { 188 //backLightRed(redBrightness); 189 Mode = red; 190 settedMode = Mode; 191 } else { 192 //backLightGreen(greenBrightness); 193 Mode = green; 194 settedMode = Mode; 195 } 196 } 197 if (buttonState == 2) { 198 //Serial.println("DOWN Pressed"); 199 downPressedTime = millis(); 200 if (Tone > 1) { 201 refresh = HIGH; 202 Tone = Tone - 1; 203 settedTone = Tone; 204 } 205 } 206 if (buttonState == 3) { 207 //Serial.println("UP Pressed"); 208 upPressedTime = millis(); 209 if (Tone < 7) { 210 refresh = HIGH; 211 Tone = Tone + 1; 212 settedTone = Tone; 213 } 214 } 215 } 216 } 217 218 downPressDuration = millis() - downPressedTime; 219 if ((buttonState == 2) && (downPressDuration > longPressionTime)) { 220 if (Tone > 1) { 221 Tone = 1; 222 settedTone = Tone; 223 refresh = HIGH; 224 } 225 } 226 upPressDuration = millis() - upPressedTime; 227 if ((buttonState == 3) && (upPressDuration > longPressionTime)) { 228 if (Tone < 7) { 229 Tone = 7; 230 settedTone = Tone; 231 refresh = HIGH; 232 } 233 } 234 235 if (refresh == HIGH) { 236 237 Serial.println(); 238 Serial.println(); 239 240 //Serial.print("Tone: "); 241 Serial.print(Tone); 242 //Serial.print(" Mode: "); 243 if (Mode == 1) 244 Serial.print(" GREEN - "); 245 else 246 Serial.print(" RED - "); 247 248 if (Mode == green) { 249 if (Tone == 1) 250 display1Green(); 251 if (Tone == 2) 252 display2Green(); 253 if (Tone == 3) 254 display3Green(); 255 if (Tone == 4) 256 display4Green(); 257 if (Tone == 5) 258 display5Green(); 259 if (Tone == 6) 260 display6Green(); 261 if (Tone == 7) 262 display7Green(); 263 } 264 265 if (Mode == red) { 266 if (Tone == 1) 267 display1Red(); 268 if (Tone == 2) 269 display2Red(); 270 if (Tone == 3) 271 display3Red(); 272 if (Tone == 4) 273 display4Red(); 274 if (Tone == 5) 275 display5Red(); 276 if (Tone == 6) 277 display6Red(); 278 if (Tone == 7) 279 display7Red(); 280 } 281 282 refresh = LOW; 283 } 284 lastButtonState = reading; 285} 286 287int buttons() { 288 if ((analogRead(tip) > highTS) && (analogRead(ring) > highTS)) { 289 return 0; 290 } 291 if ((analogRead(tip) < groundTS) && (analogRead(ring) > highTS)) { 292 return 1; 293 } 294 if ((analogRead(ring) < groundTS) && (analogRead(tip) > highTS)) { 295 return 2; 296 } 297 if ((analogRead(tip) < highTS) && (analogRead(tip) > diodeTS) && (analogRead(ring) < highTS) && (analogRead(ring) > diodeTS)) { 298 return 3; 299 } else { 300 return 4; 301 } 302} 303 304void display1Green() { 305 Serial.println("Keep Yourself Alive"); 306 Serial.println("Intro with Tape Flanger"); 307 Serial.println("Tape Flanger Amount / Midrange"); 308} 309 310void display2Green() { 311 Serial.println(" Bohemian Rhapsody"); 312 Serial.println("First Solo"); 313 Serial.println("No Function / Midrange"); 314} 315 316void display3Green() { 317 Serial.println("Tie Your Mother Down"); 318 Serial.println("Intro"); 319 Serial.println("No Function / Midrange"); 320} 321 322void display4Green() { 323 Serial.println("We Will Rock You"); 324 Serial.println("Solo"); 325 Serial.println("Phaser Amount / Phaser Speed"); 326} 327 328void display5Green() { 329 Serial.println(" Crazy Little Thing Called Love"); 330 Serial.println("Intro"); 331 Serial.println("No Function / Reverb Level"); 332} 333 334void display6Green() { 335 Serial.println("Brighton Rock Solo - Live"); 336 Serial.println("Delay (three amps) & Tight Chorus"); 337 Serial.println("Delay Amount / Delay Time"); 338} 339 340void display7Green() { 341 Serial.println("Deacy Amp"); 342 Serial.println("Deacy Unprocessed"); 343 Serial.println("No Function / Midrange"); 344} 345 346void display1Red() { 347 Serial.println("Keep Yourself Alive"); 348 Serial.println("Solo with Tape Flanger"); 349 Serial.println("Tape Flanger / Midrange"); 350} 351 352void display2Red() { 353 Serial.println("Bohemian Rhapsody"); 354 Serial.println("Rhythm & finale orchestral Fanfare"); 355 Serial.println("Cross fade to Deacy / Midrange"); 356} 357 358void display3Red() { 359 Serial.println("Tie Your Mother Down"); 360 Serial.println("Solo"); 361 Serial.println("No Function / Midrange"); 362} 363 364void display4Red() { 365 Serial.println("We Are The Champions"); 366 Serial.println("Solo"); 367 Serial.println("Phaser Amount / Phaser Speed"); 368} 369 370void display5Red() { 371 Serial.println("Crazy Little Thing Called Love"); 372 Serial.println("Solo"); 373 Serial.println("No Function / Reverb Level"); 374} 375 376void display6Red() { 377 Serial.println("Brighton Rock - Solo"); 378 Serial.println("Orchestral Harmonizer with three part harmony"); 379 Serial.println("Minor to Major / Pitch Blend"); 380} 381 382void display7Red() { 383 Serial.println("A Winter's Tale"); 384 Serial.println("Solo"); 385 Serial.println("No Function / Effect level - Reverb & Delay"); 386} 387 388void modeToggle() { 389 pinMode(modePin, OUTPUT); 390 digitalWrite(modePin, LOW); 391 delay(shortPressionTime); 392 pinMode(modePin, INPUT); 393 refresh = HIGH; 394 if (Mode == green) { 395 //backLightRed(redBrightness); 396 Mode = red; 397 settedMode = Mode; 398 } else { 399 //backLightGreen(greenBrightness); 400 Mode = green; 401 settedMode = Mode; 402 } 403 delay(shortPressionTime); 404} 405 406void toneDown(int PressionTime) { 407 pinMode(downPin, OUTPUT); 408 digitalWrite(downPin, LOW); 409 delay(PressionTime); 410 pinMode(downPin, INPUT); 411 if (Tone > 1) { 412 refresh = HIGH; 413 if (PressionTime < longPressionTime) { 414 Tone = Tone - 1; 415 settedTone = Tone; 416 } else { 417 Tone = 1; 418 settedTone = Tone; 419 } 420 } 421 delay(shortPressionTime); 422} 423 424void toneUp(int PressionTime) { 425 pinMode(modePin, OUTPUT); 426 pinMode(downPin, OUTPUT); 427 digitalWrite(downPin, LOW); 428 digitalWrite(modePin, LOW); 429 //pinMode(upPin, OUTPUT); 430 //digitalWrite(upPin,LOW); 431 delay(PressionTime); 432 pinMode(modePin, INPUT); 433 pinMode(downPin, INPUT); 434 //pinMode(upPin, INPUT); 435 if (Tone < 7) { 436 refresh = HIGH; 437 if (PressionTime < longPressionTime) { 438 Tone = Tone + 1; 439 settedTone = Tone; 440 } else { 441 Tone = 7; 442 settedTone = Tone; 443 } 444 } 445 delay(shortPressionTime); 446}
Downloadable files
Configuration for Serial USB Terminal App
Configuration of Serial and song presets
file.None
Comments
Only logged in users can leave comments
cgiletto
0 Followers
•0 Projects
Table of contents
Intro
0
0