아두이노:LCD 사용: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
잔글편집 요약 없음
54번째 줄: 54번째 줄:
|}
|}


== LCD 1602 키패드 쉴드 ==
= LCD 1602 키패드 쉴드 =
 
* 아두이노 우노(가장 잘 맞음), 메카와 호환되는데, 직관적으로 꽂으면 된다.
* 아두이노 우노(가장 잘 맞음), 메카와 호환되는데, 직관적으로 꽂으면 된다.
* 아날로그 핀을 그대로 사용할 수 있는데, 디지털핀도 표기는 되어있지 않지만 이용할 수는 있다.
* 아날로그 핀을 그대로 사용할 수 있는데, 디지털핀도 표기는 되어있지 않지만 이용할 수는 있다.
* 키버튼은 A0로 들어온다.(제조사별로 값이 달라 A0 값을 프린트하게 해보아야 한다.)
* 키버튼은 A0로 들어온다.(제조사별로 값이 달라 A0 값을 프린트하게 해보아야 한다.)


== 코드 ==
{| class="wikitable"
!코드
!설명<nowiki/>
!비고
|-
|수신정보
|
|
|}
== 제조사별 코드 ==
=== DFRobot ===
https://wiki.dfrobot.com/LCD_KeyPad_Shield_For_Arduino_SKU__DFR0009<nowiki/>이 공식 문서이다.
{| class="wikitable"
{| class="wikitable"
|+DFRobot사의 제품.
|+DFRobot사의 제품.
87번째 줄: 101번째 줄:
|1022~1023
|1022~1023
|}
|}
보통 다음과 같이 버튼신호를 구별한다.<syntaxhighlight lang="c#">
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


int read_LCD_buttons()
|
|-
|버튼 함수
|보통 다음과 같이 버튼신호를 구별한다.<syntaxhighlight lang="c#">
// LCD 관련 변수 설정.
int lcd_key    = 0;  // 들어온 키 값을 해석한 값을 담을 변수.
int lcd_key_in  = 0;  // LCD에서 들어오는 키 값을 담을 변수.
 
int read_LCD_buttons() // 입력신호를 해석할 함수.
{
{
  adc_key_in = analogRead(0);      // read the value from the sensor
  lcd_key_in = analogRead(0);      // 센서에서 들어온 값을 읽는다.
  // 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 (lcd_key_in > 1000) return 0// 입력이 없는 경우.
  if (adc_key_in > 1000) return btnNONE;
  if (lcd_key_in > 700)  return 5; // 선택버튼.
if (adc_key_in < 50)  return btnRIGHT;   
  if (lcd_key_in > 450)  return 3; // 좌
  if (adc_key_in < 250)  return btnUP;  
  if (lcd_key_in > 300)  return 2; // 하
  if (adc_key_in < 450)  return btnDOWN;  
  if (lcd_key_in > 100)  return 1// 상
  if (adc_key_in < 650)  return btnLEFT;  
  return 4;  //
  if (adc_key_in < 850)  return btnSELECT;   
  return btnNONE;  // when all others fail, return this...
}
}
</syntaxhighlight>
</syntaxhighlight>
|
|
|-
|-
|
|LCD 설정
|
|보통 다음과 같이 버튼신호를 구별한다.<syntaxhighlight lang="c#">
#include <LiquidCrystal.h>  // 관련 라이브러리.
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD panel에서 사용되는 핀 선택.
unsigned long tepTimer;  // LCD 화면 갱신시간을 위하여 설정하는 변수.
 
void setup(){
    lcd.begin(16, 2);  // start the library
}
 
void loop(){
    lcd.setCursor(0, 0);                  // LCD 시작점 지정.
 
    if(millis() - tepTimer > 500){        // 500ms마다 함수를 갱신한다.
            tepTimer = millis();  // 현재 시간을 변수에 담는다.
 
            // LCD에 띄우는 내용.
            lcd.print("내용입니당");
    }
}
</syntaxhighlight>
|
|
|}
|}
128번째 줄: 158번째 줄:
제대로 연결, 코드에도 문제가 없는데 안나온다면 접근주소를 건드려보자.
제대로 연결, 코드에도 문제가 없는데 안나온다면 접근주소를 건드려보자.
|}
|}
=== LCD 1602 키패드 쉴드 ===
참고. https://devicemart.blogspot.com/2022/01/22-wekit-lcd-1602.html

2024년 6월 11일 (화) 09:15 판

