i2c 스크린을 아두이노 나노에 연결하기. Arduino에 텍스트 화면 연결

오늘 우리는 텍스트 디스플레이로의 출력에 초점을 맞추려고 노력할 것입니다. 가장 널리 사용되는 칩은 HD44780(또는 호환 가능한 KS0066)입니다. 장점과 단점을 나열해 보겠습니다.

장점:

  1. 저렴한 가격.
  2. 프로그래밍하기 쉽고 코드는 모든 모델에서 동일합니다.
  3. 다양한 모델 - 가장 일반적인 모델: 8×1, 16×2, 20×4. 매우 이국적인 40x4 모델도 찾을 수 있습니다. 40자씩 4줄.
  4. 하나의 Arduino에 여러 디스플레이를 연결하는 기능.
  5. 자신만의 기호를 설정하는 기능.

단점:

  1. 모든 디스플레이가 러시아어 문자를 지원하는 것은 아닙니다. 자세한 내용은 해당 디스플레이에 대한 설명을 참조하세요.
  2. I2C 버스를 사용하지 않고 연결하려면 10~16개의 와이어를 사용해야 하는데 이는 매우 좋지 않습니다. I2C – 4선.

위 내용을 바탕으로 I2C를 통한 디스플레이 연결만 고려하겠습니다.

시도해 봅시다.

우리에게 필요한 것은 무엇입니까?

  1. Arduino (저는 Nano 모델을 사용했습니다)
  2. I2C 모듈 유무에 관계없이 HD44780 칩에 표시(이 경우 별도의 LC1602 IIC 보드가 필요함) - 우리의 경우 I2C 모듈이 없는 16x2
  3. 10Kohm 저항기(백라이트를 수동으로 제어해야 하는 경우).
  4. 전위차계(백라이트를 수동으로 제어해야 하는 경우).
  5. 브레드보드 개발 보드.
  6. LiquidCrystal_I2C 라이브러리.

작은 여담 1번: 디스플레이와 I2C 모듈을 구별하는 방법은 무엇입니까?

실제로는 매우 간단합니다. 디스플레이를 뒤집어 보면 긴 커넥터 블록(보통 16개)이 보이면 디스플레이에 I2C 모듈이 없는 것입니다.

I2C 모듈이 이미 설치된 디스플레이는 다음과 같습니다.


SCL, SDA, VCC, GND 핀은 다음 용도로 사용됩니다. Arduino 연결. 백라이트가 작동하려면 왼쪽에 있는 두 개의 접점(그림에서는 점퍼로 닫혀 있음)이 필요합니다.

모듈이 연결되어 있지 않으면 직접 연결해야 합니다. 주의해야 할 가장 중요한 것은 접점을 올바른 순서로 연결하는 것입니다. 원칙적으로 첫 번째 핀과 16번 핀이 표시됩니다. 때로는 백라이트를 제어하는 ​​15-16개의 접점이 첫 번째 접점 앞에 위치할 수 있습니다(이 경우 번호가 매겨집니다). 모듈 자체에서 첫 번째 핀은 숫자가 아닌 핀 자체 주위의 사각형으로 지정될 수도 있습니다.

구성표:

다음 다이어그램을 구성해 보겠습니다.


저는 다음 사항에 주목하고 싶습니다.

  1. I2C 모듈이 이미 납땜된 디스플레이를 발견하면 회색으로 표시된 전선은 필요하지 않습니다. 그렇지 않으면 아무것도 바뀌지 않습니다.
  2. 디스플레이의 밝기를 변경하지 않으려면 다이어그램이 단순화됩니다.


알다시피 LED라고 표시된 I2C 모듈의 두 핀은 디스플레이 백라이트를 담당합니다. 밝기 제어를 사용하지 않으려면 간단히 닫으면 됩니다.

이제 코드를 살펴보겠습니다.


여기에 있는 거의 모든 것이 우리에게 친숙할 것입니다. 5번째 줄에서는 장치 주소를 나타냅니다. 16행과 17행 - 행의 문자 수와 행 수입니다. 20-22행 – 디스플레이 작업을 위한 객체를 생성하고 디스플레이 작업을 위한 매개변수를 설명합니다.

작은 여담 2번: I2C 장치의 주소를 찾는 방법은 무엇입니까?

대부분의 경우 주소는 I2C 장치가 구축된 칩의 데이터시트에서 찾을 수 있습니다. 이것이 가능하지 않은 경우 I2C 버스를 통해 연결된 모든 장치의 주소를 결정하는 스케치와 다이어그램이 있는 아카이브에 대한 링크가 있습니다. 장치를 Arduino에 연결하고, 스케치를 업로드하고, 콘솔을 열고 주소를 확인하기만 하면 됩니다.


여기서는 실제로 디스플레이 출력을 담당하는 기능을 볼 수 있습니다. 출력 원리는 다음과 같습니다.

– setCursor() 함수를 사용하여 출력 시작 위치를 설정합니다.

– print() 함수를 사용하여 문자열을 인쇄합니다.

그 후, 다음 print() 함수는 이전 입력이 끝난 다음 위치부터 출력을 시작합니다. 또한 콘솔로의 출력과 달리 여기에서는 출력 및 줄 바꿈을 완료하기 위해 println() 함수가 사용되지 않는다는 사실에 주목하고 싶습니다.

따라서 "Test LCD1602"라는 문구가 화면의 첫 번째 줄에 나타나고 두 번째 줄에는 디스플레이 해상도와 스케치가 완료된 사이클 수를 보여주는 카운터가 표시됩니다.

하지만, 화면에 많은 변수 값을 표시해야 한다면 이 방법은 그다지 편리하지 않습니다. 사실 디스플레이 출력 절차는 에너지 집약적이고 느리기 때문에 이 기능을 사용하여 최대 7번까지 출력합니다. 문자열을 미리 생성한 다음 전체를 출력하는 것이 훨씬 쉬울 것입니다. sprintf() 형식의 입력 함수가 이에 도움이 될 것입니다.

작은 여담 #3: 형식화된 입력 함수 sprintf().

C 언어에는 문자열 출력을 위한 몇 가지 매우 편리한 함수가 있습니다. 이를 형식화된 출력 함수(printf(print 및 format이라는 단어에서 유래))라고 합니다. 우리의 특정한 경우우리는 화면에 아무것도 인쇄하지 않지만 후속 출력을 위해 문자열을 생성하는 sprintf 함수에 관심이 있습니다. 다음과 같이 보입니다.

sprintf(str, “출력을 위한 문자열 %d”, i);

이 함수는 변수 값(녹색)이 대체되는 템플릿(노란색)을 사용하여 문자열(파란색으로 표시)을 생성합니다. 결과 결과는 문자열 변수(빨간색)에 기록됩니다.

여러 템플릿과 변수가 있을 수 있습니다. 이 경우 변수는 쉼표로 구분하여 작성됩니다. 가장 중요한 것은 한 줄의 패턴 수가 변수 수와 일치하는지 확인하는 것입니다. 템플릿의 변수는 순차적으로 사용됩니다. 첫 번째 변수의 값은 첫 번째 템플릿으로 대체되고, 두 번째 변수의 값은 두 번째 템플릿으로 대체됩니다.

