راه اندازی شیفت رجیستر 74HC595 با رزبری پای و پایتون
سلام. آموزش راه اندازی شیفت رجیستر 74HC595 با Raspberry Pi (آموزش رزبری پای #9) را آماده کردیم.
محتویات
چگونه IC شیفت رجیستر را به رزبری پای متصل کنیم ؟
استفاده از آی سی شیفت رجیستر ها همیشه جالب بوده است. ما در قسمت قبل به طور کامل با نحوه کنترل موتور استپر با استفاده از Raspberry pi آشنا شدیم. حتما قسمت های قبلی سری آموزش های رزبری پای را بخوانید.
قسمت قبل : آموزش کنترل سرعت و جهت استپر موتور با Raspberry Pi
در این قسمت، به طور کامل با استفاده از IC SHIFT REGISTER آشنا میشویم. در حالت عادی رزبری پای دارای 26 پین GPIO است. اما وقتی پروژه هایی مانند پرینتر ها سه بعدی را با آن انجام دهیمف پین های خروجی ارائه شده کافی نیستند. بنابراین به پین های خروجی بیشتری نیاز داریم. برای اضافه کردن پین های خروجی به برد رزبری پای ، ما به تراشه شیفت رجیستر نیاز داریم. تراشه ی Shift Register اطلاعات را از Raspberry Pi به صورت سریالی میگیرد و به موازات خارج میکند. بنابراین تراشه 8 بیت داده سریال را از Pi میگیرد و سپس توسط 8 پین خروجی آن ها را ارائه میدهد.
ما قصد داریم از IC 74HC595 استفاده کنیم. این یک تراشه 16 پین است. پیکربندی پین های تراشه در ادامه در این آموزش توضیح داده شده است.
همچنین اگر میخواهید الکترونیک را با فیلم های آموزشی یاد بگیرید، روی دوره آموزش الکترونیک کلیک کنید.
در این آموزش ، ما از سه پین GPIO برای دریافت هشت خروجی از تراشه Shift Register استفاده خواهیم کرد. به یاد داشته باشید که پین های تراشه فقط برای خروجی سهتند، بنابراین ما نمی توانیم هیچ سنسوری را به خروجی تراشه وصل کنیم و انتظار داشته باشیم PI آنها را بخواند. LED ها در خروجی تراشه متصل می شوند تا داده های 8 بیتی ارسال شده از PI را مشاهده کنید.
در مورد پین های GPIO رزبری پای در مقاله کنترل LED با رزبری پای به طور کامل توضیح داده ایم.
شماتیک راه اندازی شیفت رجیستر با رزبری پای
در اینجا ما از رزبری پای 2 Model B با سیستم عامل Raspbian Jessie استفاده می کنیم. در قسمت های قبل، در مورد کلیه نیازهای اولیه سخت افزار و نرم افزار بحث کرده ایم. تصویر زیر شماتیک مدار پروژه شیفت رجیستر با رزبری پای را نشان میدهد.
قطعات مورد نیاز
- IC شیفت رجیستر 74HC595
- مقاومت 220 اهم یا 1 کیلو اهم – شش عدد
- ال ای دی – هشت عدد
- خازن 0.01uF
همچنین پروژه شیفت رجیستر با آردوینو را نیز مشاهده کنید.
توضیحات شیفت رجیستر 74HC595
بگذارید کمی در مورد پین های شیفت رجیستر 74HC595 صحبت کنیم.
نام پبن | توضیحات |
Q0 – Q7
پین خروجی |
Q0 – Q7 پین های خروجی (مستطیل قرمز) هستند، که در آن به صورت موازی 8 بیت داده را خروجی می گیریم. ما هشت LED را به آنها وصل خواهیم کرد تا خروجی موازی را ببینیم. |
Data Pin = DS
پین داده |
اولین داده بیت به بیت به این پین ارسال می شود. برای ارسال 1 ، پین DATA را High کرده و برای ارسال 0 ، پین DATA را Low می کنیم. |
Clock Pin = SHCP همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
پین ساعت |
هر پالس مجود در این پین، رجیستر ها را مجبور میکند که یک بیت را از پین داده بگیرند و آن را ذخیره کنند. |
= Shift Output STCP
خروجی شیفت |
بعد از دریافت 8 بیت، ما خروجی را از این پین ها مشاهده میکنیم. |
کد پروژه شیفت رجیستر با رزبری پای
وقتی همه چیز را مانند شماتیک مدار متصل کردید، می توانیم 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)
سپس پین های GPIO4 ، GPIO5 و GPIO6 را به عنوان خروجی تنظیم می کنیم.
IO.setup(4,IO.OUT) IO.setup(5,IO.OUT) IO.setup(6,IO.OUT)
این دستور حلقه را 8 بار اجرا می کند.
for y in range(8):
while 1: برای حلقه بی نهایت استفاده می شود.
while 1: for y in range(8): // تکرار پین 8 بار IO.output(4,1) //پین data فعال time.sleep(0.1) IO.output(5,1) // پین CLOCK فعال time.sleep(0.1) IO.output(5,0) // پین CLOCK غیرفعال IO.output(4,0) // پین data غیرفعال IO.output(6,1) // پین SHIFT فعال time.sleep(0.1) IO.output(6,0) //پین SHIFT غیرفعال for y in range(8): IO.output(4,0) // پین data غیرفعال time.sleep(0.1) IO.output(5,1) // پین CLOCK فعال time.sleep(0.1) IO.output(5,0) // پین CLOCK غیرفعال IO.output(4,0) // پین data غیرفعال IO.output(6,1) // پین SHIFT فعال time.sleep(0.1) IO.output(6,0) // پین SHIFT غیرفعال
فیلم عملکرد مدار در پایین را ببینید تا به طور کامل با نحوه کار آشنا شوید.
کد کامل :
import RPi.GPIO as IO import time IO.setwarnings(False) x=1 IO.setmode (IO.BCM) IO.setup(4,IO.OUT) IO.setup(5,IO.OUT) IO.setup(6,IO.OUT) while 1: for y in range(8): IO.output(4,1) time.sleep(0.1) IO.output(5,1) time.sleep(0.1) IO.output(5,0) IO.output(4,0) IO.output(6,1) time.sleep(0.1) IO.output(6,0) for y in range(8): IO.output(4,0) time.sleep(0.1) IO.output(5,1) time.sleep(0.1) IO.output(5,0) IO.output(4,0) IO.output(6,1) time.sleep(0.1) IO.output(6,0)
فیلم عملکرد
فیلم زیر به شما در درک نحوه عمل این کد و پروژه کمک میکند.
قسمت بعد : آموزش جامع آنالوگ به دیجیتال در Raspberry Pi