LẬP TRÌNH ARDUINO VỚI KEYPAD LCD 16X2

Keypad Lcd 16x2 là một thiết bị ứng dụng rất nhiều trong các ứng dụng arduino. Gần như nó không thể thiếu trong các ứng dụng cần có sự theo dõi , giám sát các thông số. Mặt khác nó còn là một thiết bị hiển thị cho phép người dùng cần thao tác hoặc thao tác chức năng gì trên ứng dụng của mình. Vì tất cả các ứng dụng đều có thể được lập trình hiển thị trên LCD. Vì thế, Arduino Shop sẽ hướng dẫn các bạn cách lập trình arduino với keypad lcd 16x2 để làm sao hiển thị được thông tin lên màn hình. Cách đọc các nút nhấn và cách lập trình menu trên keypad lcd 16x2 với arduino. Hãy xem kỹ bài viết bên dưới để được hiểu rõ về ứng dụng. Chúc các bạn thực hành thành công.

Ngày đăng: 25-09-2016

3,053 lượt xem

1. Giới thiệu về đề tài: HƯỚNG DẪN LẬP TRÌNH ARDUINO VỚI KEYPAD 16X2

Ở đây, Arduino shop muốn xây dựng một dự án lập trình menu chức năng cho arduino hiển thị trên Kepad LCD. Để thực hiện việc chuyển đổi từ menu này sang menu khác bằng các phím nhấn trên keypad lcd 16x2. Các phím nhất trên keypad lcd 26x2 bạn có thể cụ thể bằng hình bên dưới:

keypad-lcd-16x2-Shield

keypad-lcd-16x2-Shield

 

Giờ chúng ta sẽ lập trình các phím chức năng bên trên làm sao để chức năng của chúng thực hiện như yêu cầu của mình. Giả sử, chúng ta cần lập 1 menu chức năng như sau: Khi mở nguồn lên, dòng đầu tiền của lcd là "CHAO CAC BAN", dòng thứ 2 là " 1. AUTO". Khi chúng ta thực hiện nhấn nút "UP"( trên keypad lcd) thì tự động dòng 2 nhảy sang "2. SETUP TIMER"... Để làm được điều này, chúng ta phải làm sao? Và giờ chúng ta bắt đầu tiến hành đi nào hehe.

2. Chuẩn bị phần cứng:

- Các bạn chuẩn bị 1 board mạch Arduino có thể là Arduino Uno R3 hoặc Arduino Mega 2560

- Chuẩn bị 1 keypad lcd 16x2 như hình sản phẩm mà bên Arduino Shop đã đăng đầu bài.

Các sản phẩm này hiện đang cung cấp bởi Arduino Shop, các bạn có thể liên hệ ngay tại cửa hàng để được hỗ trợ tư vấng về sản phẩm này nhé.

3. Lập trình.

Đầu tiên, chúng ra nên suy nghỉ cái menu của chúng ra như thế nào? Nó giống như cây thư mục, có từng nội dung nôi một. Do vậy, Arduino Shop đã làm sẵn một ví dụ bên dưới nhé:

Ví dụ, mình tạo ra một cái menu như bên dưới, và lập trình cho nó nhé:

Menu-chinh

Cây menu chính

Giả sử, nếu chúng ta nhấn nút "UP" trên keypad lcd 16x2 thì nó sẽ tự động chuyển từ mục 1 sang mục 2, hoặc từ mục 2 sang mục 3..., Và ngược lại, nếu nhấn nút "DOWN" thì nó sẽ tự động nhảy từ mục 3 sang mục 2...

Để làm được điều này, mời các bạn tham khảo đoạn code bên dưới nha:

#define RIGHT  0
#define UP     1
#define DOWN   7
#define LEFT   3
#define SELECT 4
#define NONE   5
#include <LiquidCrystal.h>
#include <EEPROM.h>
#include <Button.h>
int dem;int lcd_key;
LiquidCrystal lcd(8,9,4,5,6,7);
// khai bao bien chong nhieu
int read_LCD_buttons()
{
float a=analogRead(A0);
delay(80);
int mm;
        if(a>=0 and a<75)
        {
          mm=3;
        }
        else if(a>=97 and a<150)
        {
         mm=1;
        }
         else if(a>=160 and a<380)
        {
           mm=7;
        }
          else if(a>=385 and a<560)
        {
          mm=0;
        }
           else if(a>=562 and a<700)
        {
          mm=4; 
        }
        return mm;
        delay(100);
}
int menu1()
  {
  lcd_key=read_LCD_buttons();
  delay(100);
  switch(lcd_key)
  {
    case UP:
    {
      dem++;
      if(dem>=6) dem =6;
      break;
    }
    case DOWN:
    {
      dem--;
      if(dem<=0) dem=0;
      break;
    }
  }
  Serial.println(dem);
return dem;
}

void setup() {
  // put your setup code here, to run once:
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("MENU CHINH");
  }
