آموزش الکترونیکآموزش رزبری پایپروژه الکترونیکپروژه های رزبری پای

نحوه اتصال ال سی دی کاراکتری به رزبری پای و کد پایتون (آموزش Raspberry Pi #13)

سلام. نحوه اتصال ال سی دی کاراکتری به رزبری پای (آموزش Raspberry Pi #13) را آماده کردیم.

آموزش راه اندازی LCD کاراکتری با Raspberry Pi

در این آموزش ، ما با استفاده از Raspberry Pi یک صفحه نمایش ال سی دی کاراکتری 16*2 را کنترل خواهیم کرد. ما LCD را به پین ​​های GPIO متصل می کنیم تا کاراکترها را نشان دهیم. ما برای راه اندازی LCD، یک برنامه را با پایتون مینویسیم تا دستورات مناسب را از پین های GPIO ارسال کنیم. میتوانیم از این صفحه نمایشگر برای نمایش مقادیر سنسور ها، وضعیت، زمان و … استفاده کنیم.

ما قبلا در مورد پین های GPIO و کلیات رزبری پای صحبت کرده ایم. پیشنهاد میکنم قبل از خواندن این آموزش، قسمت های قبلی آموزش رزبری پای را بخوانید.

قسمت قبل : چطور سروو موتور را با رزبری پای کنترل کنیم ؟ (آموزش Raspberry Pi #12)

قسمت اول : رزبری پای Raspberry Pi چیست؟ (آموزش کامل رزبری پای #1)

انواع مختلفی از ال سی دی در بازار وجود دارد. LCD گرافیکی پیچیده تر از LCD کاراکتری 16×2 است. ال سی دی کاراکتری 16*2 در کل 32 کاراکتر دارد، 16 کاراکتر در خط 1 و 16 خط دیگر در خط 2.

توضیحات شماتیک مدار

در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه را نشان میدهد. همانطور که در تصویر زیر میبنید.

آموزش راه اندازی LCD کاراکتری با Raspberry Pi

همانطور که در شماتیک مدار میبینید، ما با استفاده از 10 پین GPIO، ارتباط رزبری پای با ال سی دی کاراکتری را برقرار میکنیم. ماژول صفحه نمایش LCD کاراکتری 16*2 دارای 16 پین است که می توان آنها را به پنج دسته تقسیم کرد :

  1. پین برق
  2. پین کنتراست
  3. پین کنترل
  4. پین دیتا
  5. پین نور پس زمینه

در اینجا توضیحات مختصر در مورد پین های ال سی دی کاراکتری آورده ایم.

دستهشماریه پیننام پینعملکرد
پین برق1VSSمتصل به GND
2VDD or Vccمتصل به +5 ولت
پین کنتراست3V0 or VEEتنظیم کنتراست (متصل به Vcc با یک پتانسیومتر برای تغییر کنتراست)
پین کنترل4RSانتخاب رجیستر , RS=0 حالت دستور , RS=1 حالت داده
5RWپین نوشتن و خواندن , RW=0 حالت نوشتن , RW=1 حالت خواندن
6EEnable = یک پالس بالا و پایین برای فعال سازی ال سی دی
پین دیتا7-14D0-D7پین های داده = داده های را برای نمایش در ال سی دی مرتب میکنند
پین نور پس زمینه15LED+ or Aچراغ پس زمینه متصل به +5 ولت
16LED- or Kچراغ پس زمینه متصل به GND

روند نمایش داده ها روی ال سی دی کاراکتری

6 مرحله زیر به صورت خلاصه نمایش کاراکتر ها روی LCD را توضیح میدهند.

  1. E در حالت High است (ماژول را فعال می کند) و RS در حالت Low است (به ال سی دی که می گوییم فرمان می دهیم)
  2. دادن مقدار 0x01 به پورت داده به عنوان فرمان پاک کردن صفحه.
  3. E در حالت High است (ماژول را فعال می کند) و RS در حالت High است (به ال سی دی می گویم که داده می دهیم)
  4. تهیه کد ASCII برای کاراکترهایی که نیاز به نمایش دارند.
  5. E در حالت Low است (به ال سی دی می گوید که ما در حال ارسال داده ها هستیم)
  6. هنگامی که پین E به حالت Low رود، LCD داده های دریافت شده را پردازش کرده و نتیجه مربوط را نشان می دهد. بنابراین این پین قبل از ارسال داده روی High تنظیم شده و پس از ارسال داده به GND متصل میشود.
حتما ببینید :  اندازه گیری گاز آمونیاک با آردوینو (راه اندازی سنسور MQ-137 با Arduino)

همانطور که گفته شد قصد داریم کاراکتر ها را یکی پس از دیگری ارسال کنیم. کاراکترها با کدهای ASCII (کد استاندارد آمریکایی برای تبادل اطلاعات) به LCD داده می شوند. جدول کدهای ASCII در زیر نشان داده شده است. به عنوان مثال ، برای نشان دادن کاراکتر “@” ، باید مقدار هگزادسیمال (hexadecimal) آن را ارسال کنیم. با توجه به تصویر زیر مقدار هگزادسیمال برای @ ، 40 است. و به طور مثال اگر بخواهیم حرف s را نمایش بدهیم، باید مقدار 0x73 را به ال سی دی بدهیم.

روند نمایش داده ها روی ال سی دی کاراکتری

قطعات مورد نیاز

  1. ال سی دی کاراکتری 16*2
  2. مقاومت 1 کیلو اهم – دو عدد
  3. پتانسیومتر 10 کیلو اهم
  4. خازن 1000μF

برنامه نویسی ال سی دی کاراکتری با رزبری پای

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم Raspberry Pi را روشن کنیم تا برنامه را در پایتون (PYHTON) بنویسیم. کد کامل در انتهای صفحه قرار داده شده است. در اینجا در مورد قسمت های مهم کد صحبت میکنیم.

ما میخواهیم پرونده GPIO را از کتابخانه وارد کنیم. کد زیر باعث میشود بتوانیم پین های GPIO برد رزبری پای را برنامه ریزی کنیم. همچنین مانند قسمت قبلی آموزش، نام GPIO را به IO تغییر میدهیم. و هر بار بخواهیم به پین های GPIO مراجعه کنیم از کلمه IO استفاده میکنیم.

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
import RPi.GPIO as IO

بعضی اوقات، پین ​​های GPIO که سعی در استفاده از آنها داریم، ممکن است عملکردهای دیگری را انجام دهند. در این حالت، هنگام اجرای برنامه، هشدارهایی دریافت خواهیم کرد. دستور زیر به PI می گوید هشدارها را نادیده گرفته و به برنامه ادامه دهد.

IO.setwarnings(False)

ما می توانیم پین های GPIO رزبری پای یا شماره پین آن یا شماره GPIO آن ها وارد کنیم. به طور مثال پین 35 روی برد Raspberry pi، همان پین GPIO 19 است. بنابراین ما میتوانیم آن را با 19 یا 35 معرفی کنیم.

IO.setmode (IO.BCM)

ما 10 پین را به عنوان خروجی برای ال سی دی کاراکتری معرفی میکنیم.

IO.setup(6,IO.OUT)
IO.setup(22,IO.OUT)
IO.setup(21,IO.OUT)
IO.setup(20,IO.OUT)
IO.setup(16,IO.OUT)
IO.setup(12,IO.OUT)
IO.setup(25,IO.OUT)
IO.setup(24,IO.OUT)
IO.setup(23,IO.OUT)
IO.setup(18,IO.OUT)

از دستور زیر برای ایجاد حلقه ای بی نهایت استفاده می شود، با این دستور عبارات داخل این حلقه بطور مداوم اجرا می شود.

While 1:

سپس باید تک به تک مقدار هگزادسیمال حروف مورد نظر خود را وارد کنیم.

حتما ببینید :  کنترل سرعت موتور DC با توجه به دما با ترمیستور و آپ امپ (پروژه آنالوگ)

کد کامل :

کد کامل به همراه بقیه توضیحات در پایین آورده شده است.

import RPi.GPIO as IO          # فراخوانی کتابخانه پین های GPIO
import time                    # فراخوانی کتابخانه تاخیر
IO.setwarnings(False)          # عدم نمایش هشدار ها
IO.setmode (IO.BCM)           
IO.setup(6,IO.OUT)             # معرفی پین های GPIO برای خروجی
IO.setup(22,IO.OUT)
IO.setup(21,IO.OUT)
IO.setup(20,IO.OUT)
IO.setup(16,IO.OUT)
IO.setup(12,IO.OUT)
IO.setup(25,IO.OUT)
IO.setup(24,IO.OUT)
IO.setup(23,IO.OUT)
IO.setup(18,IO.OUT)
def send_a_command (command):    # هنگامی که sead_a_command فراخوانی شود، حلقه اجرا میشود
    pin=command
    PORT(pin);                   # فراخوانی پورت برای اختصاص مقدار به پورت داده
    IO.output(6,0)               # قرار دادن 0 در RS برای اطلاع ال سی دی از حالت ارسال
    IO.output(22,1)              #  فعال کردن EN برای دریافت داده ها توسط ال سی دی 
    time.sleep(0.05)
    IO.output(22,0)              # غیر فعال کردن EN برای اطلاع دادن تمام شدن ارسال داده ها
    pin=0
    PORT(pin);                   # غیرفعال کردن پورت برای اتمام ارسال اطلاعات
def send_a_character (character):# وقتی send_a_character فراخوانی شد ، حلقه را آغاز کن
    pin=character
    PORT(pin);
    IO.output(6,1)
    IO.output(22,1)
    time.sleep(0.05)
    IO.output(22,0)
    pin=0
    PORT(pin);
def PORT(pin):                    # با استفاده از مقدار پورت ها ، پین را تعیین میکنیم
    if(pin&0x01 == 0x01):
        IO.output(21,1)           # اگر بیت 0 از 8 بیت پین صحیح بود، پین 21 فعال شود
    else:
        IO.output(21,0)           # اگر بیت 0 از 8 بیت پین غلط بود، پین 21 غیرفعال شود
    if(pin&0x02 == 0x02):
        IO.output(20,1)           # اگر بیت 1 از 8 بیت پین صحیح بود، پین 20 فعال شود
    else:
        IO.output(20,0)           # اگر بیت 1 از 8 بیت پین غلط بود، پین 20 غیرفعال شود
    if(pin&0x04 == 0x04):
        IO.output(16,1)
    else:
        IO.output(16,0)
    if(pin&0x08 == 0x08):
        IO.output(12,1)
    else:
        IO.output(12,0)   
if(pin&0x10 == 0x10):
        IO.output(25,1)
    else:
        IO.output(25,0)
    if(pin&0x20 == 0x20):
        IO.output(24,1)
    else:
        IO.output(24,0)
    if(pin&0x40 == 0x40):
        IO.output(23,1)
    else:
        IO.output(23,0)
    if(pin&0x80 == 0x80):
        IO.output(18,1)            # اگر بیت 7 از 8 بیت پین صحیح بود، پین 18 فعال شود
    else:
        IO.output(18,0)            # اگر بیت 7 از 8 بیت پین غلط بود، پین 18 غیرفعال شود
while 1:   
    send_a_command(0x01);          # دستور پاک سازی
    send_a_command(0x38);          # 16*2 خط LCD
    send_a_command(0x0E);          # روشن کردن ال سی دی
    send_a_character(0x49);        # نمایش حرف 'I' 
    send_a_character(0x52);        # نمایش حرف 'R'
    send_a_character(0x45);        # نمایش حرف 'E'
    send_a_character(0x4E);        # نمایش حرف 'N' 
    send_a_character(0x58);        # نمایش حرف 'X'      
    time.sleep(1)

فیلم عملکرد و توضیحات کار با پروژه

برنامه بالا را در پایتون اجرا کنید. در بالا کد نمایش حروف IRENX با رزبری پای آورده شده است. در پایین فیلم عملکرد پروژه (با همین کد نوشته شده است با کمی تغییر در متن) مشاهده میکنید. متن وارد شده توسط شما پی در پی نوشته میشود و پاک سازی میشود. میتوانید با ایجاد تغییرات دلخواه، نمایش حروف را مد نظر خودتان طراحی کنید.

قسمت بعد : آموزش راه اندازی سون سگمنت با رزبری پای (Raspberry Pi #14)

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا
بستن
بستن