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

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

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

نحوه اتصال 7 Segment به Raspberry Pi

در این آموزش قصد داریم یک سون سگمنت را با برد رزبری پای کنترل کنیم. سون سگمنت یکی از ارزان ترین صفحه نمایش ها است. سون سگمنت ها اغلب برنای نمایش ساعت، تاریخ، دما و … استفاده میشوند. در اینجا ما ابتدا با سون سگمنت آشنا میشویم و سپس با پایتون یک برنامه برای کنترل آن مینویسیم.

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

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

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

نمایشگر سون سگمنت چیست ؟

هر سون سگمنت از 7 ال ای دی کوچک (+1 نقطه ممیز در پایین سمت راست) تشکل شده است. انواع و اندازه های مختلف از نمایشگر سون سگمنت وجود دارد. اما در اصل دو نوع سون سگمنت وجود دارد. یک نوع آنود مشترک است و یک کاتد مشترک. حالا فرق این دو در چیست؟

پین های سون سگمنت تکی

در نوع کاتد مشترک تمامی پایانه های منفی به هم متصل میشوند و پایانه های مثبت تنها هستند. و برای روشن کردن هر ال ای دی فقط باید پایانه مثبت آن را متصل کنیم.

در نوع آند مشترک تمامی پایانه های مثبت به هم متصل میشوند و پایانه های منفی تنها هستند. و برای روشن کردن هر ال ای دی فقط باید پایانه منفی آن را متصل کنیم.

[irp posts=”5067″ name=”نمایشگر سون سگمنت چیست ؟ آموزش کامل 7 Segment ، مالتی پلکس و اثر فلیکر”]

ما در اینجا از 7 سگمنت نوع کاتد مشترک استفاده میکنیم.

اگر میخواهید آردوینو را به صورت اصولی و پروژه محور (برنامه نویسی حرفه ای، ارتباط آردوینو با اندروید، ساخت ربات با آردوینو) یاد بگیرید، روی دوره آموزش آردوینو کلیک کنید.

ادامه آموزش را با استفاده از اجرای یک پروژه رزبری پای به پیش میبریم.

توضیحات شماتیک پروژه

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

نحوه اتصال 7 Segment به Raspberry Pi

همانطور که پیش تر گفتیم، در اینجا ما از سون سگمنت کاتد مشترک استفاده میکنیم. اتصالات بین 7 سگمنت و Raspberry Pi در زیر آورده شده است.

PIN1 یا e ——— GPIO21

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

PIN2 یا d ——— GPIO20

PIN4 یا c ——— GPIO16

PIN5 یا h یا DP — GPIO 12  //  اجباری نیست زیرا ما از نقطه اعشار استفاده نمی کنیم

PIN6 یا b ———- GPIO6

PIN7 یا A ——— GPIO13

PIN9 یا f ——— GPIO19

PIN10 یا g ——- GPIO26

PIN3 یا PIN8 ———— به GND وصل میشوند

نحوه نمایش اعداد روی سون سگمنت

بنابراین ما از 8 پین GPIO به عنوان  پورت 8 بیت استفاده خواهیم کرد. در اینجا GPIO13 به عنوان LSB و GPIO12 به عنوان MSB است. حالا مثلا اگر بخواهیم عدد 1 را نشان بدهیم. باید بخش C و B را روشن کنیم. بنابراین باید مقدار “PORT” 0b00000110 ارسال شود. و مقدار هگز آن نیز میشود 0x06.

نشان دادن 1 در سون سگمنت
نشان دادن 1 در سون سگمنت

در کد این آموزش ما مقادیر را به طور کامل نوشته ایم تا همه اعداد نمایش داده شوند. مقادیر را در یک سری کاراکتر با نام DISPLAY ذخیره میکنیم. سپس ما این مقادیر را یک به یک فراخوانی میکنیم تا با استفاده از عملکرد PORT روی صفحه نمایش داده شوند.

برنامه نویسی سون سگمنت متصل به رزبری پای با پایتون

وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم 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)

ما 8 پین GPIO را به عنوان پین های خروجی ، برای پین های داده و کنترل  تنظیم می کنیم.

IO.setup(13,IO.OUT)
IO.setup(6,IO.OUT)
IO.setup(16,IO.OUT)
IO.setup(20,IO.OUT)
IO.setup(21,IO.OUT)
IO.setup(19,IO.OUT)
IO.setup(26,IO.OUT)
IO.setup(12,IO.OUT)

در صورت صحت شرایط در پرانتز، دستورات داخل حلقه یک بار اجرا می شود. بنابراین اگر bit0 از 8bit صحیح باشد، PIN13 ، بالا (High) خواهد بود ، در غیر این صورت PIN13 پایین (Low) خواهد بود. ما هشت شرط دیگر برای bit0 تا bit7 داریم ، به طوری که می توان LED مناسب را در سون سگمنت برای نمایش اعداد مورد نظر روشن کرد.

if(pin&0x01 == 0x01):
   IO.output(13,1)
else:
   IO.output(13,0)

این دستور حلقه را 10 بار اجرا می کن ، x از 0 به 9 افزایش می یابد.

for x in range(10):

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

While 1:

کد کامل :

بقیه توضیحات در باکس زیر به طور کامل داده شده است.

import RPi.GPIO as IO # فراخوانی کتابخانه پین های GPIO 
import time # فراخوانی کتابخانه تاخیر 
DISPLAY = [0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67] # رشته کاراکتر برای نمایش ارقام
IO.setwarnings(False) # عدم نمایش هشدار ها 
IO.setmode (IO.BCM) 
def PORT(pin):                    # با استفاده از مقدار پورت ها ، پین را تعیین میکنیم
    if(pin&0x01 == 0x01):
        IO.output(13,1)            # اگر بیت 0 از 8 بیت پین صحیح بود، پین 13 فعال شود
    else:
        IO.output(13,0)            # اگر بیت 0 از 8 بیت پین غلط بود، پین  13غیرفعال شود
    if(pin&0x02 == 0x02):
        IO.output(6,1)            # اگر بیت 1 از 8 بیت پین صحیح بود، پین 6 فعال شود
    else:
        IO.output(6,0)            # اگر بیت 1 از 8 بیت پین غلط بود، پین 6 غیرفعال شود
    if(pin&0x04 == 0x04):
        IO.output(16,1)
    else:
        IO.output(16,0)
    if(pin&0x08 == 0x08):
        IO.output(20,1)
    else:
        IO.output(20,0)   
    if(pin&0x10 == 0x10):
        IO.output(21,1)
    else:
        IO.output(21,0)
    if(pin&0x20 == 0x20):
        IO.output(19,1)
    else:
        IO.output(19,0)
    if(pin&0x40 == 0x40):
        IO.output(26,1)
    else:
        IO.output(26,0)
    if(pin&0x80 == 0x80):
        IO.output(12,1)            # اگر بیت 7 از 8 بیت پین صحیح بود، پین 12 فعال شود
    else:
        IO.output(12,0)            # اگر بیت 7 از 8 بیت پین غلط بود، پین 12 غیرفعال شود
while 1:
    for x in range(10):   # ده بار حلقه افزایش پیدا میکند از 0  تا 9 
        pin = DISPLAY[x]  # اختصاص مقادیر به پین برای هر رقم
        PORT(pin);        # نمایش هر رقم روی سون سگمنت
        time.sleep(1)

فیلم عملکرد پروژه

برنامه را بنویسید و آن را اجرا کنید. رزبری پای به طور مداوم ارقام 0 تا 9 را روی سون سگمنت نمایش میدهد. فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.

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

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

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. مالکیتی بر مطالب ارائه شده ندارم. اکثر فعالیت بنده در زمینه ترجمه است. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید)

2 نظر

    1. سلام جناب. بسیار ممنونم از اطلاع رسانیتون. مطلب تصحیح شد.

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

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