搜索代码

第20/31课:使用LCD1602与Arduino显示文本 | Robojax

第20/31课:使用LCD1602与Arduino显示文本 | Robojax

简介

LCD1602是Arduino项目中最流行的字母数字显示屏之一,当它与I2C转接板配合使用时,操作变得非常简单。在本教程中,您将学习如何显示文本、数字和自定义字符,以及如何让文本在屏幕上滚动。我们还将向您展示如何将LCD与其他传感器结合,创建实用的监控工具。本指南是一个更广泛的Arduino课程的一部分,旨在帮助您为家庭、学校或工作坊制作有用的设备。

截图-2

以下是一些利用这些知识可以构建的实用想法:

  • 用于温室或爬行动物饲养箱的温湿度监测器。
  • 用于检查项目中电池电量的简易电压表。
  • 用于停车辅助或显示垃圾桶满溢程度的距离传感器。

硬件概述

LCD1602是一款16字符×2行的显示屏。背面的模块是I2C(或I²C)适配器,它将标准并行连接所需的线数减少到仅四根:地线、VCC、SDA和SCL。这使得接线更加简单,并释放了Arduino上的许多数字引脚。

该显示屏具有背光功能,可通过软件开启或关闭。I2C模块上还有一个小电位器用于调节对比度。如果您给显示屏通电后看不到任何内容,只需旋转该螺丝,直到文本可见(视频中02:47处)。

该显示屏有不同的版本,例如LCD2004具有20个字符和4行。I2C地址也可以通过焊接模块上的A0、A1和A2跳线来更改(视频中03:51处)。默认地址通常是0x27,但也可能有所不同,因此最好运行I2C扫描程序来找到您特定模块的正确地址。

硬件组件

要跟随本视频中的主要演示,您需要以下组件:

  • Arduino Uno(或任何兼容板)
  • 带I2C模块的LCD1602
  • 面包板和跳线

对于后续部分,您还需要DHT11传感器、电位器或超声波传感器,具体取决于您想构建哪个项目。

接线指南

lcd1602_I2C_wiring_sunfounder

连接LCD非常简单。接线图清晰地显示了连接方式。

将I2C模块上的引脚连接到您的Arduino,如下所示:

  • GND连接到Arduino的GND
  • VCC连接到Arduino的5V
  • SDA连接到Arduino的A4
  • SCL连接到Arduino的A5

如果您的Arduino板有专用的SDA和SCL引脚,您也可以连接到这些引脚(视频中05:47处)。

安装库

该模块需要“Arduino Liquid Crystal I2C”库。您可以从视频描述中提供的链接或Robojax网站下载。下载后,在Arduino IDE中通过Sketch > Include Library > Add .ZIP Library安装它,并选择下载的文件(视频中06:41处)。

代码说明

由于没有提供代码片段,我们将解释视频中使用的代码的一般结构。

代码首先包含必要的库:用于I2C通信的Wire.h和用于显示屏的LiquidCrystal_I2C.h库。关键部分是创建LCD对象。您需要设置正确的I2C地址和显示屏的尺寸:

// 将LCD地址设置为0x27,适用于16字符2行显示屏
LiquidCrystal_I2C lcd(0x27, 16, 2);

如果您的显示屏没有显示任何内容,您可能需要将0x27更改为0x3F或I2C扫描程序找到的其他地址。162代表显示屏的列数和行数。

setup()函数中,您初始化LCD并打开背光:

void setup() {
  lcd.init();
  lcd.backlight();
}

要打印文本,您使用lcd.setCursor(column, row)函数定位光标,然后使用lcd.print()显示数据。例如,要在第二行打印,您可以使用lcd.setCursor(0, 1)。视频还解释了如何通过使用lcd.write(223)打印特殊字符,如度符号(视频中31:42处)。

演示

视频演示了LCD的几个关键功能。首先,它展示了基本的“Hello World”文本打印以及如何使用lcd.scrollDisplayLeft()函数让文本在屏幕上移动。随后,它将LCD与DHT11传感器结合显示温度和湿度,与电位器结合显示电压,以及与超声波传感器结合显示距离。

对于温度显示,代码读取传感器并打印数值。要显示不带小数的整数,您可以将浮点值转换为整数,如视频所示(视频中32:21处)。

对于电压表,代码读取电位器的模拟值,将其缩放到0-5V的电压范围,并显示在屏幕上(视频中34:31处)。

最终演示将LCD与超声波传感器结合,以厘米为单位显示测量距离(视频中37:55处)。

本视频中的相关项目

本视频还包含其他项目教程。您可以在此处找到它们:

章节

  • [00:00] LCD1602简介及课程概述
  • [01:30] LCD1602和I2C模块的硬件概述
  • [02:47] 调整显示对比度和背光
  • [03:14] 引脚连接和I2C地址选择
  • [05:28] LCD接线图
  • [06:16] 安装所需库
  • [07:24] 打印文本的基本代码
  • [11:10] 闪烁光标示例
  • [13:46] 自定义字符和打印特殊符号
  • [18:51] 串行显示示例
  • [23:16] 在LCD上滚动文本
  • [36:51] 将LCD与超声波传感器结合

图像

LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602 displaying voltage and title
LCD1602 displaying voltage and title
screenshot-2
screenshot-2
lcd1602_I2C_wiring_sunfounder
lcd1602_I2C_wiring_sunfounder
910-Lesson 20/31: Displaying simple text on LCD1602
语言: C++
/*
Lesson 20/31: Displaying text on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg

*/
/*
This is code for LCD1602 Display with I2C module
 * watch the video for this code https://youtu.be/q9YC_GVHy5A
 
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purpose only.
 * This library is based on work done by DFROBOT (www.dfrobot.com).
 */
/*
 *  This code has been modefied from the Arduino library
 *  Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
 *  in Ajax, Ontario, Canada
 *  for Robojax.com
 *  
 *  This is code for LCD1602 Display with I2C module
 *  which can display text on the screen.
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);



void setup()
{
  // Robojax code for LCD with I2C
  // initialize the LCD, 
  lcd.begin();
 
  // Turn on the blacklight and print a message.
  //lcd.backlight();
  // Robojax code for LCD with I2C


}

void loop()
{

  lcd.clear();
  lcd.setCursor (0,0);  
  lcd.print("SunFounder ");
  lcd.setCursor (0,1);
  lcd.write(244);


  delay(500);
 //end of loopcode Robojax code for LCD with I2C
}

文件📁

Arduino 库(zip 格式)