템플릿이란 무엇입니까? 모든 패턴은 "%" 기호로 시작하고 10개(Arduino의 경우 7개) 유형 기호 중 하나로 끝납니다. 그 사이에는 값을 출력하는 방법에 대한 정보가 꽤 많을 수도 있고 전혀 없을 수도 있습니다.

템플릿에 무엇이 포함될 수 있는지 살펴보겠습니다. 안에 일반적인 경우템플릿은 다음과 같습니다.

%[플래그 ][너비 ][.정밀도 ]유형

대괄호는 그 안에 포함된 요소가 누락되었을 수 있음을 나타냅니다. 수직 막대는 이 필드에서 지정된 값 중 하나를 선택해야 함을 나타냅니다(이 경우 문자 H, I 또는 L 중 하나).

먼저 템플릿의 필수 요소인 유형을 다루겠습니다. 출력될 변수 유형을 지정하며 다음 값 중 하나를 사용할 수 있습니다.

상징 의미
기음한 문자
에스문자열
디,나부호 있는 십진 정수
영형정수 8진수
부호 없는 십진 정수
엑스,엑스정수 16진수
포인터(16진수)
에프고정 형식의 분수
전자, 전자과학적인 형식의 분수
지, 지공학용 또는 고정 형식의 분수

Arduino 작업 시 해당되지 않는 유형은 회색으로 표시됩니다. 따라서 문자열을 출력하려면 "%s"를 지정해야 하고, 정수를 출력하려면 "%d"를 지정해야 합니다.

다음으로 너비 필드를 살펴보겠습니다. 그 안에 있는 숫자는 템플릿이 표시될 필드의 최소 너비를 나타냅니다. 변수 값의 크기가 더 작으면 필드가 공백으로 채워지고, 값이 더 크면 항목이 필드를 넘어갑니다. 따라서 숫자 385에 대한 템플릿 "%6d"는 385를 출력합니다(숫자 앞의 세 개의 공백에 유의하십시오).

정밀도 지정자는 항상 점으로 시작하며 다음 숫자는 값 유형에 따라 다른 작업을 지정합니다. "d,o,u,x" 유형의 경우 다음을 나타냅니다. 최소 수량처리 중에 나타나야 하는 문자입니다. "f" 유형의 경우 – 소수점 이하 자릿수입니다. "s" 유형의 경우 출력될 최대 문자열 문자 수입니다. 예를 들어, 숫자 34.2345에 대한 "%6.1f"는 "34.1"을 출력합니다(점도 기호로 간주되며 숫자 앞에 두 개의 공백이 있음). 또는 문자열 "precision"의 템플릿 "%.3s"는 처음 세 문자인 "precision"만 출력합니다.

플래그를 사용하면 표시된 값의 표시를 변경할 수 있습니다.

인터넷에서 printf 함수 템플릿에 대한 자세한 내용을 읽을 수 있습니다. 여기 내가 줬어 간략한 개요가장 자주 사용되는 기능.

따라서 형식화된 출력을 사용하도록 다시 작성된 출력 함수는 다음과 같습니다.


33행과 37행에서는 출력을 위한 전체 행을 생성하고 34행과 38행에서는 이를 인쇄합니다.

마지막으로 우리가 가장 좋아하는 설정 및 루프 기능입니다.


47행에서는 디스플레이 해상도를 설정하고, 48행에서는 백라이트를 켭니다(밝기는 전위차계로 조정할 수 있음). 49번째 줄에서는 사이클 카운터를 0으로 설정합니다. 출력의 37번째 줄에서 이를 1씩 증가시킵니다(count++ 구성을 기억하십니까?). 마지막으로 56행에서 앞서 설명한 표시 함수를 호출합니다. 모두.

무엇을 변경하거나 개선할 수 있나요?

예를 들어, 다음을 수행할 수 있습니다. 자동 제어이전의 여러 기사에서 설명한 기상 관측소의 포토레지스터나 광 센서를 사용하여 조명에 따라 조명을 조정합니다. 예를 들어, 조명이 강한 조건에서는 백라이트의 밝기를 높이고 밤에는 백라이트의 밝기를 줄입니다. 아니면 모션 센서를 부착하고 디스플레이 앞에 물체가 나타나면 백라이트를 켜거나... 일반적으로 원하는 경우 하나 이상의 구성 요소를 교체하고 코드 조각을 작성하면 디스플레이의 유용성을 상당히 향상시킬 수 있습니다. 또한 자체 개발한 기호를 사용하여 표시할 수도 있습니다.

이 모든 질문은 초보자를 위한 검토 범위를 벗어나기 때문에 여기서는 모두 고려하지 않습니다.

오늘은 그게 전부입니다.

이 간단한 기사로 작업장 자동화에 관한 기사 시리즈를 시작하고 싶습니다.

현재 시중에는 큰 수 LCD 디스플레이 또는 문자 합성 디스플레이라고도 합니다. 특히 칩 하나에 1602개의 디스플레이(16자, 2줄)가 널리 보급되었습니다. HD44780 및 호환 제품. 중국에서는 저렴하게 구입할 수 있습니다.

이 기사에서는 이 화면의 연결 다이어그램을 자세히 설명하지만 다른 많은 텍스트 디스플레이에도 적합합니다. 아두이노 라이브러리가 있어요액정 디스플레이 작업이 매우 편리합니다.

필수 구성요소

  1. HD44780 칩의 LCD 1602
  2. 모든 Arduino. 내 경우에는 Arduino Nano
  3. 트리머 저항기
  4. 공들여 나열한 것
  5. 전원 모듈
  6. 전선 연결

디스플레이 연결

디스플레이는 5V의 전압으로 전원이 공급됩니다. 디스플레이 백라이트는 회로의 나머지 부분에 연결되지 않은 별도의 회로입니다. 핀 15에 5V를 적용하고 핀 16에 마이너스를 연결하면 전원을 켤 수 있습니다. PWM 신호를 사용하여 밝기 조절이 가능하도록 만들 수 있습니다. 필요하다면 따로 켜고 끄는 것도 유행이다.

나머지 디스플레이 회로의 전원은 다음 핀에 공급됩니다.

  • 1 - 접지
  • 2 - +5
  • 3 - 대비. 5V의 전압 분배기를 통해 연결됩니다. 분배기는 일반적으로 일반 변수 또는 튜닝 저항입니다.


디스플레이를 연결하려면 Arduino에서 6개의 라인, 6개의 핀을 사용하면 충분합니다. 디스플레이를 읽을 필요가 없으므로 읽기 및 쓰기를 담당하는 핀 5(RW)를 즉시 접지에 연결합니다.

