Hi all. I am trying a project for a guitar looper pedal. My new lcd screen powers on and has backlight, however, nothing is displayed in terms of writing on the screen. I have tested with hello world and the lcd works. It appears to be a programming issue.
The pins are labelled a little differently on this LCD:
1 VSS VDD VO RS RW E D0 D1 D2 D3 D4 D5 D6 D7 A K 16
Instead of EN it has an E, being new to this I am not sure how this will affect the workings of this with the programming. Bear in mind I did not write the program and therefore, the original program would have been written for a different brand of screen. I have looked in the LCD Library and everything refers to EN instead of E.
Not sure what to do.
The code for the pedal looper is as follows:
/* programable stompbox looper. Original design and sketch by CarraN. Corrected, updated and upgraded by Pascal Paquay */
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include <EEPROM.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27,2,1,0,4,5,6,7); /* set the LCD address to 0x27 for a 16 chars and 2 line display.
any other display can be used,just change parameters. */
const byte rows = 8; /*change it the same value as numberOfPedal variable */
const byte cols = 3;
char keys[rows][cols] = {
{'a','i','q'},
{'b','j','r'},
{'c','k','s'},
{'d','l','t'},
{'e','m','u'},
{'f','n','v'},
{'g','o','w'},
{'h','p','x'} /* {'y','z','0'}, {'1','2','3'}, {'*','%','!'} add more characters if needed */
};
byte rowPins[rows] = {22, 23, 24,25, 26,27, 28, 29};
byte colPins[cols] = {30, 31, 32};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
int relayPin[8] = {33,34,35,36,37,38,39,40};
int ledPin[8] = {41,42,43,44,45,46,47,48};
byte midiChannel = 0;
int i;
int readOut;
int numberOfPedal = 8; /*adapt this number to your needs = number of loop pedals */
/******************************************************/
void setup()
{
for(i=0; i<numberOfPedal; i++)
{
pinMode(relayPin[i], OUTPUT);
pinMode(ledPin[i], OUTPUT);
digitalWrite(relayPin[i],HIGH); //pullup all relay outputs in case off low level relayboard
}
Serial.begin(31250); /* for midi communication - pin 1 TX */
/*for (int i = 0; i < 512; i++) // erase eeprom (optional)
// EEPROM.write(i, 0); */
lcd.begin (16,2); // for 16 x 2 LCD module
lcd.setBacklightPin(3,POSITIVE);
lcd.setBacklight(HIGH);
lcd.print("Stompbox looper");
lcd.setCursor(0,1);
lcd.print("Pascal & CarraN");
delay(200);
}
/*********************************************************/
void midiProg(byte status, int data)
{
Serial.write(status);
Serial.write(data);
}
/*********************************************************/
void memory(int addr, int led)
{
for(i=0; i<numberOfPedal; i++)
{
EEPROM.write((addr) + i, digitalRead(relayPin[i]));
digitalWrite(ledPin[i], LOW);
}
lcd.clear();lcd.print("Stored at ");
lcd.print(led + 1);
delay(100);
digitalWrite(ledPin[led], HIGH);
delay(100);
digitalWrite(ledPin[led], LOW);
delay(100);
digitalWrite(ledPin[led], HIGH);
delay(100);
digitalWrite(ledPin[led], LOW);
delay(100);
digitalWrite(ledPin[led], HIGH);
delay(100);
digitalWrite(ledPin[led], LOW);
delay(100);
digitalWrite(ledPin[led], HIGH);
lcd.clear();
}
/*********************************************************/
void writeOut(int relay)
{
digitalWrite(relayPin[relay], !digitalRead(relayPin[relay]));
digitalWrite(ledPin[relay], !digitalRead(relayPin[relay]));
lcd.clear();
lcd.print(" loop FX ");
lcd.print(relay + 1);
}
/*********************************************************/
void readPreset(int addr, int pcNum, int led)
{
for(i=0; i<numberOfPedal; i++)
{
digitalWrite(relayPin[i], EEPROM.read((addr)+i));
digitalWrite(ledPin[i], LOW);
digitalWrite(ledPin[led], HIGH);
}
lcd.clear();
lcd.print(" Preset ");
lcd.print(led + 1);
midiProg(0xC0, pcNum +1); /* send midi change program 1 */
}
/******************************************************/
void loop()
{
char key = keypad.getKey();
if(key) // Check for a valid key.
{
switch (key)
{
case 'a': /* 'a' to 'h' for 8 pedals- adapt it to the number you needs */
writeOut(0);
break;
case 'b':
writeOut(1); /* (relay number,led number) */
break;
case 'c':
writeOut(2);
break;
case 'd':
writeOut(3);
break;
case 'e':
writeOut(4);
break;
case 'f':
writeOut(5);
break;
case 'g':
writeOut(6);
break;
case 'h':
writeOut(7);
break;
/****************************** STORE PRESET MODE */
case 'i': /* same remark as previous */
memory(11,0);
break;
case 'j':
memory(21,1); /* (EEPROM address, led) */
break;
case 'k':
memory(31,2);
break;
case 'l':
memory(41,3);
break;
case 'm':
memory(51,4);
break;
case 'n':
memory(61,5);
break;
case 'o':
memory(71,6);
break;
case 'p':
memory(81,7);
break;
/****************************** READ PRESET MODE (EEProm address,PcNum,led number)*/
case 'q':
readPreset(11, 1, 0);
break;
case 'r':
readPreset(21, 2, 1);
break;
case 's':
readPreset(31, 3, 2);
break;
case 't':
readPreset(41, 4, 3);
break;
case 'u':
readPreset(51, 5, 4);
break;
case 'v':
readPreset(61, 6, 5);
break;
case 'w':
readPreset(71, 7, 6);
break;
case 'x':
readPreset(81, 8, 7);
break;
}
}
}