PaulStoffregen
Well-known member
Randy from EarthLCD sent me an arLCD for testing with Teensy.
My first impression of arLCD it's a bit spendy, but you get quite a lot. It's a touch-sensitive 320x240 screen with 16 bit color. There's a GPU that runs separately. The GPU is controlled by serial communication, but it caches fonts, images, even strings, so the messages are short and pretty efficient. I'm actually pretty impressed with how well it performs.
It also has an Arduino ('328 AVR) clone on board. Honestly, for simple projects, you'd probably just use the built-in Arduino clone. Yeah, I should of course try to sell a Teensy, but for simple stuff the on-board AVR is probably fine. For more processor intensive work that's not practical on 8 bit AVR, like real-time music visualization, connecting a Teensy3 could be worthwhile? Maybe I'll give that a try after the upcoming Arduino board and library are released.......
When you first get the arLCD, it's on-board Arduino clone has "arLCDTest" programmed. The code is one of the many examples in their library.
(on all these images, click for full size)
Of course, the thing I'm interested in doing is trying to use it from Teensy3.
First, you'll need these modified files: View attachment arLCD_library_modified.zip. These changes work on Teensy and also the build-in Arduino clone, and they probably also work on other boards. Hopefully EarthLCD will release these changes in a future version.
Before connecting Teensy, you need to program the on-board Arduino clone with a dummy program. The blink from File > Examples > 01.Basics > Blink is fine. As long as it doesn't use Serial.begin() or the library's begin() function, the built-in '328 chip will not drive the serial line, so you can connect a Teensy (or other board) to control the LCD.
It turns out the LCD is able to work fine by applying 5 volts from the Teensy for power. Here's how I connected it. Even though pins 0 to 6 are connected, only 0, 1 and 2 are actually used. 2 is for attachInterrupt() used by some of the examples.
Here it is running the "analogMeter" example. That blue trim-pot I connected is supplying the variable voltage to the A0 analog input.
The display can be really bright. My camera didn't capture this too well. It really does look very nice in real life.
One small caveat I ran into is the GPU's bootup time. If you just upload code to Teensy3, it works great. But at powerup, the GPU spends about 2 seconds booting up and displaying a splash screen.
I believe the GPU holds the on-board '328 chip in reset mode while it's busy. But if you connect an external board like Teensy to use the LCD, a delay is needed. Here's the modified setup() function for that analogMeter example.
As it starts up, you'll see this for a brief moment before the analog meter appears. The delay could probably be less than 2.5 seconds. But without any delay, the GPU doesn't hear some of the initial setup.
Edit: the arLCD comes with those nice metal mounting posts that are conveniently flush with the surface of the display. It does not come with the screws. I added those as I was working with the display and adding the Teensy3, so the beautiful screen wouldn't rub and scratch on my well-worn workbench. One thing I really like is the holes are big enough for normal 4-40 or M3 screws (most LCDs have tiny holes), which is really nice for putting this display into a nicely assembled project.
If you do buy an arLCD, please tell them you saw it here.
My first impression of arLCD it's a bit spendy, but you get quite a lot. It's a touch-sensitive 320x240 screen with 16 bit color. There's a GPU that runs separately. The GPU is controlled by serial communication, but it caches fonts, images, even strings, so the messages are short and pretty efficient. I'm actually pretty impressed with how well it performs.
It also has an Arduino ('328 AVR) clone on board. Honestly, for simple projects, you'd probably just use the built-in Arduino clone. Yeah, I should of course try to sell a Teensy, but for simple stuff the on-board AVR is probably fine. For more processor intensive work that's not practical on 8 bit AVR, like real-time music visualization, connecting a Teensy3 could be worthwhile? Maybe I'll give that a try after the upcoming Arduino board and library are released.......
When you first get the arLCD, it's on-board Arduino clone has "arLCDTest" programmed. The code is one of the many examples in their library.
(on all these images, click for full size)
Of course, the thing I'm interested in doing is trying to use it from Teensy3.
First, you'll need these modified files: View attachment arLCD_library_modified.zip. These changes work on Teensy and also the build-in Arduino clone, and they probably also work on other boards. Hopefully EarthLCD will release these changes in a future version.
Before connecting Teensy, you need to program the on-board Arduino clone with a dummy program. The blink from File > Examples > 01.Basics > Blink is fine. As long as it doesn't use Serial.begin() or the library's begin() function, the built-in '328 chip will not drive the serial line, so you can connect a Teensy (or other board) to control the LCD.
It turns out the LCD is able to work fine by applying 5 volts from the Teensy for power. Here's how I connected it. Even though pins 0 to 6 are connected, only 0, 1 and 2 are actually used. 2 is for attachInterrupt() used by some of the examples.
Here it is running the "analogMeter" example. That blue trim-pot I connected is supplying the variable voltage to the A0 analog input.
The display can be really bright. My camera didn't capture this too well. It really does look very nice in real life.
One small caveat I ran into is the GPU's bootup time. If you just upload code to Teensy3, it works great. But at powerup, the GPU spends about 2 seconds booting up and displaying a splash screen.
I believe the GPU holds the on-board '328 chip in reset mode while it's busy. But if you connect an external board like Teensy to use the LCD, a delay is needed. Here's the modified setup() function for that analogMeter example.
Code:
void setup()
{
lcd.begin( EZM_BAUD_RATE );
lcd.cls( BLACK, WHITE );
lcd.font("0");
lcd.light(50);
lcd.xy(55,0);
lcd.printString("delay for LCD bootup");
delay(2500);
lcd.begin( EZM_BAUD_RATE );
lcd.cls( WHITE );
lcd.fontw( 1, "0" );
lcd.string( 1, "ALOG_0" ); // stringId 1
lcd.theme( 1, 155 ,152, 3, 3, 3, 1, 4, 5, 0, 16 );
lcd.analogMeter( 1, xPos,yPos, width, height, option, 0, 0, 1023, 1, 1, type );
}
As it starts up, you'll see this for a brief moment before the analog meter appears. The delay could probably be less than 2.5 seconds. But without any delay, the GPU doesn't hear some of the initial setup.
Edit: the arLCD comes with those nice metal mounting posts that are conveniently flush with the surface of the display. It does not come with the screws. I added those as I was working with the display and adding the Teensy3, so the beautiful screen wouldn't rub and scratch on my well-worn workbench. One thing I really like is the holes are big enough for normal 4-40 or M3 screws (most LCDs have tiny holes), which is really nice for putting this display into a nicely assembled project.
If you do buy an arLCD, please tell them you saw it here.
Last edited: