keypad-2-4

這款Arduino的LCD按鈕模組大家應該蠻常見的,上面有一塊16x2的LCD,還內建了上、下、左、右、選擇,共5個按鍵,如果是要設計選單類的介面,還蠻方便的。而且它是擴展板模式,直接插到UNO板上就可以了,所以完全不用接線哦!

P.S. RST鍵是對應UNO板的Reset鍵,所以這個按鍵就無法再自訂囉。

購買LCD Keypad Shield擴展板:https://www.jmaker.com.tw/products/lcd-keypad

至於PIN腳的對應很簡單,加上因為是擴展板,所以不用接線,這些PIN的對應只會出現在程式碼中。

PIN 8 => RS
PIN 9 => EN
PIN 4 => D4
PIN 5 => D5
PIN 6 => D6
PIN 7 => D7
PIN 10 => 控制背光

再來就是按鍵的控制了。共有5個按鍵,這個擴展板用一個很省PIN腳的方式來處理,就是透過A0腳,每個按鍵會送出特定範圍的值,這樣我們程式就能判斷是哪個鍵被按囉!

RIGHT => 0~60
UP => 60~200
DOWN => 200~400
LEFT => 400~600
SELECT => 600~800

因為要驅動LCD,所以必須找一套LCD的函式庫來配合。不過這個擴展板並不是透過I2C的介面,所以我們就用最基本的LiquidCrystal函式庫來配合。

LiquidCrystal函式庫一般大家都會安裝的,若真的沒有安裝,只要到「程式管理員」找到它,就可以輕鬆安裝了。

keypad-1-1

接下來就可以寫程式囉!程式相當簡單,主要是讓LCD先顯示2行文字,然後再等待使用者按下任意鍵。然後再依取得的數值,去判斷使用者是按了哪個鍵,並顯示在LCD上,不難吧!

#include <LiquidCrystal.h>
//使用到的PIN腳
const int pin_RS = 8; 
const int pin_EN = 9; 
const int pin_D4 = 4; 
const int pin_D5 = 5; 
const int pin_D6 = 6; 
const int pin_D7 = 7; 

//填入正確的PIN腳,建立LCD物件
LiquidCrystal lcd( pin_RS,  pin_EN,  pin_D4,  pin_D5,  pin_D6,  pin_D7);

void setup() {
 lcd.begin(16, 2);
 lcd.setCursor(0,0);
 lcd.print("JMaker.com.tw");
 lcd.setCursor(0,1);
 lcd.print("Press Key:");
}

void loop() {
  int x;
  x = analogRead (0);  //讀取A0的值
    
  lcd.setCursor(10,1); //把游標移到第2行第11個字
 
 //依A0的值,去判斷是哪個鍵被按下了
 if (x < 60) {
  lcd.print ("Right ");
 }
 else if (x < 200) {
  lcd.print ("Up    ");
 }
 else if (x < 400){
  lcd.print ("Down  ");
 }
 else if (x < 600){
  lcd.print ("Left  ");
 }
 else if (x < 800){
  lcd.print ("Select");
 }
}