그런 다음 Arduino와 화면을 6개의 통신선으로 연결합니다. Arduino에서 어떤 접점이 선택되는지는 중요하지 않습니다. 프로그램에서 이를 지정하지만 예에서는 다음 구성이 선택되었습니다.

  • 디스플레이 핀 4 - 4번 아두이노 핀. 이것은 주소 신호선입니다. A0 또는 RS로 알려져 있습니다. 0인지 1인지에 따라 디스플레이는 데이터 라인에 "커서 이동"과 같은 명령이 있는지 또는 표시할 문자 코드가 있는지 이해합니다.
  • 디스플레이 핀 6은 Arduino 핀 5입니다. 이것은 데이터 액세스 권한 라인입니다. E 또는 활성화로 알려져 있습니다. 이 라인이 1이 되면 디스플레이는 명령을 실행하거나 데이터 라인의 문자를 출력합니다.
  • 디스플레이의 11번, 12번, 13번, 14번 핀은 각각 아두이노의 10번, 11번, 12번, 13번 핀입니다. 이것은 데이터 라인입니다. DB4, DB5, DB6, DB7로 알려져 있습니다.

화면이 연결되어 데이터를 수신할 준비가 되었습니다. 이제 남은 것은 Arduino용 프로그램을 작성하는 것뿐입니다.

프로그램 작성

// 표준 LiquidCrystal 라이브러리 연결 #include // 화면 개체 초기화, // Arduino 연결에 사용되는 접점 전송: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() ( // 화면의 크기(열과 행의 수) 설정 lcd.begin(16, 2); // 첫 번째 줄 인쇄 lcd.print("Hello World"); // 커서 설정 0열, 1행 즉, // 번호가 0부터 시작하므로 실제로는 두 번째 행입니다. lcd.setCursor(0, 1) // 두 번째 행을 인쇄합니다. lcd.print("LCD is Working!!! "); 루프() ( )

모든 것은 매우 간단하며 주석을 통해 명확해야 합니다.



나만의 디바이스를 만들다 보면 다양한 정보를 빠르게 표시해야 하는 경우가 많습니다. 예를 들어 컨트롤러를 생성하는 경우 스마트 홈, 시스템의 현재 상태를 빠르게 확인할 수 있는 출력 장치를 장치에 장착하는 것이 합리적입니다. 최고의 솔루션액정 디스플레이이다. 백라이트가 꺼졌을 때의 전력 소비는 최소화되며 디스플레이 작업은 매우 간단하며 프로그램 코드에 많은 개입이 필요하지 않습니다. 실제로 LCD 디스플레이로의 정보 출력은 직렬 포트로의 출력과 크게 다르지 않습니다. 이 기사에서는 널리 사용되는 HD44780 칩을 기반으로 하는 문자 생성 디스플레이를 Arduino 컨트롤러에 연결하는 방법을 설명합니다.

LCD 텍스트 디스플레이는 어떻게 작동합니까?

몇 가지 미묘한 차이를 이해하려면 문자 생성 디스플레이의 작동 방식을 아는 것이 유용합니다. 이러한 유형의 디스플레이의 특별한 특징은 자체 메모리를 갖춘 자체 컨트롤러가 있다는 것입니다. DDRAM - 디스플레이 메모리. 화면에 기호를 표시하려면 기호를 메모리 셀에 로드한 다음 메모리 셀을 표시하는 명령을 전달해야 합니다. 전송 중에 문자는 ASCII 코드를 사용하여 인코딩됩니다. 예를 들어, 코드 0x31을 메모리에 쓰면 기호 " 1 " 화면에 표시되는 기호 코드(예: 기호의 "그림")와 일치하는 내용은 CGROM 메모리에 저장됩니다. CGROM은 비휘발성 메모리입니다. 따라서 디스플레이는 컨트롤러에 "고정"된 문자만 표시할 수 있습니다. 그렇기 때문에 모든 디스플레이가 예를 들어 러시아어 문자를 표시할 수 있는 것은 아닙니다. 불행히도 우리 매장에서 판매되는 디스플레이는 러시아화되지 않았습니다. CGRAM 메모리도 있습니다. 변경 가능합니다. 우리는 자신만의 기호를 만들어 디스플레이에 표시할 수 있습니다. 최대 8개의 문자를 생성할 수 있다는 점을 고려해 볼 가치가 있습니다.

이 모든 "내부" 작업은 일부 뉘앙스를 이해하는 데에만 중요합니다. 모든 번거로운 작업을 대신 수행하여 디스플레이 출력을 쉽고 간단하게 제어할 수 있는 간단하고 간단한 Arduino용 라이브러리가 있습니다.

LCD 디스플레이를 Arduino에 연결하기

물론 디스플레이를 연결하려면 브레드보드에 설치해야 합니다. 참고: 저희 매장에서 판매되는 디스플레이는 납땜된 핀 커넥터 없이 판매됩니다. 브레드보드에 즉시 설치할 수 있는 디스플레이를 받으시려면 제품 페이지에서 "납땜 커넥터" 확인란을 선택하시면 당사에서 커넥터를 납땜해 드립니다. 디스플레이로의 데이터 전송은 한 번에 4비트 또는 8비트라는 두 가지 방식으로 구성될 수 있습니다. 따라서 4개 또는 8개의 Arduino 핀이 필요합니다. 실제로 8비트 인터페이스를 사용하면 속도가 향상되지 않습니다. 따라서 데이터를 전송하려면 4개의 디지털 핀만 필요합니다. 디스플레이 작동 모드를 설정하려면 핀 3개가 더 필요합니다. 전체적으로 디스플레이를 연결하려면 컨트롤러의 디지털 출력 7개만 필요합니다. 디스플레이의 연락처에는 라벨이 붙어 있어 연결 시 혼란을 방지하는 데 도움이 됩니다.

결론은 왼쪽에서 오른쪽으로 번호를 매깁니다.

  • 1-(VSS) 전시장. 접지 레일에 연결됩니다.
  • 2-(VDD) 디스플레이 전원 공급 장치. 파워 레일에 연결됩니다.
  • 3-(V.O.) 전위차계 입력(포함). 디스플레이 대비는 전위차계를 사용하여 조정됩니다. 전위차계의 중간 출력은 디스플레이 핀에 연결됩니다.
  • 4-(RS) "명령" 신호 입력. 모든 Arduino 디지털 핀에 연결됩니다. 이 예에서는 핀 번호 12에 연결되어 있습니다.
  • 5-(RW) "읽기" 또는 "쓰기" 모드를 설정합니다. 우리는 녹음할 거예요. 접점을 접지에 연결합니다.
  • 6-(이자형) 할 수 있게 하다. 또 다른 "명령" 출력. 출력에 1이 적용되면 디스플레이는 이전에 전송된 명령을 실행합니다. 모든 디지털 출력에 연결됩니다. 이 예에서는 핀 번호 11에 연결되어 있습니다.
  • 7-10 (D0-D3) 연결되지 않은 상태로 둡니다. 8비트 인터페이스에서 사용되는 데이터 핀입니다. 우리는 그것이 필요하지 않습니다.
  • 11-14 (D4-D7) 4비트 모드에서 데이터 전송을 위한 접점입니다. 디지털 출력에 다시 연결하십시오. 이 예에서는 핀 5, 4, 3, 2에 각각 연결됩니다(D4는 핀 5, D5는 핀 4 등).
  • 15 (에이) 백라이트 LED 양극. 전류 제한 저항은 이미 디스플레이에 설치되어 있으므로 양극은 전원 레일에 간단히 연결됩니다. 백라이트는 가장 일반적인 LED를 사용하므로 이를 지원하는 모든 핀에 연결하고 프로그래밍 방식으로 백라이트의 밝기를 제어할 수 있습니다.
  • 16 (케이) 조명 음극. 접지 레일에 연결합니다.

