رباتیک و هوافضا

راه اندازی ال سی ۲ در ۱۶ با استفاده رزبری پای قسمت دوم

به نام خدا

راه اندازی ال سی ۲ در ۱۶ با استفاده رزبری پای قسمت دوم

در آموزش قبل به نحوه ی راه اندازی ال سی دی توسط رزبری پای در حالت های ۴ و ۸ بیتی پرداختیم. در این آموزش به ادامه ی آموزش قبل می پردازیم  و دستور های بیشتری را یاد خواهیم گرفت.

 

 

نوشتن متن چشمک زن :

 

با ترکیب دو تابع 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

کد زیر برای اخرین کاراکتر نوشته شده یک مکان نمای چشمک زن قرار می دهد:

بیشتر بخوانید...  پروژه ی نمایش دما ، تاریخ و ساعت با آردوینو ، ST7735 TFT و DS3231

 

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)

*
*