آموزش آردوینو

استفاده از شیفت رجیستر 74HC595 با آردوینو

سلام. نحوه استفاده از شیفت رجیستر در آردوینو Shift Register 74HC595 (آموزش Arduino قسمت 7) را آماده کردیم.

آموزش استفاده از شیفت رجیستر 74HC595 در آردوینو

در ARDUINO Uno ما 20 پین I / O داریم ، بنابراین می توانیم 20 پین آردوینو Uno را برنامه ریزی کنیم تا به عنوان ورودی یا خروجی استفاده شود. برای برخی برنامه ها به بیش از 30 پین نیاز داریم. به طور مثال اگر ما بخواهیم یک مکعب ال ای دی 5*5*5 را راه اندازی کنیم ، به 5*5+5=30 پین نیاز داریم. در این مواقع ما به تراشه هایی نیاز دارین که رجیستر ها را از داده های سریال برد آردوینو بگیرد و به صورت موازی در پیکربندی 8 بیتی تولید کند.

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

قسمت قبل : آموزش جامع اتصال LCD کاراکتری به برد آردوینو و ایجاد متن متحرک

در این آموزش ما به طور کامل با رجیستر شیفت در آردوینو آشنا میشویم. در این آموزش ما یک پروژه را شرح میدهیم که در آن با استفاده از آی سی 74HC595 ، رجیستر Shift را راه اندازی میکنیم.

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

  1. برد آردوینو Uno
  2. ال ای دی – 8 عدد
  3. مقاومت 220 اهم
  4. آی سی 74HC595
قطعات مورد نیاز را از فروشگاه قطعات آیرنکس تهیه کنید.

پروژه آردوینو استفاده از شیفت رجیستر

در این اموزش ما میخواهیم داده ها را در اندازه هشت بیتی از طریق یک کانال ارسال کنیم تا رجیستر تغییر کنند. رجیستر SHIFT داده ها را به صورت سریال میگیرد و ان ها را در حافظه خود ذخیره میکند. هنگامی که داده ها توسط میکروکنترلر ارسال میشوند، ما دستوری را به Shift Register ارسال میکنیم تا اطلاعات را در خروجی نشان دهد، با این دستور داده های شیفت رجیستر موازی میشوند.

شماتیک کامل این پروژه را میتوانید در تصویر زیر مشاهده کنید.

آموزش استفاده از شیفت رجیستر با 74HC595 در Arduino

خروجی این رجیستر با استفاده از 8 ال ای دی متصل شده به آن نشان داده میشود. برای برای راه اندازی شیفت رجیستر با آردوینو ، باید دو کار انجام دهیم :

  1. pinMode();
  2. shiftOut(dataPin, clockPin, data);

ما باید ابتدا سه پین آردوینو Uno را به عنوان خروجی تنظیم کنیم. سپس باید پین دیجیتالی ، پین Clock و Latch را به این سه خروجی متصل کنیم. پس از آن ما باید به Arduino Uno بگوییم که چه پین هایی از IC به برد آردوینو متصل هستند. این کار با نوشتن دستور :

shiftOut(dataPin, clockPin, data);

انجام میدهیم. داده های موجود در اینجا میتوانند باینری ، دسیمال یا هگزادسیمال باشند. 8 بیت که در اینجا قرار دارند به جای “data” نوشته میشوند.

داده ها به صورت زیر ارسال میشوند :

Disable latch : به تراشه میگوید که فعلا خروجی را نشان ننمیدهد.

قفل را غیرفعال کنید ، این به تراشه می گوید که فعلاً خروجی را نشان نمی دهد.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

Enable latch : به تراشه میگوید داده های هشت بیتی را نشان دهد.

کد راه اندازی شیفت رجیستر با آردوینو

در قسمت اول کد ما مقدار اولیه را 0 قرار میدهیم :

volatile int i=0; // مقدار اولیه را 0 قرار میدهیم.

سپس پین ها را در تابع void setup به عنوان خروجی تنظیم میکنیم.

void setup(){ //تنظیم پین های 0 1 2 به عنوان خروجی 
pinMode(2, OUTPUT); 
pinMode(1, OUTPUT); 
pinMode(0, OUTPUT); 
}

