به نام خدا
راه اندازی ال سی ۲ در ۱۶ با استفاده رزبری پای قسمت دوم
در آموزش قبل به نحوه ی راه اندازی ال سی دی توسط رزبری پای در حالت های ۴ و ۸ بیتی پرداختیم. در این آموزش به ادامه ی آموزش قبل می پردازیم و دستور های بیشتری را یاد خواهیم گرفت.
نوشتن متن چشمک زن :
با ترکیب دو تابع lcd.clear() و time.sleep() در یک حلقه ی while می توانیم یک متن چشمک زن ایجاد کنیم که کد آن به صورت زیر نوشته می شود.
import time from RPLCD import CharLCD lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) while True: lcd.write_string(u"Hello world!") time.sleep(1) lcd.clear() time.sleep(1)
برای خروج از برنامه Ctrl-C را بزنید.
خاموش و روشن کردن مکان نما
کتابخانه ی RPLCD چندین تابع مختلف برای کنترل مکان نما دارد. با استفاده از این کتابخانه شکل های مختلفی از مکان نما همانند بلوک مکان نما ، زیر خط مکان نما و یا مکان نمای چشمک زن داشته باشیم. با استفاده از توابع زیر می توان مکان نما های گفته شده را ایجاد کرد :
- بلوک مکان نمای چشمک زن: lcd.cursor_mode = CursorMode.blink
- خط مکان نما: lcd.cursor_mode = CursorMode.line
- خاموش کردن مکان نما: lcd.cursor_mode = CursorMode.hide
کد زیر برای اخرین کاراکتر نوشته شده یک مکان نمای چشمک زن قرار می دهد:
from RPLCD import CharLCD from RPLCD import CursorMode lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) lcd.write_string(u'Hello world!') lcd.cursor_mode = CursorMode.blink #lcd.cursor_mode = CursorMode.line #lcd.cursor_mode = CursorMode.hide
پایان خط
با استفاده از این حالت اگر متن نوشته شده از طول ال سی دی شما بیشتر باشد به صورت خودکار به خط بعدی می رود. همچنین با استفاده از n\ و r\ می توانید مشخص کنید که در چه محلی به خط بعدی برود. کد زیر کلمه ی اول را در بالا و کلمه ی دوم در خط زیر نمایش می دهد :
from RPLCD import CharLCD lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) lcd.write_string(u'Hello\n\rworld!')
نمایش تاریخ و زمان
این برنامه تاریخ و زمان را بر روی ال سی دی نمایش می دهد :
from RPLCD import CharLCD import time lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) while True: lcd.write_string("Time: %s" %time.strftime("%H:%M:%S")) lcd.cursor_pos = (1, 0) lcd.write_string("Date: %s" %time.strftime("%m/%d/%Y"))
نمایش آدرس آی پی بر روی ال سی دی
این برنامه آدرس آی پی اتصال اترنت را بر روی ال سی دی نمایش می دهد. برای نمایش آی پی اتصال وای فای شما تنها eth0 را در خط ۱۹ به wlan0 تغییر دهید.
from RPLCD import CharLCD import socket import fcntl import struct lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) def get_ip_address(ifname): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), ۰x8915, struct.pack('256s', ifname[:15]) )[۲۰:۲۴]) lcd.write_string("IP Address:") lcd.cursor_pos = (1, 0) lcd.write_string(get_ip_address('eth0'))
نمایش خروجی از یک سنسور
کد زیر یک مثالی ست از نمایش خروجی سنسور دمای DS18B20 بر روی ال سی دی توسط رزبری پای :
import os import glob import time from RPLCD import CharLCD lcd = CharLCD(cols=16, rows=2, pin_rs=37, pin_e=35, pins_data=[33, 31, 29, 23]) os.system('modprobe w1-gpio') os.system('modprobe w1-therm') base_dir = '/sys/bus/w1/devices/' device_folder = glob.glob(base_dir + '28*')[0] device_file = device_folder + '/w1_slave' def read_temp_raw(): f = open(device_file, 'r') lines = f.readlines() f.close() return lines #CELSIUS CALCULATION def read_temp_c(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_c = int(temp_string) / 1000.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH temp_c = str(round(temp_c, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING return temp_c #FAHRENHEIT CALCULATION def read_temp_f(): lines = read_temp_raw() while lines[0].strip()[-3:] != 'YES': time.sleep(0.2) lines = read_temp_raw() equals_pos = lines[1].find('t=') if equals_pos != -1: temp_string = lines[1][equals_pos+2:] temp_f = (int(temp_string) / 1000.0) * 9.0 / 5.0 + 32.0 # TEMP_STRING IS THE SENSOR OUTPUT, MAKE SURE IT'S AN INTEGER TO DO THE MATH temp_f = str(round(temp_f, 1)) # ROUND THE RESULT TO 1 PLACE AFTER THE DECIMAL, THEN CONVERT IT TO A STRING return temp_f while True: lcd.cursor_pos = (0, 0) lcd.write_string("Temp: " + read_temp_c() + unichr(223) + "C") lcd.cursor_pos = (1, 0) lcd.write_string("Temp: " + read_temp_f() + unichr(223) + "F")
دیدگاهها (0)