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.