ARDUINO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Cách giao tiếp Keypad với màn hình LCD trong Arduino

Trong bài viết này mình sẽ hướng dẫn các bạn cách giao tiếp Keypad với màn hình LCD trong Arduino. Trong thực tế được áp dụng rất nhiều như các ổ khóa cửa, tủ thông mình, máy tính, cây ATM, ... .

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Qua bài viết này các bạn có thể học được cách truyền dữ liệu giữa hai thiết bị khác nhau. Khi đã nắm vững thì việc thực hiện kết nối giữa các thiết bị với nhau rất dễ dàng.

Các thiết bị cần thiết để Keypad giao tiếp với LCD

Để có thể giao tiếp giữa Keypad và màn hình LCD ta cần thêm một số thiết bị khác như sau:

  • 1 x Arduino Uno.
  • 1 x USB 2.0 loại A / B.
  • 1 x LCD I2C 16x2.
  • 1 x Keypad 4x4.
  • 1 x Dây điện nối.

arduino 03 pngarduino 02 png

Ngoài ra các bạn có thể thay thế màn hình LCD I2C 16x2 và Keypad 4x4 bằng loại mà bạn mong muốn. Ở đây mình sử dụng hai loại này để giao tiếp với nhau.

Bài viết này được đăng tại [free tuts .net]

Sơ đồ mạch điện để Keypad giao tiếp với LCD trong Arduino

Dưới đây là sơ đồ mạch điện để Keypad giao tiếp với màn hình LCD trong Arduino.

arduino 01 png

Ta lần lược nối các thiết bị màn hình LCD I2C và Keypad với Arduino. Trên màn hình LCD I2C cho ra 4 chân bao gồm chân GND, VCC và 2 chân tín hiệu SDA, SCL.

Màn hình LCD I2C 16x2.

  • Nối chân GND của LCD I2C với chân GND của Arduino.
  • Nối chân VCC của LCD I2C với chân 5V của Arduino.
  • Nối hai chân tín hiệu SDA, SCL lần lượt với chân A4, A5 của Arduino.

Keypad 4x4.

  • Nối lần lượt các chân điều khiển của Keypad 4x4 vào các chân 2, 3, 4, 5, 6, 7, 8, 9 của Arduino.

Cách giao tiếp Keypad với màn hình LCD trong Arduino

Để có thể sử dụng hai thiết bị Keypad và màn hình LCD ta cần thêm hai thiết bị này vào Arduino. Đầu tiên ta vào Tool -> Manager Libraries.

arduino 04 png

Tiếp đến ta tìm kiếm hai thiết bị này và cài đặt nó.

Keypad 4x4.

arduino 05 png

LCD I2C 16x2.

arduino 06 png

Dưới đây mình có đoạn chương trình xử lý giúp Keypad có thể giao tiếp được với LCD. Khi người dùng nhấn vào bàn phím thì nội dung sẽ được hiển thị lên màn hình LCD.

//khai báo thư viện keypad và liquidCrystal_I2c để sử dụng các hàm hỗ trợ
#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
//khai báo số hàng số cột của keypad
const int ROW_NUM    = 4; 
const int COLUMN_NUM = 4;
//khai báo các ký tự trả về từ keypad
char keys[ROW_NUM][COLUMN_NUM] = {
  {'1','2','3', 'A'},
  {'4','5','6', 'B'},
  {'7','8','9', 'C'},
  {'*','0','#', 'D'}
};
//khai báo chân điều khiển keypad trên arduino
byte pin_rows[ROW_NUM] = {9, 8, 7, 6};
byte pin_column[COLUMN_NUM] = {5, 4, 3, 2};
//khai báo sử dụng màn hình lcd với 16 cột và hai hàng
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM );
LiquidCrystal_I2C lcd(0x27, 16, 2);
//khai báo biến để đếm số ký tự trên màn hình lcd
int cursorColumn = 0;

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

void loop(){
  //khai báo và gán giá trị nhận được từ keypad cho biến key
  char key = keypad.getKey();
  //nếu tồn tại ký tự key thì hiển thị nó lên màn hình LCD
  if (key) {
    lcd.setCursor(cursorColumn, 0);
    lcd.print(key); 
    //sau khi hiển thị thì tăng số lượng ký tự lên 1
    cursorColumn++;                
    //nếu số lượng ký tự quá 16 thì xóa đi và reset biến cursorColumn
    if(cursorColumn == 16) { 
      lcd.clear();
      cursorColumn = 0;
    }
  }
}

Kết quả: Khi các bạn đã kết nối các thiết bị và tiến hành nạp code cho Arduino. Bây giờ chỉ cần kiểm tra bằng cách nhấn các phím xem nó có hiển thị lên màn hình hay không.

Kết luận

Như vậy là chúng ta đã tìm hiểu về cách giao tiếp giữa Keypad với màn hình LCD I2C. Khi các bạn đã biết cách kết nối giữa các thiết bị thì có thể tự mua cho mình để khám phá nhé. Bài tiếp theo mình sẽ hướng dẫn các bạn cách điều khiển Touch Sensor trong Arduino.

Cùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top