آموزش آردوینوآموزش الکترونیک

نحوه استفاده از شیفت رجیستر در آردوینو (آموزش آردوینو #7)

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

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

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

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

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

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

توضیحات کد استفاده از رجیستر Shift با آردوینو

در قسمت اول کد ما مقدار اولیه را 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 ثانیه
                }             
}

فیلم نحوه کار شیفت رجیستر در آردوینو

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

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

قسمت بعد : رله چیست؟ چگونه آن را با آردوینو کنترل کنیم ؟ (آموزش Arduino #8)

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

محمد رحیمی

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

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

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