Raspberry Pi 3 [LCD Text Display with Python]
จากตอนที่แล้ว เราทำการเชื่อมต่อจอ LCD 16×2 และเขียน Basic Python ให้สามารถแสดงข้อความง่ายๆ ได้แล้ว ตอนนี้เราจะลองนำค่าที่อยู่ในตัว Raspberry Pi 3 มาแสดง เช่น Date & Time Network Adapter IP Address CPU Percentage Usage CPU Temperature Memory Total Memory Usage Memory Free Disk Total Disk Usage Disk Free เป็นต้น ** ส่วนตัวผมจะถนัดใช้ nano เป็น text editor นะครับ ส่วนท่านอื่นที่ไม่คล่อง จะใช้ผ่าน vi หรือ text editor บน gui ก็ไม่ว่ากันครับ ** ** ไฟล์ทั้งหมดผม mkdir LCD เอาไว้บน home directory ของ user: pi ครับ ** ซึ่งดาวน์โหลดตัวอย่าง ได้ที่นี่ จากนั้นนำไฟล์ RPi_LCD_Driver.py (จากตอนที่แล้ว) วางไว้ที่ directory เดียวกัน การแสดงวัน/เวลาบนหน้าจอ ใช้คำสั่งเพื่อสร้างไฟล์ sudo nano show_dt.py จากนั้นเขียนโค้ดตามด้านล่างนี้ครับ import RPi_I2C_Driver from datetime import datetime mylcd = RPi_I2C_Driver.lcd() while True: mylcd.lcd_display_string(“%s” %datetime.now().strftime(“%d/%m/%Y”), 1) mylcd.lcd_display_string(“%s” %datetime.now().strftime(“%H:%M:%S.%f”), 2) while True เนื่องจากต้องการให้รันแบบ infinite loop แสดงวันเวลาโดยที่ %d แสดงวันที่ %m แสดงเดือน %Y แสดงปี ค.ศ. %H แสดงหลักชั่วโมง %M แสดงหลักนาที %S แสดงหลักวินาที %f แสดง milli-seconds เมื่อทดลองรันด้วยคำสั่ง sudo python show_dt.py หน้าจอ LCD จะแสดงดังตัวอย่างข้างล่างนี้ หลัก milli-seconds จะวิ่งเร็วมากจนหน้าจอแสดงไม่ทัน จากนั้นท่านจะเห็นว่าไม่สามารถพิมพ์คำสั่งอื่นๆ ที่ terminal ได้อีก เนื่องจากโปรแกรมรันอยู่นั่นเอง ให้ท่าน Ctrl+C ออกมา การแสดงค่า IP Address ใช้โค้ดด้านล่างนี้ พร้อมกับเซฟไว้ในชื่อ myip.py import RPi_I2C_Driver import socket mylcd = RPi_I2C_Driver.lcd() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.connect((‘psu.ac.th’, 80)) ip = s.getsockname()[0] s.close() mylcd.lcd_display_string(“IP Address:”, 1) mylcd.lcd_display_string(ip, 2) หน้าจอ LCD ก็จะแสดงข้อความดังนี้ ** มีวิธีการเขียนแสดง ip address อีกหลายวิธี แต่ใช้วิธีนี้เนื่องจากเป็นวิธีที่จะได้ ip address ที่ใช้งานจริง เพราะในบางกรณีจะได้ loopback ip 127.0.0.1 แทน และในบางแบบ ก็สามารถระบุ interface เช่น eth0