Led vu meter with midi

hi, i am trying to make a VUmeter, with 2 states. (vumeter) and (vumeter_main)
i need by default to be active the (vumeter) and when i press the button to active (vumeter_main) and cancel the (vumeter) and when press it again to stop the one and start the other..
but unfortunately i cant manage it.. lot of error.

if(VUbuttonvaleu !=0){      //I DONT KNOW WHAT TO DO NEXT SO WHEN BUTTON IS PRESS IT WILL ACTIVATE (VUmeter)
                            //  and when press again it will deactivate VUmeter and activate 
}
  
}
const int ShiftPWM_latchPin = 8;
#define SHIFTPWM_NOSPI
const int ShiftPWM_dataPin = 11;
const int ShiftPWM_clockPin = 12; 

const bool ShiftPWM_invertOutputs = false;
const bool ShiftPWM_balanceLoad = false;

/////////////////////////////////////////////
// LIBRARIES
#include <ShiftPWM.h>  // Bit shifter library >> https://github.com/elcojacobs/ShiftPWM - include ShiftPWM.h after setting the pins!
// If using with ATmega328 - Uno, Mega, Nano...
#include <MIDI.h> // MIDI library (by Forty Seven Effects) >> https://github.com/FortySevenEffects/arduino_midi_library/releases/tag/4.3.1
MIDI_CREATE_DEFAULT_INSTANCE();

/////////////////////////////////////////////
// midi
byte midiCh = 1; // *Canal midi a ser utilizado
byte note = 36; // *Nota mais grave que sera utilizada
byte cc = 1; // *CC mais baixo que sera utilizado

int ccLastValue = 0;

/////////////////////////////////////////////
// Leds
const byte ledNum = 24; // total number of leds used
unsigned char maxBrightness = 255;
unsigned char pwmFrequency = 75;
unsigned int numRegisters = 3;
unsigned int numOutputs = numRegisters * 8;
unsigned int numRGBLeds = numRegisters * 8 / 3;
unsigned int fadingMode = 0; //start with all LED's off.

unsigned int VuL[7] = {1, 2, 3, 4, 5, 6, 7}; // VU left pins
unsigned int VuR[7] = {15, 14, 13, 12, 11, 10, 9}; // VU righ pins

unsigned int red = 180;
unsigned int green = 255;
unsigned int blue = 10;
unsigned int yellow = 100;

//////////////////////////////////////////////
//button
int VUbuttonvalue = 0;
int Vubutton = 10;

/////////////////////////////////////////////
void setup() {

  Serial.begin(115000); 
  
  MIDI.turnThruOff();
  pinMode (Vubutton, INPUT_PULLUP );
   
  /////////////////////////////////////////////
  // Midi in
  MIDI.setHandleControlChange(Vumeter_main);
  MIDI.setHandleControlChange(VUmeter);

   
  // Sets the number of 8-bit registers that are used.
  ShiftPWM.SetAmountOfRegisters(numRegisters);
  ShiftPWM.SetAll(0);
  // Sets the number of 8-bit registers that are used.
  ShiftPWM.SetAmountOfRegisters(numRegisters);
SetPinGrouping(4).
  ShiftPWM.SetPinGrouping(1); //This is the default, but I added here to demonstrate how to use the funtion
  ShiftPWM.Start(pwmFrequency, maxBrightness);
}

void loop() {
    MIDI.read();
    VUbuttonvalue =digitalRead (vubutton);    

    if(VUbuttonvaleu !=0){      //I DONT KNOW WHAT TO DO NEXT SO WHEN BUTTON IS PRESS IT WILL ACTIVATE (VUmeter)
                                //  and when press again it will deactivate VUmeter and activate 
    }
      
    }
    
}

