Search Code

1602 LCD Keypad Shield: Mã Cơ Bản

1602 LCD Keypad Shield: Mã Cơ Bản

Trong hướng dẫn này, chúng ta sẽ khám phá cách lập trình và sử dụng một 1602 LCD Keypad Shield với Arduino. Shield này có màn hình hiển thị 16 ký tự trên 2 dòng và một bàn phím cho phép thực hiện nhiều chức năng nhập liệu khác nhau. Đến cuối hướng dẫn này, bạn sẽ có thể hiển thị thông điệp và phản hồi các thao tác nhấn phím một cách hiệu quả.

Trọng tâm sẽ là tạo một chương trình đơn giản để phát hiện các thao tác nhấn phím và hiển thị các thông điệp tương ứng trên màn hình LCD. Bạn có thể xem video để theo dõi phần trình diễn trực quan (trong video tại 03:00).

Giải thích về Phần cứng

Thành phần chính trong bản dựng này là 1602 LCD Keypad Shield. Shield này kết nối trực tiếp với bo mạch Arduino và cung cấp cả màn hình hiển thị lẫn bàn phím để tương tác với người dùng. Màn hình LCD có thể hiển thị các thông điệp văn bản, trong khi bàn phím cho phép người dùng chọn các tùy chọn thông qua nhiều nút bấm khác nhau.

Bàn phím hoạt động bằng cách sử dụng một đầu vào analog, mà Arduino đọc để xác định nút nào đang được nhấn. Mỗi nút có một điện trở duy nhất, cho phép vi điều khiển xác định nút dựa trên giá trị analog nhận được từ cảm biến.

Chi tiết từ Bảng dữ liệu

Nhà sản xuấtGeneric
Số bộ phận1602 LCD Keypad Shield
Điện áp Logic/IO5 V
Điện áp cấp nguồn5 V
Dòng điện đầu ra (mỗi kênh)2 mA
Dòng điện đỉnh (mỗi kênh)20 mA
Hướng dẫn tần số PWMN/A
Ngưỡng logic đầu vào0,3 Vcc đến 0,7 Vcc
Sụt áp / RDS(on) / bão hòaN/A
Giới hạn nhiệt70 °C
Kiểu đóng góiĐịnh dạng Shield
Ghi chú / biến thểTương thích với Arduino Uno

  • Đảm bảo LCD được cấp nguồn ở mức 5 V để tránh hư hỏng.
  • Sử dụng điện trở kéo lên phù hợp cho bàn phím nếu cần.
  • Chống nhiễu phím nhấn trong mã để tránh kích hoạt nhiều lần.
  • Theo dõi các giới hạn dòng điện để tránh quá nhiệt.
  • Kiểm tra các kết nối trước khi cấp nguồn cho mạch.

Hướng dẫn Đấu dây

Để đấu dây 1602 LCD Keypad Shield, chỉ cần cắm trực tiếp vào bo mạch Arduino. Shield được thiết kế để khớp với cấu hình chân của Arduino Uno. Đảm bảo các chân được kết nối chắc chắn.

Các nút bàn phím kết nối với chân đầu vào analog A0. Các đường dữ liệu LCD được xử lý nội bộ bởi thư viện được sử dụng, vì vậy bạn sẽ không cần phải đấu dây chúng riêng biệt. Shield cũng sử dụng một vài chân kỹ thuật số để điều khiển đèn nền và các chức năng khác, được xác định trước trong thư viện. Nếu bạn làm theo tài liệu của thư viện, bạn sẽ thấy rằng nó thường tự động xử lý các kết nối này.

Ví dụ Mã & Hướng dẫn Chi tiết

Trong mã, trước tiên chúng ta bao gồm thư viện cần thiết để điều khiển LCD:

#include <LCD4Bit_mod.h>

Thư viện này hỗ trợ giao tiếp với 1602 LCD. Sau đó, chúng ta tạo một phiên bản của đối tượng LCD với số dòng được chỉ định.

