PHP Code:
#include "WProgram.h"
#include "Midi.h"
#include <LiquidCrystal.h>
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
LiquidCrystal lcd(2,3,4,5,6,7); //CHANGE TO PINS YOU USE
// HELLO WORLD EXAMPLE: (12, 11, 5, 4, 3, 2) ///////////
////////////////////////////////////////////////////////
////////////////////////////////////////////////////////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
///// EDIT THESE SETTINGS FOR YOUR REQUIREMENTS /////
/////////////////////////////////////////////////////
byte VU_CC_A = 3; //CC NUMBER FOR VU METER A
byte VU_CC_B = 4; //CC NUMBER FOR VU METER B
byte LCD_CHARS_PER_LINE = 8; //NUMBER OF CHARACTERS PER LINE ON YOUR LCD TO BE USED BY VU (LEFT TO RIGHT)
byte VU_A_LINE = 0; //LINE NUMBER FOR VU A TO APPEAR ON
byte VU_B_LINE = 1; //LINE NUMBER FOR VU B TO APPEAR ON
byte MIDI_CHANNEL = 0; //MIDI CHANNEL NUMBER TO BE USED, 0 = ANY CHANNEL
byte LED_PIN = 13; //13 IS ARDUINO STANDARD LED PIN NUMBER
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
byte VU_VAL_A = 0;
byte VU_VAL_B = 0;
byte VUM5[8] = { 0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F };
byte VUM4[8] = { 0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E,0x1E };
byte VUM3[8] = { 0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C };
byte VUM2[8] = { 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18 };
byte VUM1[8] = { 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10 };
byte VUM0[8] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };
byte b;
byte c;
class MyMidi : public Midi {
public:
MyMidi(HardwareSerial &s) : Midi(s) {}
void handleControlChange(unsigned int channel, unsigned int ccnumber, unsigned int ccvalue)
{
if (ccnumber == VU_CC_A){
VU_VAL_A = ccvalue;
}
if (ccnumber == VU_CC_B){
VU_VAL_B = ccvalue;
}
}
};
MyMidi midi(Serial);
void setup(){
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
lcd.createChar(0, VUM0);
lcd.createChar(1, VUM1);
lcd.createChar(2, VUM2);
lcd.createChar(3, VUM3);
lcd.createChar(4, VUM4);
lcd.createChar(5, VUM5);
lcd.begin(8, 2);
midi.begin(MIDI_CHANNEL);
lcd.clear();
digitalWrite(LED_PIN, HIGH);
}
void loop(){
midi.poll();
VU_A();
VU_B();
}
void VU_A(){
b = (LCD_CHARS_PER_LINE * VU_VAL_A) / 127;
c = (((LCD_CHARS_PER_LINE * 5) * VU_VAL_A) / 127) - (5 * b);
for(int x = 0; x < 8; x++){
if (x < b){ lcd.setCursor(x,VU_A_LINE); lcd.write(5); }
if (x > b){ lcd.setCursor(x,VU_A_LINE); lcd.write(0); }
}
lcd.setCursor(b,VU_A_LINE);
lcd.write(c);
}
void VU_B(){
b = (LCD_CHARS_PER_LINE * VU_VAL_B) / 127;
c = (((LCD_CHARS_PER_LINE * 5) * VU_VAL_B) / 127) - (5 * b);
for(int x = 0; x < 8; x++){
if (x < b){ lcd.setCursor(x,VU_B_LINE); lcd.write(5); }
if (x > b){ lcd.setCursor(x,VU_B_LINE); lcd.write(0); }
}
lcd.setCursor(b,VU_B_LINE);
lcd.write(c);
}
Bookmarks