////////////////////////////////////////////
void VUmeter(byte channel, byte number, byte value) {

    int value_ = value;

  if (value_ != ccLastValue) {

    // Left VU
    if (number == 14) {

      switch (value_) {
        case 0:
          for (int i = 0; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          break;
        case 1:
          for (int i = 1; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          ShiftPWM.SetOne(VuL[0], green);
          break;
        case 2:
          for (int i = 2; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 2; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 3:
          for (int i = 3; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 3; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 4:
          for (int i = 4; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 4; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 5:
          for (int i = 5; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 6:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          ShiftPWM.SetOne(VuL[5], yellow);
          break;
        case 7:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          ShiftPWM.SetOne(VuL[5], yellow);
          ShiftPWM.SetOne(VuL[6], red);
          break;
      }
    }

////////////////////////////////////////////
// led feedback  1

void VUmeter_main (byte channel, byte number, byte value) {    

    //int value_ = round(map(value, 0, 127, 0, 7));
  int value_ = value;

  if (value_ != ccLastValue) {

       if (number == 13) {

      switch (value_) {
        case 0:
          for (int i = 0; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          break;
        case 1:
          for (int i = 1; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          ShiftPWM.SetOne(VuL[0], green);
          break;
        case 2:
          for (int i = 2; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 2; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 3:
          for (int i = 3; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 3; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 4:
          for (int i = 4; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 4; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 5:
          for (int i = 5; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          break;
        case 6:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          ShiftPWM.SetOne(VuL[5], yellow);
          break;
        case 7:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuL[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuL[i], green);
          }
          ShiftPWM.SetOne(VuL[5], yellow);
          ShiftPWM.SetOne(VuL[6], red);
          break;
      }
    }
 ////////////////////////////////////////////
// led feedback  1
    
    if (number == 13) {

      switch (value_) {
        case 0:
          for (int i = 0; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          break;
        case 1:
          for (int i = 1; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          ShiftPWM.SetOne(VuR[0], green);
          break;
        case 2:
          for (int i = 2; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 2; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          break;
        case 3:
          for (int i = 3; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 3; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          break;
        case 4:
          for (int i = 4; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 4; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          break;
        case 5:
          for (int i = 5; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          break;
        case 6:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          ShiftPWM.SetOne(VuR[5], yellow);
          break;
        case 7:
          for (int i = 6; i < 7; i++) {
            ShiftPWM.SetOne(VuR[i], LOW);
          }
          for (int i = 0; i < 5; i++) {
            ShiftPWM.SetOne(VuR[i], green);
          }
          ShiftPWM.SetOne(VuR[5], yellow);
          ShiftPWM.SetOne(VuR[6], red);
          break;
      }
    }
    ccLastValue = value;
  }

}

Arduino: 1.8.13 (Windows 10), Board: "Arduino Uno"



C:\Users\alina\Documents\traktorino-master\traktorino-master\Code\Traktorino\Traktorino.ino: In function 'void setup()':

Traktorino:58:31: error: 'Vumeter_main' was not declared in this scope

   MIDI.setHandleControlChange(Vumeter_main);

                               ^~~~~~~~~~~~

Traktorino:59:31: error: 'VUmeter' was not declared in this scope

   MIDI.setHandleControlChange(VUmeter);

                               ^~~~~~~

C:\Users\alina\Documents\traktorino-master\traktorino-master\Code\Traktorino\Traktorino.ino: In function 'void loop()':

Traktorino:75:33: error: 'vubutton' was not declared in this scope

     VUbuttonvalue =digitalRead (vubutton);

                                 ^~~~~~~~

C:\Users\alina\Documents\traktorino-master\traktorino-master\Code\Traktorino\Traktorino.ino:75:33: note: suggested alternative: 'Vubutton'

     VUbuttonvalue =digitalRead (vubutton);

                                 ^~~~~~~~

                                 Vubutton

Traktorino:77:8: error: 'VUbuttonvaleu' was not declared in this scope

     if(VUbuttonvaleu !=0){      //I DONT KNOW WHAT TO DO NEXT SO WHEN BUTTON IS PRESS IT WILL ACTIVATE (VUmeter)

        ^~~~~~~~~~~~~

C:\Users\alina\Documents\traktorino-master\traktorino-master\Code\Traktorino\Traktorino.ino:77:8: note: suggested alternative: 'VUbuttonvalue'

     if(VUbuttonvaleu !=0){      //I DONT KNOW WHAT TO DO NEXT SO WHEN BUTTON IS PRESS IT WILL ACTIVATE (VUmeter)

        ^~~~~~~~~~~~~

        VUbuttonvalue

C:\Users\alina\Documents\traktorino-master\traktorino-master\Code\Traktorino\Traktorino.ino: At global scope:

Traktorino:83:1: error: expected declaration before '}' token

 }

 ^

exit status 1

'Vumeter_main' was not declared in this scope



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

9 posts were merged into an existing topic: Vu meter what is wrong