سپس به تابع void loop میرسیم. در این تابع در ابتدا ما میگوییم که مقدار i صفر است. همچنین میگوییم تا هنگامی که مقدار i زیر 255 بود ، به مقدار i اضافه شود. برای درک این قسمت از کد فیلم عملکرد را ببینید تا خوب متوجه شوید. فیلم در پایین مطلب قرار دارد.

void loop() { 
for (int i=0;i<255;i++) //اگر مقدار باینری زیر 255 باشد ، یکی اضافه شود 
{
digitalWrite(2,HIGH); // پین 2 روشن 
shiftOut(0,1,2,i); //ارسال داده های 8 بیتی سریالی 
digitalWrite(2,LOW); 
پین 2 خاموش delay(500); // تاخیر 0.5 ثانیه 
} 
}

کد کامل :

volatile int i=0; // مقدار اولیه را 0 قرار میدهیم.
void setup(){ //تنظیم پین های 0  1 2 به عنوان خروجی
                pinMode(2, OUTPUT); 
                pinMode(1, OUTPUT);
                pinMode(0, OUTPUT); 
}
void loop()
{
                for (int i=0;i<255;i++) //اگر مقدار باینری زیر 255 باشد ، یکی اضافه شود
                {
                                digitalWrite(2,HIGH); // پین 2 روشن
                                shiftOut(0,1,2,i); //ارسال داده های 8 بیتی سریالی
                                digitalWrite(2,LOW); پین 2 خاموش
                                delay(500); // تاخیر 0.5 ثانیه
                }             
}

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

قسمت بعد : چگونه رله را با آردوینو کنترل کنیم ؟

4.6 (7 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

10 نظر

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

  2. سلام استاد
    اگه بخوام بدون کد این آیسی رو راه اندازی کنم پالسی که باید به هریک از پایه های کلاک و دیتا و latch بدم باید چند هرتز باشه؟

    1. سلام عزیز
      فرکانس اهمیت زیادی نداره شما به مدت بالا 100 میلی ثانیه به پایه های DS، SHCP و STCP مقدار بدید

  3. سلام.می بخشین یک سوال اینکه اگه پایه های ۰ و ۱ دیجیتال رو به عنوان خروجی یا ورودی قرار بدیم اردوینوی ما نمیسوزه؟

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

  4. با سلام و خسته نباشید آقای رحیمی ببخشید سوالی داشتم در مورد کد بالا که گذاشتین قسمت shift out(0,1,2,i را توضیح می‌دهید چکار میکنه بشتر توضیح بدین تابع چکار انجام میده

    1. سلام عزیز، تابع shiftOut(dataPin, clockPin, data); به این شکل هست یعنی پارامتر اول پین رو تعیین میکنه، پارامتر دوم کلاک رو و پارامتر سوم هم تعیین میکنه چه داده ای ارسال میشه

  5. باسلام خدمت شما آقای مهندس با تشکر ببخشید حتما دوره شما را ثبت نام میکنم کارت بانکی مشکل داشتم چند بار امتحان کردم قبول نکرد این سایت شما بنده از علاقه مند اردینو هستم میشه خواهش کنم والله دو ماه آنقدر اینترنت گشتم مطلب خواندم راه حل پیدا نکردم میشه کدشو بگین چطوری هست چکار کنم بیت‌ها حرکت نکنن برادر کوچک خودتان بدانید با تشکر

  6. با سلام آقای مهندس رحیمی و خسته نباشی بنده از شاگردان و علاقه مند تدریس شما هستم ببخشید بنده یک شیفت ریجستر ۵۹۵۹ اچ سی ۷۴ را به ۸ ال ای دی و اردینو متصل کردم کد برنامه در حالت عادی رقص نور هست جابجایی بیت‌ها میخواهم رقص نور نباشه مثلا ال ای دی ۳، ۴ ،۵ روشن باقی و بقیه خاموش باقی بمانند چطور کدشو تغییر بدم و کد نویسی چطور هست ممنون میشم راهنمای بفرمایید هر تغییر کد دادم نشد با تشکر

    1. سلام عزیز، دوره آردوینو رو مشاهده کنید یاد میگیرید

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

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