LCD 패널 제어

2024. 7. 1. 11:29Jetson

 

 

✅ LCD 패널 제어

#include <Wire.h>

// I2C 주소를 검색해보자! -> 1~119까지 주소를 가지고 있음!

void setup() {

  Serial.begin(9600);
  Wire.begin(); // Wire 라이브러리 사용하겠다!
  
  while(!Serial) {} // Serial이 없다면
  Serial.println("");

  for (byte i = 1; i < 120; i++) {
    Wire.beginTransmission(i); // 1~119번 주소의 장치를 검색

    if (Wire.endTransmission() == 0) { // I2C 통신이 가능한 장치가 있다면
      Serial.print("Address : ");
      Serial.print("0x");
      Serial.println(i, HEX);
      
      delay(10);
    }
  }

}

void loop() {
  
}
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2); // 검색된 I2C 주소와 lcd의 열, 행

void setup() {
  lcd.init(); // lcd 사용 시작

  lcd.backlight();

  lcd.setCursor(0, 0);

  lcd.print("Hello World!");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis() / 1000); // 1초마다 초로 출력해보기!
}
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2); // 검색된 I2C 주소와 lcd의 열, 행

void setup() {
  lcd.init(); // lcd 사용 시작

  lcd.backlight();

  // lcd.setCursor(0, 0);

  // lcd.print("Hello World!");
}

void loop() {
  // lcd.setCursor(0, 1);
  // lcd.print(millis() / 1000); // 1초마다 초로 출력해보기!

  // 1. 커서를 깜빡 거리기

  lcd.setCursor(0, 0);

  lcd.print("Cursor blink");

  lcd.blink(); // 커서를 깜빡거리게 하는 함수

  delay(2000); // 2초

  // 2. 커서를 깜빡 거리지 않게 하기

  lcd.clear(); // lcd 내용 지우기

  lcd.noBlink(); // 커서를 깜빡거리지 않게 하는 함수

  lcd.print("Cursor noblink");

  delay(2000);

  // 3. lcd 내용을 보이지 않게 하기

  lcd.clear();

  lcd.print("Display off");

  delay(1000);

  lcd.noDisplay(); // lcd display 보이지 않게 하는 함수

  // 4. lcd 내용 보이게 하기

  lcd.clear();

  delay(2000);

  lcd.print("Display on");

  lcd.display();

  delay(2000);

  lcd.clear();
}

 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2); // 검색된 I2C 주소와 lcd의 열, 행

const char data[] = "Hello World";
const int textSize = sizeof(data) - 1; // 종결 문자기 때문에 -1 해줘야 함

void setup() {
  lcd.init(); // lcd 사용 시작

  lcd.backlight();

  lcd.print(data);

  // lcd.setCursor(0, 0);

  // lcd.print("Hello World!");
}

void loop() {
  for (int pos = 0; pos < textSize; pos++) {
    lcd.scrollDisplayLeft(); // lcd 왼쪽으로 스크롤 // scrollDisplayRight() -> 오른쪽

    delay(200); // 0.2초
  }

  // lcd.setCursor(0, 1);
  // lcd.print(millis() / 1000); // 1초마다 초로 출력해보기!

  // // 1. 커서를 깜빡 거리기

  // lcd.setCursor(0, 0);

  // lcd.print("Cursor blink");

  // lcd.blink(); // 커서를 깜빡거리게 하는 함수

  // delay(2000); // 2초

  // // 2. 커서를 깜빡 거리지 않게 하기

  // lcd.clear(); // lcd 내용 지우기

  // lcd.noBlink(); // 커서를 깜빡거리지 않게 하는 함수

  // lcd.print("Cursor noblink");

  // delay(2000);

  // // 3. lcd 내용을 보이지 않게 하기

  // lcd.clear();

  // lcd.print("Display off");

  // delay(1000);

  // lcd.noDisplay(); // lcd display 보이지 않게 하는 함수

  // // 4. lcd 내용 보이게 하기

  // lcd.clear();

  // delay(2000);

  // lcd.print("Display on");

  // lcd.display();

  // delay(2000);

  // lcd.clear();
}
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F, 16, 2); // 검색된 I2C 주소와 lcd의 열, 행

// const char data[] = "Hello World";
// const int textSize = sizeof(data) - 1; // 종결 문자기 때문에 -1 해줘야 함

void setup() {
  lcd.init(); // lcd 사용 시작

  lcd.backlight();

  Serial.begin(9600);

  // lcd.print(data);

  // lcd.setCursor(0, 0);

  // lcd.print("Hello World!");
}

void loop() {
  if (Serial.available()) { // 뭔가 받아 온게 있다면
    lcd.clear();
    
    while (Serial.available() > 0) {
      // lcd.setCursor(0, 0);
      char c = Serial.read();
      lcd.print(c); // lcd에 시리얼 통신 수신 결과 쓰기
    }
  }

  // for (int pos = 0; pos < textSize; pos++) {
  //   lcd.scrollDisplayLeft(); // lcd 왼쪽으로 스크롤 // scrollDisplayRight() -> 오른쪽

  //   delay(200); // 0.2초
  // }

  // lcd.setCursor(0, 1);
  // lcd.print(millis() / 1000); // 1초마다 초로 출력해보기!

  // // 1. 커서를 깜빡 거리기

  // lcd.setCursor(0, 0);

  // lcd.print("Cursor blink");

  // lcd.blink(); // 커서를 깜빡거리게 하는 함수

  // delay(2000); // 2초

  // // 2. 커서를 깜빡 거리지 않게 하기

  // lcd.clear(); // lcd 내용 지우기

  // lcd.noBlink(); // 커서를 깜빡거리지 않게 하는 함수

  // lcd.print("Cursor noblink");

  // delay(2000);

  // // 3. lcd 내용을 보이지 않게 하기

  // lcd.clear();

  // lcd.print("Display off");

  // delay(1000);

  // lcd.noDisplay(); // lcd display 보이지 않게 하는 함수

  // // 4. lcd 내용 보이게 하기

  // lcd.clear();

  // delay(2000);

  // lcd.print("Display on");

  // lcd.display();

  // delay(2000);

  // lcd.clear();
}

 

 

 

✅ 실습

  • 📌 수신한 문자가 6이라면
    • 오른쪽으로 스크롤
  • 📌 수신한 문자가 4라면
    • 왼쪽으로 스크롤
  • 📌 수신한 문자가 2라면
    • 화면을 지우고 (0, 1)로 이동해서 "Hello IoT" 출력
  • 📌 수신한 문자가 8이라면
    • 화면을 지우고 (0, 0)로 이동해서 "Hello IoT" 출력
  • 📌 특수문자 활용(p. 17)
  • http://www.sparkfun.com/datasheets/LCD/HD44780.pdf
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); 

void setup() {

  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
  
}
void loop() {
  if(Serial.available()>0){

    while (Serial.available()>0){

      char c = Serial.read();

      if (c == '6') {

        lcd.scrollDisplayRight();

      } else if (c == '4') {

        lcd.scrollDisplayLeft();

      } else if (c == '2') {

        lcd.clear();
        lcd.setCursor(0, 1);
        lcd.print("Hello IoT!");

      } else if (c == '8') {

        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Hello IoT!");

      }
    }
  }
}

 

 

'Jetson' 카테고리의 다른 글

적외선 센서, 키패드 제어, 7-세그먼트, 적외선 온도센서  (1) 2024.07.03
DC 모터 제어  (0) 2024.07.01
Widget Button  (1) 2024.06.28
Data collection  (0) 2024.06.27
Wireless_Joystick  (0) 2024.06.24