개발자/Arduino

Arduino LCD KeyPad Shield SKU DFR0009 캐릭터 LCD

지구빵집 2020. 11. 8. 19:12
반응형

 

부품함에 고이 모셔둔 캐릭터 LCD 가져와서 데이터 표시하려고 찾아본 자료. 랜덤 변수 발생기로 사용한다. 호환 아두이노 실드라서 아두이노 우노에 연결했다. 정해진 숫자의 범위를 지정해주면 그 사이의 값을 누를 때마다 다른 값을 표시한다. 다른 값은 필요 없고 오직 한 숫자만 보여주면 되는 데 기능 상으로 전부 구현.

 

처음 연결하고 디스플레이에 아무것도 나오지 않는데 이때는 밝기가 문제이므로 파란 가변저항을 오른쪽으로 끝까지 지치지 말고 돌려서 글자가 환하게 나오게 맞춘다.

 

우선 부품 설명은 arduino LCD 키패드 실드는 Arduino 호환 보드 용으로 개발되어 사용자가 메뉴를 탐색하고 선택할 수 있는 사용자 친화적인 인터페이스를 제공합니다. 1602 개의 흰색 문자 파란색 백라이트 LCD로 구성됩니다. 키패드는 선택, 위, 오른쪽, 아래 및 왼쪽의 5 개 키로 구성됩니다. 디지털 IO 핀을 저장하기 위해 키패드 인터페이스는 하나의 ADC 채널만 사용합니다. 키 값은 5 단계 전압 분배기를 통해 읽힙니다. 참고 : 버전 1.1 주요 업데이트는 버튼 값으로, 예제 코드에서 업데이트되었습니다. 이전 버전의 경우 주석을 확인하고 편집하거나 Enhanced V1.0 라이브러리를 사용하십시오.  

 

 

 

Arduino LCD KeyPad Shield SKU DFR0009

 

Arduino LCD KeyPad Shield SKU DFR0009

 

Pin Allocation

PinFunction

Analog 0 Button (select, up, right, down and left)
Digital 4 DB4
Digital 5 DB5
Digital 6 DB6
Digital 7 DB7
Digital 8 RS (Data or Signal Display Selection)
Digital 9 Enable
Digital 10 Backlit Control

Sample Code

Example use of LiquidCrystal library

 

//Sample using LiquidCrystal library
#include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons
Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons
int lcd_key     = 0;
int adc_key_in  = 0;
#define btnRIGHT  0
#define btnUP     1
#define btnDOWN   2
#define btnLEFT   3
#define btnSELECT 4
#define btnNONE   5

// read the buttons
int read_LCD_buttons()
{
 adc_key_in = analogRead(0);      // read the value from the sensor
 // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
 // we add approx 50 to those values and check to see if we are close
 if (adc_key_in > 1000) return btnNONE; // We make this the 1st option for speed reasons since it will be the most likely result
 // For V1.1 us this threshold
 if (adc_key_in < 50)   return btnRIGHT;
 if (adc_key_in < 250)  return btnUP;
 if (adc_key_in < 450)  return btnDOWN;
 if (adc_key_in < 650)  return btnLEFT;
 if (adc_key_in < 850)  return btnSELECT;

 // For V1.0 comment the other threshold and use the one below:
/*
 if (adc_key_in < 50)   return btnRIGHT;
 if (adc_key_in < 195)  return btnUP;
 if (adc_key_in < 380)  return btnDOWN;
 if (adc_key_in < 555)  return btnLEFT;
 if (adc_key_in < 790)  return btnSELECT;
*/


 return btnNONE;  // when all others fail, return this...
}

void setup()
{
 lcd.begin(16, 2);              // start the library
 lcd.setCursor(0,0);
 lcd.print("Push the buttons"); // print a simple message
}

void loop()
{
 lcd.setCursor(9,1);            // move cursor to second line "1" and 9 spaces over
 lcd.print(millis()/1000);      // display seconds elapsed since power-up


 lcd.setCursor(0,1);            // move to the begining of the second line
 lcd_key = read_LCD_buttons();  // read the buttons

 switch (lcd_key)               // depending on which button was pushed, we perform an action
 {
   case btnRIGHT:
     {
     lcd.print("RIGHT ");
     break;
     }
   case btnLEFT:
     {
     lcd.print("LEFT   ");
     break;
     }
   case btnUP:
     {
     lcd.print("UP    ");
     break;
     }
   case btnDOWN:
     {
     lcd.print("DOWN  ");
     break;
     }
   case btnSELECT:
     {
     lcd.print("SELECT");
     break;
     }
     case btnNONE:
     {
     lcd.print("NONE  ");
     break;
     }
 }

}

 

두 번째 예제는 별로던데 수정해서 사용하시고 필요한 라이브러리 파일은 압축파일 올려드리니 설치해서 사용하시면 됩니다. 소스 퍼온 곳

실드 다이어그램 링크

 

DFR_Key.zip
0.00MB
LCDKeypad.zip
0.00MB

 

LCDKeypad Shield V1.0 SCH.pdf
0.05MB

 

잘 돌아가지 않아 보이는 예제코드

 

/*
DFRobot LCD Shield for Arduino
Key Grab v0.2
Written by Glendon Klassen
gjklassen@gmail.com
http://www.sourceforge.net/users/ecefixer
http://ecefixer.tumblr.com

Displays the currently pressed key on the LCD screen.

Key Codes (in left-to-right order):

None   - 0
Select - 1
Left   - 2
Up     - 3
Down   - 4
Right  - 5

*/

#include <LiquidCrystal.h>
#include <DFR_Key.h>

//Pin assignments for DFRobot LCD Keypad Shield
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
//---------------------------------------------

DFR_Key keypad;

int localKey = 0;
String keyString = "";

void setup()
{
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Key Grab v0.2");
  delay(2500);

  /*
  OPTIONAL
  keypad.setRate(x);
  Sets the sample rate at once every x milliseconds.
  Default: 10ms
  */
  keypad.setRate(10);

}

void loop()
{
  /*
  keypad.getKey();
  Grabs the current key.
  Returns a non-zero integer corresponding to the pressed key,
  OR
  Returns 0 for no keys pressed,
  OR
  Returns -1 (sample wait) when no key is available to be sampled.
  */
  localKey = keypad.getKey();

  if (localKey != SAMPLE_WAIT)
  {
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Current Key:");
    lcd.setCursor(0, 1);
    lcd.print(localKey);
  }
}

 

 

 

반응형