부품함에 고이 모셔둔 캐릭터 LCD 가져와서 데이터 표시하려고 찾아본 자료. 랜덤 변수 발생기로 사용한다. 호환 아두이노 실드라서 아두이노 우노에 연결했다. 정해진 숫자의 범위를 지정해주면 그 사이의 값을 누를 때마다 다른 값을 표시한다. 다른 값은 필요 없고 오직 한 숫자만 보여주면 되는 데 기능 상으로 전부 구현.
처음 연결하고 디스플레이에 아무것도 나오지 않는데 이때는 밝기가 문제이므로 파란 가변저항을 오른쪽으로 끝까지 지치지 말고 돌려서 글자가 환하게 나오게 맞춘다.
우선 부품 설명은 arduino LCD 키패드 실드는 Arduino 호환 보드 용으로 개발되어 사용자가 메뉴를 탐색하고 선택할 수 있는 사용자 친화적인 인터페이스를 제공합니다. 1602 개의 흰색 문자 파란색 백라이트 LCD로 구성됩니다. 키패드는 선택, 위, 오른쪽, 아래 및 왼쪽의 5 개 키로 구성됩니다. 디지털 IO 핀을 저장하기 위해 키패드 인터페이스는 하나의 ADC 채널만 사용합니다. 키 값은 5 단계 전압 분배기를 통해 읽힙니다. 참고 : 버전 1.1 주요 업데이트는 버튼 값으로, 예제 코드에서 업데이트되었습니다. 이전 버전의 경우 주석을 확인하고 편집하거나 Enhanced V1.0 라이브러리를 사용하십시오.
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;
}
}
}
두 번째 예제는 별로던데 수정해서 사용하시고 필요한 라이브러리 파일은 압축파일 올려드리니 설치해서 사용하시면 됩니다. 소스 퍼온 곳
잘 돌아가지 않아 보이는 예제코드
/*
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);
}
}
'개발자 > Arduino' 카테고리의 다른 글
Arduino Nano 33 BLE Sense 에서 Bluetooth LE 시작하기 (0) | 2020.11.18 |
---|---|
Nano 33 BLE Sense 가속도계 LSM9DS1 3D 시각화 (0) | 2020.11.15 |
미세진동 측정 - LSM6DS3 가속도계 자이로 센서를 이용 (4) | 2020.11.11 |
아두이노 퀴즈 40문제 파일 무료 제공 (0) | 2020.11.11 |
HTTP를 통해 Arduino Nano 33 IoT와 Ubidots 데이터 보내기 3 Oled에 데이터 표시하기 (0) | 2020.10.30 |
HTTP를 통해 Arduino Nano 33 IoT와 Ubidots 데이터 보내기 2 (0) | 2020.10.30 |
HTTP를 통해 Arduino Nano 33 IoT와 Ubidots 연결 1 (0) | 2020.10.30 |
Arduino IDE – 설정 및 시작 가이드 (0) | 2020.10.28 |
더욱 좋은 정보를 제공하겠습니다.~ ^^