Tiếp theo, chúng ta khởi tạo LCD trong hàm setup():

lcd.init();

Dòng này chuẩn bị LCD để sử dụng. Sau khi khởi tạo, chúng ta có thể hiển thị một thông điệp kiểm tra bằng hàm lcd.printIn().

Trong vòng lặp chính, chúng ta đọc đầu vào analog để phát hiện các thao tác nhấn phím:

adc_key_in = analogRead(0);

Dòng này đọc giá trị từ bàn phím. Giá trị giúp xác định phím nào đã được nhấn bằng hàm get_key() chuyển đổi giá trị ADC thành số phím.

Trình diễn / Điều gì sẽ xảy ra

Khi bạn chạy mã, việc nhấn các nút sẽ hiển thị các thông điệp tương ứng với phím được nhấn trên màn hình LCD. Ví dụ, nhấn phím phải sẽ hiển thị "Right Key OK" trên màn hình (trong video tại 05:30). Nếu việc phát hiện phím không hoạt động chính xác, hãy kiểm tra hệ thống dây điện và đảm bảo các thư viện chính xác được bao gồm trong Arduino IDE của bạn.

Mốc thời gian Video

  • 00:00 - Giới thiệu
  • 03:00 - Tổng quan về Mã
  • 05:30 - Trình diễn Nhấn Phím
18-Source code for a 602 LCD keypad shield for Arduino
Ngôn ngữ: C++
// Example use of LCD4Bit_mod library
// Downloaded from https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LCD4Bit_mod
// October 1, 2017. This example will work with a 1602 LCD keypad shield.
// Code used for a YouTube video for the Robojax channel
// Watch the video https://youtu.be/naSSiS_9rEw


#include <LCD4Bit_mod.h> 
// Create an object to control an LCD.  
// Number of lines in display = 1
LCD4Bit_mod lcd = LCD4Bit_mod(2); 

// Key messages
char msgs[5][15] = {"Right Key OK ", 
                    "Up Key OK    ", 
                    "Down Key OK  ", 
                    "Left Key OK  ", 
                    "Select Key OK" };
int  adc_key_val[5] ={30, 150, 360, 535, 760 };
int NUM_KEYS = 5;
int adc_key_in;
int key=-1;
int oldkey=-1;

void setup() { 
  pinMode(13, OUTPUT);  // We'll use the debug LED to output a heartbeat

  lcd.init();
  // Optionally, now set up our application-specific display settings, overriding whatever the LCD did in lcd.init()
  // lcd.commandWrite(0x0F);// Cursor on, display on, blink on.  (Nasty!)
   lcd.clear();
  lcd.printIn("Robojax.com Testing");
    
}

void loop() {

	adc_key_in = analogRead(0);    // Read the value from the sensor  
  digitalWrite(13, HIGH);  
  key = get_key(adc_key_in);		        // Convert into key press
	
	if (key != oldkey)				    // If keypress is detected
	{
    delay(50);		// Wait for debounce time
		adc_key_in = analogRead(0);    // Read the value from the sensor  
    key = get_key(adc_key_in);		        // Convert into key press
    if (key != oldkey)				
    {			
      oldkey = key;
      if (key >=0){
      lcd.cursorTo(2, 0);  // Line = 2, x = 0
  			lcd.printIn(msgs[key]);
      }
    }
  }
  
  //delay(1000);
  digitalWrite(13, LOW);
  

 
  
  
}

// Convert ADC value to key number
int get_key(unsigned int input)
{
	int k;
    
	for (k = 0; k < NUM_KEYS; k++)
	{
		if (input < adc_key_val[k])
		{
           
    return k;
        }
	}
    
    if (k >= NUM_KEYS)
        k = -1;     // No valid key pressed
    
    return k;
}

Tài nguyên & tài liệu tham khảo

Tập tin📁

Không có tệp nào khả dụng.