시각적 연결 다이어그램:


프로그램 작성

함께 아두이노 IDE액정 디스플레이를 위한 뛰어난 라이브러리인 LiquidCrystal이 제공됩니다. 라이브러리에는 화면의 기능을 완전히 보여주는 예제가 포함되어 있습니다. 시작하려면 표준 "HelloWorld" 예제(파일 -> 예제 -> LiquidCrystal -> HelloWorld)를 사용하거나 다음 코드를 보드에 로드하세요.

/* *아두이노 핀 12에 대한 RS 디스플레이 핀 *아두이노 핀 11에 대한 디스플레이 핀 활성화 *아두이노 핀 5에 대한 D4 디스플레이 핀 *아두이노 핀 4에 대한 D5 디스플레이 핀 *아두이노 핀 3에 대한 D6 디스플레이 핀 *아두이노 핀 2에 대한 D7 디스플레이 핀 *접지에 대한 디스플레이의 R/W 출력 *디스플레이의 VO 출력에 대한 전위차계 출력 */ // 라이브러리 연결: #include ; // 디스플레이 초기화 // 열거 아두이노 핀// RS, E, D4, D5, D6, D7 디스플레이 접점이 연결됨 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() ( // 디스플레이의 열과 줄 수를 지정합니다: lcd.begin(16, 2); // 디스플레이에 메시지를 표시합니다. lcd.print("hello, world!"); ) void loop() ( // 커서를 첫 번째 행의 0(영) 열로 설정 // 실제로 커서는 두 번째(하위) 행으로 설정됩니다 // 행과 열의 번호 매기기는 0부터 시작됩니다. lcd.setCursor( 0, 1); // 보드가 로드된 순간부터 // 경과한 시간을 표시합니다. lcd.print(millis()/1000);

*RS 디스플레이 핀을 Arduino 핀 12에 연결

*Arduino 핀 11에 대한 디스플레이 핀 활성화

*D4 디스플레이 핀을 Arduino 핀 5에 연결

*D5 디스플레이 핀을 Arduino 핀 4에 연결

*D6 디스플레이 핀을 Arduino 핀 3에 연결

*D7 디스플레이 핀을 Arduino 핀 2에 연결

*R/W 디스플레이는 접지로 출력됩니다.

*디스플레이의 VO 핀에 대한 전위차계 출력

// 라이브러리를 연결합니다:

#포함하다 ;

// 디스플레이 초기화

// 연결된 Arduino 핀을 나열합니다.

// RS, E, D4, D5, D6, D7 디스플레이 핀