아두이노 관련 정보를 모으기 위한 틀. 틀:아두이노

  1. 아두이노:개요
  2. 아두이노:하드웨어
    1. 아두이노:우노보드
  3. 아두이노:코드
    1. 아두이노:기초 문법
    2. 아두이노:라이브러리
    3. 아두이노:컴퓨터에서 보드로
    4. 아두이노:안드로이드에서 보드로
  4. 아두이노:핀 사용
    1. 아두이노:전원공급
  5. 아두이노:시리얼 통신
    1. 아두이노:엑셀기록
    2. 아두이노:파이썬과 통신
  6. 아두이노:편의함수
  7. 센서 사용
    1. 아두이노:모션센서
    2. 아두이노:온습도센서
    3. 아두이노:조도센서
    4. 아두이노:pH미터 만들기(Gravity 아날로그 pH센서)
  8. 아두이노:LCD 사용
  9. 아두이노:스위치 사용
  10. 아두이노:릴레이
  11. 아두이노:WIFI
  12. 아두이노:해결되지 않은 다양한 의문들
  13. 수업용 간단 실습
    1. 아두이노:LED
    2. 아두이노:초음파센서
  14. 분류:아두이노 프로젝트

개요

과정 설명 코드
setup 셋업에 넣을 코드. lcd.init(); //액정 초기화

lcd.backlight(); //액정 백라이트 켜기

loop 루프에 넣을 코드. lcd.setCursor(0,0); //표시 시작지점 설정

lcd.print("illumination="); //내용 작성

lcd.setCursor(13,0); //시작지점 설정

lcd.print(a); //내용 작성

16x2 LCD

보통 I2C 변환모듈을 달아두어 4핀으로 제어한다.

사용법

I2C변환모듈을 설치한 경우

다음 링크를 참고하자. https://eduino.kr/product/detail.html?product_no=105&gclid=Cj0KCQiAnsqdBhCGARIsAAyjYjRtMUD2IP2NLf91qvoISXTmQLDScXSlw1yxuVSeh8VAkVS-ggpxYFoaArXZEALw_wcB

코드해석 및 문제해결

코드 설명 문제해결
LiquidCrystal_I2C lcd(0x27,16,2); lcd 변수를 지정한다.

(접근주소, 16칸, 2줄)이라는 의미

접근주소로 보통 0x3F 혹은 0x27를 넣는다.

제대로 연결, 코드에도 문제가 없는데 안나온다면 접근주소를 건드려보자.

LCD가 안나올 때 밝기가 너무 밝거나 어두워 글자가 보이지 않을 때가 있다. 변환모듈 뒷면에 돌릴 수 있는 나사가 있는데, 이게 밝기를 조절해준다.

LCD 1602 키패드 쉴드

  • 아두이노 우노(가장 잘 맞음), 메카와 호환되는데, 직관적으로 꽂으면 된다.
  • 아날로그 핀을 그대로 사용할 수 있는데, 디지털핀도 표기는 되어있지 않지만 이용할 수는 있다.
  • 키버튼은 A0로 들어온다.(제조사별로 값이 달라 A0 값을 프린트하게 해보아야 한다.)

코드

코드 설명 비고
수신정보

제조사별 코드

DFRobot

https://wiki.dfrobot.com/LCD_KeyPad_Shield_For_Arduino_SKU__DFR0009이 공식 문서이다.

DFRobot사의 제품.
코드 설명 비고
수신정보
버튼 선택 리셋 미입력
수신값 131~133 306~308 480~481 0 719~720 보드 자체를 껐다 켜는듯. 1022~1023
버튼 함수 보통 다음과 같이 버튼신호를 구별한다.
// LCD 관련 변수 설정.
int lcd_key     = 0;  // 들어온 키 값을 해석한 값을 담을 변수.
int lcd_key_in  = 0;  // LCD에서 들어오는 키 값을 담을 변수.

int read_LCD_buttons()  // 입력신호를 해석할 함수.
{
 lcd_key_in = analogRead(0);      // 센서에서 들어온 값을 읽는다.
 // 상하좌우, 선택 순으로 인덱스를 지정한다.
 if (lcd_key_in > 1000) return 0;  // 입력이 없는 경우.
 if (lcd_key_in > 700)  return 5; // 선택버튼.
 if (lcd_key_in > 450)  return 3;  // 좌
 if (lcd_key_in > 300)  return 2;  // 하
 if (lcd_key_in > 100)  return 1;  // 상
 return 4;  // 우
}
LCD 설정 보통 다음과 같이 버튼신호를 구별한다.
#include <LiquidCrystal.h>  // 관련 라이브러리.
LiquidCrystal lcd(8, 9, 4, 5, 6, 7); // LCD panel에서 사용되는 핀 선택.
unsigned long tepTimer;  // LCD 화면 갱신시간을 위하여 설정하는 변수.

void setup(){
    lcd.begin(16, 2);  // start the library
}

void loop(){
    lcd.setCursor(0, 0);                   // LCD 시작점 지정.

    if(millis() - tepTimer > 500){         // 500ms마다 함수를 갱신한다.
             tepTimer = millis();  // 현재 시간을 변수에 담는다.

             // LCD에 띄우는 내용.
             lcd.print("내용입니당");
     }
}
코드 설명 문제해결
LiquidCrystal_I2C lcd(0x27,16,2); lcd 변수를 지정한다.

(접근주소, 16칸, 2줄)이라는 의미

접근주소로 보통 0x3F 혹은 0x27를 넣는다.

제대로 연결, 코드에도 문제가 없는데 안나온다면 접근주소를 건드려보자.