아두이노

아두이노 LCD 1602

모카쨩 2021. 7. 16. 11:19

 

 

 

 

 

 

https://github.com/johnrickman/LiquidCrystal_I2C

 

johnrickman/LiquidCrystal_I2C

LiquidCrystal Arduino library for the DFRobot I2C LCD displays - johnrickman/LiquidCrystal_I2C

github.com

 

 

 

 

 

 

하고 아두이노를 껐다킨다

 

 

 

#include<Wire.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //기기에 따라 27이 아닌 3F이다.
//LiquidCrystal_I2C lcd(0x27,20,4); //2004의 경우
   
void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Hello, world!");
  lcd.setCursor(0,1);
  lcd.print("LCD Test");
}

 

 

글씨가 안보인다고? 뒷면의 십자나사홈을 돌려서 밝기를 조절해준다

너무 밝으면 백그라운드까지 밝아져서 안보이고 너무 어두우면 글씨가 안 나온다

 

그래도 안 보이면 위의 27을 3F로 바꿔준다

3.3v로 해도 보이지만 너무 흐리므로 5v로 넣어주자

Due의 경우 SCL을 21번에 SDA를 20번으로 사용한다

 

 

 

 


//가운데 정렬
void LCDPrintCenter(String message,int width) 
{
  int iMax=(width/2)-message.length()/2;
  for(int i=0;i<iMax;i++)
  {
    message=' '+message;
  }
  for(int i=message.length();i<width;i++)
  {
    message=message+' ';
  }
  lcd.print(message);
}

//왼쪽 정렬
void LCDPrintLeft(String message,int width) 
{
  int iMax=width-message.length();
  for(int i=0;i<iMax;i++)
  {
    message=message+' ';
  }
  lcd.print(message);
}

//오른쪽 정렬
void LCDPrintRight(String message,int width) 
{
  int iMax=width-message.length();
  for(int i=0;i<iMax;i++)
  {
    message=' '+message;
  }
  lcd.print(message);
}
 
 
 
 
 //예제
 lcd.setCursor(0,0);
  String message="Unknown";
  switch(mode)
  {
    case Start:
      message="Start";
      break;
    case Loop:
      message="Loop";
      break;
  }
  int lcdWidth=20;
  
  //왼쪽정렬
  LCDPrintLeft(message,lcdWidth);
  
  //가운데정렬
  LCDPrintCenter(message,lcdWidth);

글씨 바꿀때 해당 라인을 초기화할 필요가 있을경우