무효 설정() (

// 디스플레이의 열과 행 수를 지정합니다.

LCD. 시작(16, 2);

// 디스플레이에 메시지를 표시합니다.

LCD. print ("안녕하세요, 세계!" ) ;

무효 루프() (

// 행과 열의 번호 매기기는 0부터 시작됩니다.

LCD. setCursor(0, 1);

// 초 단위로 표시

// 보드가 로드된 이후 경과됨:

LCD. print(밀리스()/1000);

이 코드를 로드한 후 아두이노 보드화면에 "hello, world!"가 표시됩니다( 영어 "안녕하세요!") 첫 번째 줄에는 초를 카운트다운하는 타이머가 두 번째 줄에 있습니다.

일반적으로 그렇듯이 코드는 간단하고 이해하기 쉽습니다. 그러나 우리는 이를 더 자세히 분석할 것입니다:

  • 액정 LCD(12, 11, 5, 4, 3, 2) - 이 줄은 앞으로 작업할 표시 객체를 생성합니다. 괄호 안에는 디스플레이 접점이 연결된 핀 번호가 인수로 전달됩니다. 따라서: RS, E, D4, D5, D6, D7. 위에서 언급한 것처럼 연결 시 핀 번호는 완전히 임의로 선택할 수 있습니다.
  • LCD.시작(16, 2) - 여기서는 디스플레이 크기를 구성했습니다. 이 예에는 16개의 열과 2개의 행이 있습니다. 20X4 디스플레이의 경우 이 줄은 다음과 같습니다. LCD.시작(20, 4).
  • LCD.인쇄(“hello, world!”) - 디스플레이에 텍스트를 표시합니다. 디스플레이 크기(lcd.begin)를 지정한 후 커서는 디스플레이의 왼쪽 상단에 위치합니다. 따라서 이 텍스트는 왼쪽 첫 번째(맨 위) 줄에 표시됩니다.
  • lcd.setCursor(0, 1) - 커서를 지정된 위치로 설정합니다. 이 경우에는 두 번째 줄의 가장 왼쪽 위치가 표시됩니다. 괄호 안에 열 번호를 지정한 다음 행 번호를 지정합니다. 행과 열 모두 위치 0부터 번호가 매겨집니다. 따라서: lcd.setCursor(0, 0) - 커서를 왼쪽 상단으로 설정하고, lcd.setCursor(15, 0) - 오른쪽 하단으로 설정합니다.
  • LCD.인쇄(millis()/1000) - 이미 위에서 설명했습니다. 여기서는 텍스트 대신 계산식을 매개변수로 전달합니다. 결과가 화면에 표시됩니다.

이제 가장 간단한 예제를 다루었으므로 더 복잡한 예제로 넘어갈 수 있습니다. 이미 모든 내용을 이해하고 LCD 디스플레이를 구입할 준비가 되셨다면 제가 확인한 중국 디스플레이 판매자에 대한 링크를 수집해 보겠습니다.

문자 LCD 디스플레이

표시 크기(열*행)백라이트 색상상태
20*4 파란색검증됨
20*4 노란색검증됨
16*2 파란색검증됨
16*2 노란색검증됨
16*2 녹색검증됨

다른 LiquidCrystal 라이브러리 예제 검토

LiquidCrystal 라이브러리와 함께 제공되는 표준 예제에서 다음 스케치를 찾을 수 있습니다.

    • 자동스크롤- 텍스트를 자동으로 스크롤하는 기능을 보여줍니다. 일종의 크리핑 라인. 문자가 표시되면 이전 문자가 이동됩니다. 따라서 새로운 캐릭터가 같은 위치에 표시됩니다.

    • 깜박거리다- 직사각형 형태로 깜박이는 커서를 표시하는 기능을 보여줍니다.

    • 커서- 깜박이는 수평선 형태로 커서를 표시하는 기능을 보여줍니다.

    • 사용자 정의 문자- 자신만의 기호를 만들어 디스플레이에 표시하는 기능이 표시됩니다. 그런데 이 스케치에는 오류가 있습니다. 자세한 내용은 아래를 참조하세요.

    • 표시하다- 디스플레이를 "끄는" 방법을 보여줍니다. 즉, 표시된 텍스트를 표시하거나 숨깁니다.

    • 스크롤- 텍스트를 수동으로 스크롤하는 기능을 보여줍니다.

    • 직렬디스플레이- 포트 모니터 창에 인쇄된 텍스트(즉, 시리얼 포트를 통해 전송된 텍스트)를 화면에 표시합니다.
    • setCursor- 디스플레이를 문자로 채워 커서를 화면의 어느 위치에나 놓을 수 있는 기능을 보여줍니다.
    • 텍스트 방향- 텍스트 출력 방향을 변경하는 기능을 보여줍니다(오른쪽에서 왼쪽으로 또는 왼쪽에서 오른쪽으로).

다음 예를 통해 기능이 입증된 절차를 더 자세히 살펴보겠습니다.

LCD.autoscroll()

이 프로시저를 호출하면 화면의 텍스트가 자동으로 스크롤됩니다. 스크롤을 멈추려면 다음을 호출하세요. lcd.no자동스크롤().

LCD.깜박임()

프로시저를 호출한 후 커서는 깜박이는 직사각형으로 나타납니다. 통화를 비활성화하려면 lcd.noBlink()

LCD.커서()

프로시저를 호출한 후 커서는 깜박이는 수평선으로 나타납니다. 통화를 비활성화하려면 lcd.noСursor(). 커서가 다시 보이지 않게 됩니다.

lcd.createChar()

이 프로시저는 바이트 배열로 설명된 문자를 가변 화면 문자 테이블(CGRAM 메모리)에 로드합니다. 인수는 기호 번호와 기호를 설명하는 바이트 배열입니다. 이에 대해 좀 더 자세히 살펴보겠습니다. 디스플레이 메모리에는 최대 8자를 입력할 수 있습니다. 자신만의 기호를 추가하려면 다음이 필요합니다.

  1. 문자를 설명하는 바이트 배열을 만듭니다.
  2. 기호 테이블에 숫자를 할당하여 기호를 디스플레이 메모리에 씁니다. 문자에는 0부터 7까지의 번호가 지정됩니다.
  3. 절차를 사용하여 화면에 문자를 표시합니다. LCD.쓰기()(혼동하지 마세요. LCD.인쇄()), 기호 번호를 전달하는 인수로 사용됩니다.

개발 환경 및 라이브러리 기능의 버그로 인해 기호 번호 0(영)을 표시할 수 없게 되었습니다. 컴파일러가 lcd.write(0) 행을 발견하면 다음과 같은 오류가 발생합니다. 오버로드된 'write(int)' 호출이 모호합니다.". 이것이 바로 예제에 나타나는 줄입니다. 사용자 정의 문자도서관. 표준 예제를 컴파일하려고 하면 오류가 발생합니다.

CustomCharacter.ino: 'void setup()' 함수에서: CustomCharacter:115: 오류: 오버로드된 'write(int)' 호출이 모호합니다. /home/nazarovd/arduino-1.0.5/libraries/LiquidCrystal/LiquidCrystal.h:82 : 참고: 후보는 다음과 같습니다: virtual size_t LiquidCrystal::write(uint8_t) /home/nazarovd/arduino-1.0.5/hardware/arduino/cores/arduino/Print.h:49: 참고: size_t Print::write(const char *)

사용자 정의 문자. ino: 'void setup()' 함수에서:

CustomCharacter : 115 : 오류 : 오버로드된 'write (int )' 호출이 모호합니다.

/home/nazarovd/arduino - 1.0.5/libraries/LiquidCrystal/LiquidCrystal. h : 82 : 참고 : 후보는 : virtual size_t LiquidCrystal :: 쓰기 (uint8_t )

/home/nazarovd/arduino - 1.0.5/hardware/arduino/cores/arduino/Print. h : 49 : 참고 : size_t 인쇄:: 쓰기(const char * )

오류를 제거하려면 lcd.write( 0 )를 lcd.write( (바이트)0).
이제 자신만의 심볼을 만드는 방법에 대한 간단한 예를 살펴보겠습니다. 루블 기호를 표시해 보겠습니다.

// 라이브러리 포함 #include ; // 디스플레이 초기화 LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 기호를 설명합니다. // 단위와 함께 기호를 "그립니다" // 화면에 표시되면 단위는 채워진 점으로 표시되고 0은 채워지지 않습니다. ); void setup() ( // 화면 메모리에 기호 쓰기 // 기호 번호 전달 // 기호를 인수로 설명하는 바이트 배열 lcd.createChar(0, rubl); // 디스플레이 설정 lcd.begin( 16, 2); ) void loop() ( // 커서를 화면 왼쪽 상단으로 설정 lcd.setCursor(0,0); // 화면에 문자 번호 0을 표시 lcd.write((byte)0 ); // 10초 동안 아무것도 하지 않습니다. Delay(10000);

// 라이브러리 포함

#포함하다 ;

// 디스플레이 초기화

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);

이 지침은 Arduino에 연결하고 16x2 및 20x4 LCD 화면을 사용하는 방법을 보여줍니다. 이 화면에는 저전력 LED를 기반으로 한 백라이트가 내장되어 있으며 +5V에서 작동합니다. 이 LCD 화면을 연결하려면 6핀이 필요합니다. Arduino의 모든 핀을 사용할 수 있습니다!

지침은 Adafruit의 LCD 화면(청색 및 흰색 16x2, RGB 16x2 LCD 및 파란색 및 흰색 20x4, RGB 20x4)을 기반으로 작성되었습니다. 다른 제조업체의 LCD 화면을 사용하는 경우 작동 여부를 100% 보장할 수 없습니다(단, 99% 작동하더라도).

문자 LCD와 그래픽 LCD - 차이점은 무엇입니까?

다양한 LCD 화면이 있습니다. 이번 글에서는 문자 LCD에 대해 살펴보겠습니다. 이와 같은 화면은 텍스트를 표시하는 데 훌륭한 옵션입니다. 아이콘 표시를 사용자 정의할 수도 있지만 아이콘의 크기는 7픽셀(매우 작음)을 초과하면 안 됩니다.

아래 사진은 16자 LCD 모니터가 두 줄로 작동하는 방식의 예를 보여줍니다.

자세히 살펴보면 기호가 표시되는 작은 직사각형을 볼 수 있습니다. 각 직사각형은 별도의 픽셀 격자입니다. 비교를 위해 그래픽 LCD 화면이 아래와 같습니다.

그래픽 액정 디스플레이에는 다음이 하나 있습니다. 대형 메쉬픽셀(이 예에서는 128x64). 텍스트를 표시할 수 있지만 이미지를 표시하는 것이 더 좋습니다. 그래픽 LCD는 일반적으로 텍스트 LCD보다 크기가 더 크고, 연결용 핀도 더 많으며, 사용하기가 다소 어렵습니다.

이 글에서는 텍스트/문자 화면만 다룰 것입니다!

LCD 화면의 다양한 모델

고려 중인 화면 유형을 제한한 후 화면이 무엇인지 살펴보겠습니다.



텍스트 표시에만 사용되지만 모델과 폼 팩터는 다양합니다. 왼쪽 상단의 LCD 화면은 파란색 배경에 흰색 텍스트가 있는 20x4이고, 오른쪽 상단은 녹색 배경에 검정색 텍스트가 있는 16x4입니다. 왼쪽 하단은 회색 배경에 검정색 텍스트가 있는 16x1입니다.

좋은 소식은 이러한 화면이 모두 상호 교환 가능하다는 것입니다. 그 중 하나를 구성한 경우 다른 모델로 교체할 수 있습니다. 스케치를 조금 변경해야 하지만 연결 방식은 동일합니다!



이 부분에서는 연결을 위해 하나의 레일과 16개의 핀이 있는 LCD 화면을 사용합니다(위 사진 참조). 연결을 위한 8개 접점의 2개 레일이 있는 LCD도 있습니다(아래 그림 참조).



두 번째 모델을 무납땜 회로 기판에 연결하는 것은 더 어렵습니다.

Arduino에 캐릭터 LCD 화면 연결하기

접촉 레일 설치



LCD 화면 외에도 추가 배선이 필요합니다. 첫째, 10kOhm에서. 전위차계를 사용하여 디스플레이의 대비를 조정합니다. 각 LCD 화면에는 대비 설정이 다르므로 조정이 필수입니다. 또한 0.1" 접점 레일이 필요합니다.



접점이 있는 레일이 너무 길면 남은 접점을 간단히 잘라낼 수 있습니다!

LCD 디스플레이에 핀을 납땜해야 합니다.

납땜할 때, 손상되지 않도록 각별히 주의하세요! 먼저 첫 번째 접점과 16개 접점을 "잡은" 다음 나머지를 납땜할 수 있습니다.



전원 및 조명

전원 및 조명 연결

설명



우리는 몇 가지 흥미로운 일을 시작하고 있습니다! 브레드보드에 LCD를 설치합니다.



우리는 Arduino에서 브레드보드에 전원을 공급합니다. 빨간색 레일에 +5V를 연결하고 파란색 레일에 Gnd를 연결합니다.



그런 다음 LCD 화면의 백라이트를 연결합니다. 핀 16을 GND에 연결하고 핀 15를 +5V에 연결합니다. 대부분의 LCD 화면에는 백라이트용 저항기가 있습니다.

모듈에 저항기가 없으면 5V와 핀 15 사이에 하나를 추가해야 합니다. 저항기 값을 계산하려면 다음을 확인하십시오. 최대 전류백라이트에 전원을 공급하기 위한 정보와 데이터시트의 대략적인 전압 강하 값이 나와 있습니다. 5V에서 전압 강하 값을 뺀 후 다음으로 나눕니다. 최대 강도가장 가까운 높은 표준 저항 값으로 반올림합니다. 예를 들어, 전압 강하가 3.5V이고 전류가 16mA인 경우 저항 값은 (5 - 3.5)/0.016 = 93.75Ω, 즉 표준 값으로 반올림한 후 100Ω이 됩니다. 데이터시트를 찾을 수 없으면 220옴 저항을 사용하세요. 사실, 이 경우 백라이트가 상당히 희미할 수 있습니다.



Arduino를 전원에 연결하십시오. 백라이트가 켜져야 합니다.

그런데 일부 저렴한 LCD 화면에는 백라이트가 없습니다!

대비 조정 회로

대비 조정 회로

설명



전위차계를 설치합니다. 사진에서는 핀 1의 오른쪽에 있습니다.



전위차계의 한쪽을 +5V에 연결하고 다른 쪽을 Gnd에 연결합니다. 전위차계의 중간 접점을 LCD의 핀 3에 연결합니다.



이제 화면의 논리를 연결합니다. 이것은 백라이트와 별도의 회로입니다! 핀 1은 Gnd로 연결되고 핀 2는 +5V로 연결됩니다.



Arduino를 켜십시오. LCD 모니터에 백라이트가 있으면 백라이트가 켜집니다. 전위차계 손잡이를 돌려 첫 번째 라인의 첫 번째 픽셀 직사각형을 확인합니다.

모든 것이 성공했다면 축하드립니다. 이는 논리, 조명 및 대비가 작동한다는 것을 의미합니다! 작동하지 않으면 오류가 무엇인지 확인할 때까지 지침의 다음 단계를 진행하지 마십시오!

최종 연결

D0~D7, RS, EN 및 RW. D0-D7은 디스플레이로 전송된 값을 저장하는 핀입니다. RS 핀은 데이터(예: ASCII 문자)를 표시할지 또는 제어 바이트인지(예: 커서 위치 변경) 여부를 컨트롤러에 알려줍니다. EN 핀은 "enable"의 약자이며 이 핀을 사용하여 데이터를 읽을 준비가 되었을 때 LCD에 알립니다. RW 핀은 방향을 설정하는 데 사용됩니다. 즉, 디스플레이에서 데이터를 표시(일반적으로)하거나 읽는(덜 일반적으로 사용됨)하려고 합니다.

모든 핀을 Arduino에 연결할 필요는 없습니다. 예를 들어, 화면에 데이터만 표시하는 경우 RW를 사용할 필요가 없으므로 Gnd 핀에 "풀업"하는 것으로 충분합니다. 또한, 8핀이 아닌 4핀을 사용하여 LCD 화면과 통신할 수 있습니다. 어떤 경우에 8핀을 사용합니까?라는 자연스러운 질문이 생길 것입니다. 이는 데이터 전송 속도에 영향을 미칠 가능성이 높습니다. 즉, 4개가 아닌 8개의 연락처를 사용하면 정보 교환 속도를 2배 높일 수 있습니다. 이 경우 속도는 중요하지 않으므로 4핀을 사용하여 LCD를 Arduino에 연결합니다.

따라서 RS, EN, D7, D6, D5 및 D4의 6개 핀이 필요합니다.

LCD 화면 작업을 위해 우리는 핀 설정 프로세스를 크게 단순화하는 LiquidCrystal 라이브러리를 사용할 것입니다. 이 라이브러리의 장점 중 하나는 Arduino의 모든 핀을 사용하여 LCD 핀을 연결할 수 있다는 것입니다. 따라서 이 가이드가 끝나면 프로젝트에 중요한 경우 접점을 쉽게 교체할 수 있습니다.

최종 디스플레이 연결

설명



위에서 언급했듯이 RW 핀을 사용하지 않으므로 핀을 접지로 끌어당깁니다. 이것은 핀 5입니다.



그런 다음 RS를 연결합니다. 이것이 핀 #4입니다. 갈색선을 사용하여 Arduino의 디지털 핀 #7에 연결합니다.



흰색 전선을 사용하여 EN 핀 - 핀 #6을 Arduino의 디지털 핀 디지털 #8에 연결합니다.



이제 데이터 접촉을 위한 시간입니다. DB7은 LCD의 핀 #14입니다. Arduino의 12번 핀에 주황색 선으로 연결되어 있습니다.



왼쪽에는 DB6(핀 #13 노란색), DB5(핀 #12 녹색) 및 DB4(핀 #11 파란색)의 3개 데이터 핀이 남아 있습니다. Arduino의 핀 #11, 10, 9에 각각 연결됩니다.



Connection의 결과로 왼쪽 사진과 비슷한 것을 얻게 될 것입니다.

캐릭터 LCD를 사용하고 있습니다

이제 LCD 화면을 제어하기 위해 스케치를 Arduino에 업로드할 차례입니다. LiquidCrystal 라이브러리는 기본적으로 Arduino IDE에 설치됩니다. 따라서 예제 중 하나를 다운로드하고 연결하는 데 사용한 핀에 따라 약간 조정하면 됩니다.

스케치 파일→예제→LiquidCrystal→HelloWorld를 엽니다.

핀에 관한 정보를 업데이트합니다. 우리는 다음 줄을 찾고 있습니다:

LiquidCrystal LCD(12, 11, 5, 4, 3, 2);

그리고 다음과 같이 변경합니다.

이제 스케치를 컴파일하고 Arduino에 업로드할 수 있습니다.



필요한 경우 대비를 조정하십시오.



당연히 어떤 크기로든 LCD 디스플레이를 사용할 수 있습니다. 예를 들어 아래 사진은 LCD 작동 20x4.



또는 녹색 배경에 검정색 텍스트:



녹색 배경에 검은색 텍스트가 있는 화면의 장점 중 하나는 백라이트를 끌 수 있다는 것입니다.



몇 줄을 사용하자

LCD 화면이 긴 메시지와 여러 줄을 처리하는 방법을 이해해 보겠습니다. 예를 들어, 다음 줄을 변경하면:

lcd.print("안녕하세요, 세상!");

다음으로:

lcd.print("안녕하세요! 긴 메시지입니다.");

LCD 디스플레이 16x2에서는 16번째 문자 이후의 모든 내용이 잘립니다.



그러나 20x4 LCD는 표시되지 않은 문자를 첫 번째 줄에서 세 번째 줄로 전달합니다(두 번째 줄은 네 번째 줄까지 계속됩니다). 그다지 편리하지는 않지만 이 단계에서는 참아야 합니다. 따라서 긴 문자열을 표시할 때 허용되는 길이를 초과하지 않도록 문자 수를 세십시오.



RGB 백라이트가 있는 LCD

이 화면은 일반 화면과 동일하게 작동하지만 백라이트용 LED가 3개(빨간색, 녹색, 파란색)이므로 다양한 백라이트 색상을 사용할 수 있습니다.

위의 설명에 따라 LCD를 연결하고 확인한 후 LED를 Arduino의 PWM 아날로그 핀에 연결하여 색상을 미세 조정하세요. 당신이 사용하는 경우 아두이노 우노, 3개의 무료 PWM 접점이 남아 있어야 합니다. 빨간색 LED(LCD의 핀 16)를 디지털 3에 연결하고, 녹색 LED(핀 17) - 디지털 5에, 파란색 LED(LCD의 핀 18) - 디지털 6에 연결합니다. LCD 모듈에는 이미 저항기가 있으므로 추가로 연결할 필요가 없습니다.



이제 아래 스케치를 Arduino에 업로드하십시오.

// 라이브러리 스케치에 포함:

#포함하다

#포함하다

#REDLITE 3 정의

#GREENLITE 5 정의

#블루라이트 6 정의

// 우리가 사용하는 연락처 수를 선언합니다.

// 데이터 전송을 위해

LiquidCrystal LCD(7, 8, 9, 10, 11, 12);

// 밝기는 0 -> 255 범위에서 변경 가능

정수 밝기 = 255;

// LCD의 열과 행 수를 설정합니다.

lcd.begin(16, 2);

// LCD에 메시지를 표시합니다.

lcd.print("RGB 16x2 디스플레이 ");

lcd.setCursor(0,1);

lcd.print(" 멀티컬러 LCD ");

pinMode(REDLITE, OUTPUT);

pinMode(GREENLITE, OUTPUT);

pinMode(블루라이트, 출력);

밝기 = 100;

for (int i = 0; i< 255; i++) {

setBacklight(i, 0, 255-i);

for (int i = 0; i< 255; i++) {

setBacklight(255-i, i, 0);

for (int i = 0; i< 255; i++) {

setBacklight(0, 255-i, i);

void setBacklight(uint8_t r, uint8_t g, uint8_t b) (

// 빨간색 LED를 설정합니다. 다른 것보다 더 밝습니다!

r = 맵(r, 0, 255, 0, 100);

g = 지도(g, 0, 255, 0, 150);

r = map(r, 0, 255, 0, 밝기);

g = 맵(g, 0, 255, 0, 밝기);

b = 맵(b, 0, 255, 0, 밝기);

// 공통 양극이므로 반전하세요!

r = 지도(r, 0, 255, 255, 0);

g = 지도(g, 0, 255, 255, 0);

b = 맵(b, 0, 255, 255, 0);

Serial.print("R = "); Serial.print(r, DEC);

Serial.print(" G = "); Serial.print(g, DEC);

Serial.print(" B = "); Serial.println(b, DEC);

아날로그쓰기(REDLITE, r);

아날로그쓰기(GREENLITE, g);

아날로그쓰기(BLUELITE, b);

이 스케치의 결과는 아래 비디오에 나와 있습니다.

createChar 명령

아마도 특수 문자를 사용하고 싶을 것입니다. 예를 들어 온도 센서()를 사용하여 프로젝트를 설계하는 경우 기호(°)가 유용합니다.

이는 createChar 명령을 사용하여 달성할 수 있습니다. 또는 새로운 기호를 만드는 모든 더러운 작업을 수행할 수 있는 훌륭한 웹사이트를 찾을 수도 있습니다!

의견, 질문을 남기고 공유하세요. 개인적인 경험아래에. 새로운 아이디어와 프로젝트는 종종 토론을 통해 탄생합니다!

Arduino 보드를 문자 디스플레이와 연결하는 방법은 무엇입니까? 매우 간단합니다! 아래에는 모든 것이 순서대로, 세부적으로 나와 있습니다.

컴퓨터에 연결하지 않고 아두이노로부터 정보를 받아 시리얼 포트로 출력하고 싶다면 문자 디스플레이를 이용하면 된다. 그다지 어렵지 않습니다. 의사소통을 통해 얻는 편리함은 매우 중요합니다.
업무를 위해 저는 eBay에서 LCD2004로 흔히 볼 수 있는 HD44780 칩 기반의 J204A 문자 LCD 디스플레이를 사용했습니다. 20자로 구성된 4줄, 반전됨. eBay에서 다른 사람들과 함께 각각 60~100루블에 단돈 몇 푼에 구입했습니다. 러시아어는 기본적으로 지원되지 않지만 이는 해결 가능한 문제이므로 다음 번에 자세히 설명하겠습니다. 그리고 다이어그램의 커넥터는 납땜되어 있지 않으므로 납땜 인두를 사용하여 작업해야 합니다.
라이브러리는 디스플레이 작업에 사용됩니다. LiquidCrystal.h기본 Arduino IDE에 포함되어 있습니다.

하지만 LCD2004 디스플레이에 대한 데이터시트를 찾지 못했지만 인터넷에는 디스플레이 테이블이 가득합니다. 그러나 그들은 실제로 서로 다르지 않습니다. 컨트롤과 연결은 완전히 동일합니다. 유일한 차이점은 디스플레이의 줄/문자 수입니다. 하지만 1602가 있으면 전혀 효과가 없습니다.

모든 연락처는 테이블에 정의되어 있습니다. 디스플레이를 가져와 사용자 쪽으로 돌리면 연락처가 각각 왼쪽에서 오른쪽으로 배치되며 표에서는 숫자가 증가하는 순서로 나열됩니다. 연락처 열에서 데이터 시트의 지정은 괄호 안에 표시됩니다.

# 콘택트 렌즈 그것은 무엇을 위해 사용됩니까? 메모
1 VSS (VSS) 접지. 지구. 디스플레이 마이크로 컨트롤러용 전원 공급 장치입니다. 0V
2 VDD(VCC) 디스플레이 마이크로컨트롤러의 공급 전압입니다. +5V
3 V0(VEE) 디스플레이의 문자 대비. 전위차계를 통해 연결하는 것이 좋습니다. 0V에서 +5V까지
4 RS (RS) 선택을 등록합니다.
5 RW(읽기/쓰기) 읽기/쓰기 모드 전환. 땅으로 끌어당기면 디스플레이에 정보만 전송하면 됩니다. 0-쓰기 +5V-읽기
6 이자형 클러킹
7 D0 (DB0) 데이터
8 D1 (DB1) 데이터 전송. (우리는 그것을 사용하지 않을 것이다) 데이터
9 D2(DB2) 데이터 전송. (우리는 그것을 사용하지 않을 것이다) 데이터
10 D3(DB3) 데이터 전송. (우리는 그것을 사용하지 않을 것이다) 데이터
11 D4(DB4) 데이터
12 D5 (DB5) 데이터 전송. (활성화됨) 데이터
13 D6 (DB6) 데이터 전송. (활성화됨) 데이터
14 D7 (DB7) 데이터 전송. (활성화됨) 데이터
15 A(LED+) +5V 전압, 디스플레이 백라이트, 디스플레이 밝기는 전위차계를 통해 조정할 수 있습니다. +5V
16 K(LED-) GND 접지, 디스플레이 백라이트 0V

다섯


디스플레이로의 데이터 전송은 클록당 8비트와 4비트의 두 가지 옵션으로 가능합니다. 왜냐하면 Arduino에는 접점이 거의 없으며 4개를 사용합니다. 이는 인식할 수 없는 속도로 디스플레이의 정보를 업데이트하는 데 충분합니다.

이것이 모든 것이 나와 연결되는 방식입니다. 혼란스러워 보일 수도 있지만 여기에는 시스템이 있습니다. 빨간색, 녹색, 노란색, 주황색 선을 구분할 수 있습니다. 빨간색은 항상 +5V, 녹색은 GND, 노란색과 주황색은 데이터를 전달하는 Arduino에 연결하는 전선입니다.

가장 중요한 부분은 디스플레이의 물리적 연결입니다. 클릭하면 모든 것이 선명하게 보이는 고해상도로 열립니다.
R1 - 저항 200OM. 저항은 디스플레이 백라이트를 통과하는 전류를 제한합니다.
R2 - 최대 10kOM의 저항을 갖는 전위차계. 펜을 돌려 기호의 대비를 선택합니다.



그리고 화면에 몇 개의 선을 표시하는 매우 간단한 스케치입니다.

H> // 디스플레이 작업을 위해 라이브러리를 연결합니다. /* LiquidCrystal 명령 lcd(rs, 활성화, d4, d5, d6, d7); LiquidCrystal 유형의 변수를 생성하고 Arduino가 디스플레이와 작동하는 접점을 결정합니다. 이 명령에 대한 자세한 내용은 여기 http://arduino.cc/en/Reference/LiquidCrystalConstructor */ LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup() ( lcd.begin(20, 4); // 디스플레이의 특성을 결정합니다(한 줄에 20자, 4줄) // 디스플레이 1602의 경우 lcd.begin(16, 2)을 지정해야 합니다. lcd .setCursor(1, 1); // 텍스트 표시를 시작할 위치를 지정합니다. 줄과 문자는 0부터 시작합니다!!! // 1은 이미 화면 시작 부분에서 캐리지 한 칸씩 이동하고 텍스트도 한 칸 이동합니다. 아래 줄 lcd.print("compblog.vlukyanov" ); // 지정된 위치부터 텍스트를 인쇄합니다. lcd.setCursor(7, 2) // 화면의 8번째 문자부터 인쇄합니다. lcd.print(".com "); // 인쇄할 텍스트. loop() ( // 루프에서 다른 작업은 수행하지 않습니다. 모든 작업은 보드 초기화 중에 이미 수행되었습니다. )

결과. 모든 것이 어떻게 연결되고 코드를 작성하는 방법을 안다면 모든 작업에 소요되는 시간은 5분입니다.

디스플레이는 일부 기능을 독립적으로 수행할 수도 있으며 일부 매개변수를 설정할 수도 있습니다.

예를 들어:

  • 텍스트 스크롤;
  • 플래시 커서 위치;
  • 켜기/끄기.

이제 보너스를 받으세요!
디스플레이 백라이트는 에너지를 낭비합니다. 예를 들어 배터리로 전원을 공급할 때는 에너지를 절약하고 싶습니다. 이 옵션은 제가 직접 만들었습니다. 버튼을 누르면 디스플레이 백라이트가 5초 동안 켜집니다.

H> // 디스플레이 작업을 위해 라이브러리를 연결합니다. int 버튼Int = 0; // 호출될 인터럽트의 번호입니다. int screenLed = 4; // 화면이 연결된 핀 번호입니다. +5V 휘발성 롱 x = 5000; // 시간을 저장하기 위한 변수 LiquidCrystal lcd(6, 7, 8, 9, 10, 11); void setup attachment() (Interrupt(buttonInt, screenon, FALLING); // 인터럽트 매개변수 lcd.begin(20, 4); pinMode(screenLed, OUTPUT); digitalWrite(screenLed,HIGH); // 디스플레이 LCD를 켭니다. setCursor(0 , 0); lcd.print("Start screenon test!"); // 버튼을 눌렀을 때 실행될 함수입니다. void screenon() ( x = millis()+5000; // 백라이트를 꺼야 하는 시간을 기억합니다. 현재 작동 시간 +5초. digitalWrite(screenLed,HIGH); // 디스플레이 백라이트에 전압을 적용합니다. ) void loop() ( lcd.setCursor(0, 2); // 세 번째 줄로 이동 lcd.print(x); // 디스플레이가 꺼지는 시간을 표시 lcd.setCursor(0, 3); / / 네 번째 줄로 이동 lcd.print( millis()) // 현재 작동 시간을 인쇄합니다. if (x< millis()) // если время работы выключения наступило >( digitalWrite(screenLed,LOW); // 그런 다음 디스플레이를 끕니다.) )

결과는 다음과 같습니다.