2022년 12월 30일 금요일

Arduino 에서 LCD 사용하기

테스트 환경

arduino-ide 설치

다운로드

  1. 아두이노 다운로드 페이지 에서 리눅스용 zip 파일 다운로드
  2. 아이콘 이미지는 icon-icons 에서 ICO, 128px 선택 후 다운로드
  3. .desktop 파일 생성 스크립트 다운로드

설치

$ cd ~/Downloads

# 아두이노 IDE 설치
$ sudo unzip arduino-ide_2.0.3_Linux_64bit.zip -d /opt

# 아이콘 복사
$ sudo mv arduino_logo_icon_170518.ico /opt/arduino-ide_2.0.3_Linux_64bit/arduino.ico

# .desktop 파일 생성
$ ./mkdtp.sh /opt/arduino-ide_2.0.3_Linux_64bit/arduino-ide
# .desktop 파일에 아이콘 정보 추가
$ sed -i '/Icon/s;$;/opt/arduino-ide_2.0.3_Linux_64bit/arduino.ico;' ~/.local/share/applications/arduino-ide.desktop
# 독 > 프로그램 표시 > arduino 로 검색 > arduino-ide 를 오른쪽 클릭 > 즐겨찾기에 추가 

실행 및 설정

  1. 즐겨찾기에서 아두이노 아이콘 클릭
  2. File > Preferences... > Language 를 한국어로 변경 > OK > (자동으로 재로딩)
  3. 보드를 USB 케이블로 PC 에 연결
  4. 보드 선택에서 Arduino Uno 선택

회로 구성

회로 구성할 때는 전원을 끄고(USB 케이블을 빼고) 한다.

연결 및 예제 코드는 구글 등에서 아두이노 LCD 연결 등으로 검색한다.
여기서는 요즘 핫한 ChatGPT (무료 가입) 에게 물어봤다. (구글 번역기 돌린 것)
How to connect Arduino Uno and I2C 1602 LCD?

그림도 잘 그린다.
Arduino Uno       I2C 1602 LCD
 _______________  _______________
|               ||               |
|       GND ----|---- GND        |
|       +5V ----|---- VCC        |
|       A4 -----|---- SDA        |
|       A5 -----|---- SCL        |
|_______________|________________|

코드 작성 및 실행

코드도 ChatGPT 에게 물어봤다. (구글 번역기)
Show me an example program to display 'hello world' on I2C 1602 LCD on Arduino Uno.
코드와 코드의 설명이 나온다.

실행

1. 작성해준 코드를 arduino-ide 의 스케치에 전체 붙여넣기를 한다.
2. 업로드 버튼(왼쪽 위의 ->)을 누른다.
Compilation error: LiquidCrystal_I2C.h: No such file or directory
컴파일 에러가 나왔다.
3. ChatGPT 에게 다시 물어봤다. (역시 구글 번역기)
'Compilation error: LiquidCrystal_I2C.h: No such file or directory' What do you do?
세가지 가능성을 말하는데 새로 설치한거라 1번으로 시도
스케치 > 라이브러리 포함 > 라이브러리 관리... > 필터 검색... 에서 LiquidCrystal_I2C 로 검색 > 
LiquidCrystal I2C by Frank de Brabander 를 설치
4. 다시 업로드 버튼(->) 을 누른다. 
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
권한 에러가 나왔다.
5. 그룹을 추가한다. 
$ ls -l /dev/ttyACM0 
crw-rw---- 1 root dialout 166, 0 12월 31 10:53 /dev/ttyACM0
$ sudo usermod -aG dialout $USER
# 다시 로그인 해야한다. (터미널이나 IDE 를 다시 띄우는게 아니고, 전원 끄기/로그아웃 > 로그아웃)
5. 업로드 버튼(->) 을 누른다. 
업로드는 성공했다.

문제

LCD 에 불은 들어오는데 글자가 안보인다.
ChatGPT 에게 계속 물어봤다. (계속 구글 번역기)
The LCD lights up, but I can't see the text. What's wrong?

네가지 가능성 중 첫번째 시도
LCD 뒷면에 명암대비를 조절하는 나사(파란색) 을 돌려보니 글자가 보임.

쓰고보니 ChatGPT 사용기가 되었다.