A strange thing to note that I followed the same format and could only get the first array to print when I called it by name. In my case, it was called up_arrow and down_arrow. The second array, named down_arrow, would not print, only up_arrow. When I called the memory location (0x01), it printed just fine.
Here is my code from void setup:
void setup
static unsigned char up_arrow[8] = {0x04, 0x0E, 0x15, 0x04, 0x04, 0x04, 0x04, 0x00};
static unsigned char down_arrow[8] = {0x00, 0x04, 0x04, 0x04, 0x04, 0x15, 0x0E, 0x04};
lcd.clear();
defChar (lcd, 0x00, up_arrow);
defChar (lcd, 0x01, down_arrow);
void DRAW_UP_ARROW()
{
int up_arrow;
lcd.write(up_arrow);
}
void DRAW_DOWN_ARROW()
{
int down_arrow;
lcd.write(down_arrow);
}
When I call DRAW_UP_ARROW, it will print the up arrow. When I call DRAW_DOWN_ARROW, it prints an up arrow. If I tell it lcd.write(0x01) instead, it will then print a down arrow. Any ideas?