저는 라즈베리 파이를 사용하는 동안 LCD1602 디스플레이 화면을 사용하여 IP 주소와 CPU 온도를 표시하여 라즈베리 파이가 튀지 않도록 하고 싶었습니다. LCD 화면은 16열에 두 줄의 문자만 표시할 수 있기 때문에 제한이 있어서 저는 "CPU" 텍스트만 표시하기로 했습니다: " 및 "IP:"와 해당 데이터만 표시하기로 했습니다. 디스플레이는 I2C 인터페이스를 사용하여 직렬 입력 및 병렬 출력 모듈을 화면에 연결하므로 LCD를 작동하는 데 필요한 전선은 4개뿐입니다. 직렬-병렬 IC 칩은 코드에서 참조할 수 있는 기본 I2C 주소(0x27)를 가진 PCF8574T입니다. 브레드보드, RGB LED, 전선, 저항기, LCD, 라즈베리파이가 필요합니다.

LCD의 전선을 Pi의 올바른 GPIO 핀에 연결합니다: GND - Pi GND 5V - Pi 5V SDA - Pi SDA1 SCL - Pi SCL1 2단계: 파이썬 코드를 작성하여 LCD 디스플레이에서 메시지 실행하기
파이선 코드
from PCF8574 import PCF8574_GPIO
from Adafruit_LCD1602 import Adafruit_CharLCD
def get_cpu_temp():
tmp = open('/sys/class/thermal/thermal_zone0/temp')
cpu = tmp.read()
tmp.close()
return '{:.2f}'.format( float(cpu)/1000 ) + ' C'
def loop():
mcp.output(3,1)
lcd.begin(16,2)
while(True):
lcd.setCursor(0,0)
lcd.message( 'CPU: ' + get_cpu_temp()+'\n' )
PCF8574_address = 0x27
mcp = PCF8574_GPIO(PCF8574_address)
lcd = Adafruit_CharLCD(pin_rs=0, pin_e=2, pins_db=[4,5,6,7], GPIO=mcp)
if __name__ == '__main__':
try:
loop()
except KeyboardInterrupt: destroy()
LCD 화면이 작동하는지 테스트합니다. 메시지가 표시되지 않으면 LCD 보드 뒷면의 다이얼을 텍스트가 보일 때까지 돌립니다.
RGB를 필요한 핀에 연결하고 저항을 사용하여 흐름을 제어합니다. GPIO17 GPIO27 3V3 - 더 긴 핀 GPIO18
from PCF8574 import PCF8574_GPIO from Adafruit_LCD1602 import Adafruit_CharLCD
from time import sleep, strftime from datetime import datetime
import subprocess
import RPi.GPIO as GPIO import time import random
pins = [15, 11, 13]
def setup2():
global pwmRed,
pwmGreen,
pwmBlue
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pins, GPIO.OUT)
GPIO.output(pins, GPIO.HIGH)
pwmRed = GPIO.PWM(pins[0], 2000)
pwmGreen = GPIO.PWM(pins[1], 2000)
pwmBlue = GPIO.PWM(pins[2], 2000)
pwmRed.start(0)
pwmGreen.start(0)
pwmBlue.start(0)
def setColor(r_val,g_val,b_val):
pwmRed.ChangeDutyCycle(r_val)
pwmGreen.ChangeDutyCycle(g_val)
pwmBlue.ChangeDutyCycle(b_val)
def get_cpu_temp():
tmp = open('/sys/class/thermal/thermal_zone0/temp')
cpu = tmp.read()
tmp.close()
return '{:.2f}'.format( float(cpu)/1000 ) + ' C'
def get_cpu_temp2():
tmp = open('/sys/class/thermal/thermal_zone0/temp')
cpu2 = tmp.read()
tmp.close()
return cpu2
def get_time_now():
return datetime.now().strftime(' %H:%M:%S')
def get_IP():
IP = subprocess.check_output(["hostname", "-I"]).split()[0]
IP2 = 'IP' + str(IP)
IP3 = (IP2[4:-1])
return IP3
def loop():
mcp.output(3,1)
lcd.begin(16,2)
while(True):
lcd.setCursor(0,0)
lcd.message( 'CPU: ' + get_cpu_temp()+'\n' )
lcd.message('IP: ' + get_IP())
if int(get_cpu_temp2()) > 55500:
r=(62) g=(75) b=(100)
setColor(r,g,b)
print(get_cpu_temp2())
elif int(get_cpu_temp2()) < 55400 and int(get_cpu_temp2()) < 54000: r=(10)
setColor(r,g,b) print(get_cpu_temp2()) else: r=(10)
setColor(r,g,b) print(get_cpu_temp2()) sleep(1)
def destroy():
lcd.clear()
PCF8574_address = 0x27
PCF8574A_address = 0x3F
try: mcp = PCF8574_GPIO(PCF8574_address)
except:
try: mcp = PCF8574_GPIO(PCF8574A_address)
except:
print ('I2C Address Error !')
exit(1)
lcd = Adafruit_CharLCD(pin_rs=0, pin_e=2, pins_db=[4,5,6,7], GPIO=mcp)
if __name__ == '__main__':
setup2()
print ('Program is starting ... ')
try:
loop()
except KeyboardInterrupt:
destroy()'라즈베리파이 5' 카테고리의 다른 글
| 라즈베리파이5 우분투 24.04 설치 후 부팅 에러 (1) | 2024.07.18 |
|---|---|
| 8분 안에 라즈베리파이 5에 우분투 설치하기 (1) | 2024.07.10 |
| Pi Zero 2W와 I2C OLED SD1306 with Python (1) | 2024.07.10 |
| 아파치 하둡이란 무엇인가요? (1) | 2024.07.05 |
| 라즈베리 파이에서 SSD1306을 사용하는 방법: OLED 디스플레이 배선 및 예제 (1) | 2024.06.19 |
| 스마트 AIoT 실습 시스템 제품 소개서 (2) | 2024.06.10 |
| "Unable to determine board revision from /proc/cpuinfo" error after kernel 6.1 update (1) | 2024.05.22 |
| 라즈베리 파이 애호가 퀴즈 II (1) | 2024.05.14 |
취업, 창업의 막막함, 외주 관리, 제품 부재!
당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약,
아이디어는 있지만 구현할 기술이 없는 막막함.
우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.
이제 고민을 멈추고, 캐어랩을 만나세요!
코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.
제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!
귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.
캐어랩