void loop() {
  lcd_key=menu1();
  delay(100);
  int check;
  int check2;
  int kiemtra;
  switch(lcd_key)
  {
    case 0:// dã l?p trình xong
    {
       lcd.clear();
       lcd.setCursor(0,0); lcd.print("Menu Control");
       lcd.setCursor(0,2); lcd.print("1. Set up timer");
       k1:
         check=read_LCD_buttons();
         delay(100);// ch?ng d?i do n?t nh?n d? b? nhi?u
         if((check==UP)or(check==DOWN))
         break;
         else if(check==SELECT)
         {
         lcd.clear();
         Laplai1:
           // Ðua chuong trình chính vào dây
          lcd.print("Vao menu 1");
          kiemtra=read_LCD_buttons();
          delay(100);
          if(kiemtra==RIGHT)
          {
            break;
          }else goto Laplai1;
         }else goto k1;
      }
    case 1:
     {
       lcd.clear();
       lcd.setCursor(0,0); lcd.print("Menu Control");
       lcd.setCursor(0,2); lcd.print("2. Chay tay");
       k2:
       check=read_LCD_buttons();
       delay(100);
       if((check==UP)or(check==DOWN))
       break;
       else if(check==SELECT)
       {
          lcd.clear();
          lcd.print("Setup Timers");
          lcd.setCursor(0,1);
          lcd.print("Da Setup Xong...      ");
          delay(2000);
          break;
       }else goto k2;
    }
    case 2:
    {
       lcd.clear();
       lcd.setCursor(0,0); lcd.print("Menu Control");
       lcd.setCursor(0,2); lcd.print("3.chay tu dong");
        kk3:
         check=read_LCD_buttons();
         if(check==UP) break;
         else if(check==DOWN) break;
         if(check==SELECT)
         {
            lcd.clear();
            lcd.setCursor(0,0);
            lcd.print("Chay Tu Dong");
            Laplai2:
            kiemtra=read_LCD_buttons();
            delay(100);
            if(kiemtra==RIGHT)
            {
              lcd.setCursor(0,1); lcd.print(" Da chay xong...");
              delay(100);
              break;
            }else goto Laplai2;
        }else goto kk3;
         delay(100);
      }
    case 3:
    {
       lcd.clear();
       lcd.setCursor(0,0); lcd.print("Menu Control");
       lcd.setCursor(0,2); lcd.print("4.xoa du lieu");  
        k4:
       check=read_LCD_buttons();
       delay(10);
       if((check==UP)or(check==DOWN)) break;
       else if(check==SELECT)
       {
        
         lcd.clear();
         lai11:
         lcd.print("Da kiem tra");
         kiemtra=read_LCD_buttons();
         if(kiemtra==RIGHT)
         {
           break;
         }else goto lai11;
       }else goto k4;
    }
   
  case 4: 
   {
       lcd.clear();
       lcd.setCursor(0,0); lcd.print("Menu Control");
       lcd.setCursor(0,2); lcd.print("6. Xoa du lieu");   // inclue up and down mold
       k6:
       check=read_LCD_buttons();
       delay(100);
       if((check==UP)or(check==DOWN))   
       break;
       else if(check==SELECT)
       {
           lcd.clear();
           lcd.print("DELETE DATA...?");
           lcd.setCursor(0,2);
           lcd.print("YES");
           lcd.setCursor(10,2);
           lcd.print("NO");
           lai111:
           kiemtra=read_LCD_buttons();
           delay(100);
           if(kiemtra==LEFT)
           {
               // xoa data
               for(int i=0;i<155;i++)
               {
               EEPROM.write(i,0);
               }
               lcd.clear();
               lcd.print("DELETE DATA...?");
               delay(100);
               lcd.setCursor(0,2);   
               lcd.print("DELETE FINISH");
               delay(100);
               break;
           }else  if(kiemtra==RIGHT)
               {
                  break;
               } else goto lai111;
       }else goto k6;
   } 
  }
}
 
4 Video:

Để các bạn hình dung dễ dàng hơn, các bạn có thể tham khảo video do Arduino shop thực hiện bạn nha. Đây là video bản quyền của shop.

>> VIDEO ĐANG THỰC HIỆN<<

5. Kết Luận

Đến đây, thì arduino Shop đã hoàn thành HƯỚNG DẪN LẬP TRÌNH ARDUINO VỚI KEYPAD 16X2, Hi vọng nó sẽ giúp ích được cho các bạn. Còn về sản phẩm, các bạn có thể liên hệ với Arduino Shop theo địa chỉ bên dưới để được tư vấn và cung cấp sản phẩm cho các bạn. Arduino Shop cảm ơn các bạn đã quan tâm theo dõi. Hãy bình luận dưới trang bên dưới nhé.

GỌI NGAY - 0902 37 12 52 (Mr Quốc): Tư vấn KT

ĐỂ ĐƯỢC TƯ VẤN VÀ CUNG CẤP GIẢI PHÁP KỊP THỜI CHO BẠN

ARDUINO SHOP

Địa chỉ: Số 41 Gò Dưa, Phường Tam Bình, Quận Thủ Đức, TP. Hồ Chí Minh
Email: arduinoshophcm@gmail.com

Bình luận (0)

Gửi bình luận của bạn

Captcha
<