آموزش راه اندازی سون سگمنت با رزبری پای

محتویات
سلام. آموزش راه اندازی سون سگمنت با رزبری پای (Raspberry Pi #14) را آماده کردیم.
نحوه اتصال سون سگمنت به رزبری پای
در این آموزش قصد داریم یک سون سگمنت را با برد رزبری پای کنترل کنیم. سون سگمنت یکی از ارزان ترین صفحه نمایش ها است. سون سگمنت ها اغلب برنای نمایش ساعت، تاریخ، دما و … استفاده میشوند. در اینجا ما ابتدا با سون سگمنت آشنا میشویم و سپس با پایتون یک برنامه برای کنترل آن مینویسیم.
فیلم زیر به شما در درک نحوه کار این پروژه کمک میکند.
در قسمت های قبل ما به طور کامل با رزبری پای آشنا شدیم. پیشنهاد میکنم قبل از خواندن این قسمت، قسمت های قبلی آموزش رزبری پای را بخوانید.
- قسمت قبل : نحوه اتصال ال سی دی کاراکتری به رزبری پای و کد پایتون
- قسمت اول : رزبری پای Raspberry Pi چیست؟
نمایشگر سون سگمنت چیست ؟
هر سون سگمنت از 7 ال ای دی کوچک (+1 نقطه ممیز در پایین سمت راست) تشکل شده است. انواع و اندازه های مختلف از نمایشگر سون سگمنت وجود دارد. اما در اصل دو نوع سون سگمنت وجود دارد. یک نوع آنود مشترک است و یک کاتد مشترک. حالا فرق این دو در چیست؟
در نوع کاتد مشترک تمامی پایانه های منفی به هم متصل میشوند و پایانه های مثبت تنها هستند. و برای روشن کردن هر ال ای دی فقط باید پایانه مثبت آن را متصل کنیم.
در نوع آند مشترک تمامی پایانه های مثبت به هم متصل میشوند و پایانه های منفی تنها هستند. و برای روشن کردن هر ال ای دی فقط باید پایانه منفی آن را متصل کنیم.
جهت کسب اطلاعات بیشتر، مقاله سون سگمنت چیست را بخوانید.
ما در اینجا از 7 سگمنت نوع کاتد مشترک استفاده میکنیم.
ادامه آموزش را با استفاده از اجرای یک پروژه رزبری پای به پیش میبریم.
مدار راه اندازی سون سگمنت با برد رزبری پای
در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه را نشان میدهد. همانطور که در تصویر زیر میبینید، این پروژه به قطعات زیادی نیاز ندارد. تنها یک برد رزبری پای، یک سون سگمنت کاتد مشترک و 8 عدد مقاومت 1 کیلو اهم.
همانطور که پیش تر گفتیم، در اینجا ما از سون سگمنت کاتد مشترک استفاده میکنیم. اتصالات بین 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.

در کد این آموزش ما مقادیر را به طور کامل نوشته ایم تا همه اعداد نمایش داده شوند. مقادیر را در یک سری کاراکتر با نام 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 را روی سون سگمنت نمایش میدهد.
قسمت بعد : برنامه نویسی جوی استیک با رزبری پای و پایتون
سلام وقت بخیر
کاتد مشترک و آند مشترک رو اشتباه نوشتید
سلام جناب. بسیار ممنونم از اطلاع رسانیتون. مطلب تصحیح شد.