This is an old revision of the document!


EMB5: Using LCD Display

Alphanumerical LCD is one of the most popular output devices in the Embedded and IoT world. Use of LCD with predefined line organisation (here 2 lines, 16 characters each) is as simple as sending character's ASCII code to the device. This is so much simpler than in the case of the use of dot-matrix displays, where it is necessary to use fonts. Obviously, use of fixed organisation LCD has its limits, and here only 32 characters can be presented to the user, simultanously. ASCII presents a limited set of characters but many LCDs provide an ability to re-define character map (the way each letter, digit or symbol looks). This way it is possible to introduce elements of graphics (i.e. frames), special symbols and letters.

In this scenario you will learn how to handle easily LCD to present information and retrieve it visually with webcam.

Prerequisites

Familiarise yourself with a hardware reference: this LCD is controlled with 6 GPIOs as presented in the “Table 1: ESP32-S3 SUT Node Hardware Details” on the hardware reference page.
You are going to use a library to handle the LCD display. It means you need to add it to your platformio.ini file. Use the template provided in the hardware reference section and extend it with library definition:

lib_deps = adafruit/Adafruit LiquidCrystal@^2.0.2

Suggested Readings and Knowledge Resources

Hands-on Lab Scenario

Task to be implemented

Draw “Hello World” in the upper line of the LCD display and “Hello IoT” in the lower one.

Start

Check if you can see full LCD display in your video stream. Book a device, create dummy Arduino file with void setup()… and void loop()….

Steps

Write some extra information if, i.e. some steps are optional; otherwise, cancel this paragraph (but do not remove the header).

Step 1

Include library to your source code:

#include <Adafruit_LiquidCrystal.h>

Step 2

Declare GPIOs controlling the LCD display, according to the hardware reference:

#define LCD_RS 2
#define LCD_ENABLE 1
#define LCD_D4 39
#define LCD_D5 40
#define LCD_D6 41
#define LCD_D7 42

Step 3

Declare a static instance of the LCD controller class and preconigure it with appropriate control GPIOs:

static Adafruit_LiquidCrystal lcd(LCD_RS, LCD_ENABLE, LCD_D4, LCD_D5, LCD_D6, LCD_D7);

Step 4

Initialise class with display area configuration (number of columns, here 16 and rows, here 2):

lcd.begin(16,2); 

Step 5

Implement your algorithm. Most common class's methods that will help you, are listed below:

  • .clear() - clears all content;
  • .setCursor(x,y) - set cursor, writing will start there;
  • .print(contents) - prints text in the cursor location, note there are many overloaded functions, accepting variety of arguments, including numerical.

Result validation

You should be able to see “Hello World” and “Hello IoT” on the LCD display now.

Project information


This Intellectual Output was implemented under the Erasmus+ KA2.
Project IOT-OPEN.EU Reloaded – Education-based strengthening of the European universities, companies and labour force in the global IoT market.
Project number: 2022-1-PL01-KA220-HED-000085090.

Erasmus+ Disclaimer
This project has been funded with support from the European Commission.
This publication reflects the views of only the author, and the Commission cannot be held responsible for any use that may be made of the information contained therein.

Copyright Notice
This content was created by the IOT-OPEN.EU Reloaded consortium, 2022,2024.
The content is Copyrighted and distributed under CC BY-NC Creative Commons Licence, free for Non-Commercial use.

en/iot-open/practical/hardware/sut/esp32/emb5_1.1708892377.txt.gz · Last modified: 2024/02/25 20:19 by pczekalski
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0