آموزش رزبری پایآموزش هاپروژه های رزبری پای

راه اندازی شیفت رجیستر 74HC595 با رزبری پای و پایتون (آموزش Raspberry Pi #9)

سلام. آموزش راه اندازی شیفت رجیستر 74HC595 با Raspberry Pi (آموزش رزبری پای #9) را آماده کردیم.

چگونه IC شیفت رجیستر را به رزبری پای متصل کنیم ؟

استفاده از آی سی شیفت رجیستر ها همیشه جالب بوده است. ما در قسمت قبل به طور کامل با نحوه کنترل موتور استپر با استفاده از Raspberry pi آشنا شدیم. حتما قسمت های قبلی سری آموزش های رزبری پای را بخوانید.

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

در این قسمت، به طور کامل با استفاده از IC SHIFT REGISTER آشنا میشویم. در حالت عادی رزبری پای دارای 26 پین GPIO است. اما وقتی پروژه هایی مانند پرینتر ها سه بعدی را با آن انجام دهیمف پین های خروجی ارائه شده کافی نیستند. بنابراین به پین های خروجی بیشتری نیاز داریم. برای اضافه کردن پین های خروجی به برد رزبری پای ، ما به تراشه شیفت رجیستر نیاز داریم. تراشه ی Shift Register اطلاعات را از Raspberry Pi به صورت سریالی میگیرد و به موازات خارج میکند. بنابراین تراشه 8 بیت داده سریال را از Pi میگیرد و سپس توسط 8 پین خروجی آن ها را ارائه میدهد.

ما قصد داریم از IC 74HC595 استفاده کنیم. این یک تراشه 16 پین است. پیکربندی پین های تراشه در ادامه در این آموزش توضیح داده شده است.

در این آموزش ، ما از سه پین ​​GPIO برای دریافت هشت خروجی از تراشه Shift Register استفاده خواهیم کرد. به یاد داشته باشید که پین های تراشه فقط برای خروجی سهتند، بنابراین ما نمی توانیم هیچ سنسوری را به خروجی تراشه وصل کنیم و انتظار داشته باشیم PI آنها را بخواند. LED ها در خروجی تراشه متصل می شوند تا داده های 8 بیتی ارسال شده از PI را مشاهده کنید.

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

توضیحات شماتیک راه اندازی شیفت رجیستر

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

شماتیک راه اندازی شیفت رجیستر

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

  1. IC شیفت رجیستر 74HC595
  2. مقاومت 220 اهم یا 1 کیلو اهم – شش عدد
  3. ال ای دی – هشت عدد
  4. خازن 0.01uF
[irp posts=”5271″ name=”نحوه استفاده از شیفت رجیستر در آردوینو (آموزش آردوینو #7)”]

توضیحات شیفت رجیستر 74HC595

بگذارید کمی در مورد پین های شیفت رجیستر 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 (آموزش رزبری پای #10)

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

محمد رحیمی

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

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

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