در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از کتابخانه های کلیدی و کاربردی اختصاص می دهیم. همانطور که اطلاع دارید، جهت افزایش تعداد پورت های خروجی میکروکنترلرها از آی سی شیفت رجیستر استفاده می شود. به کمک این آی سی می توان تعداد خروجی های برد آردوینو را افزایش داد. در ایناموزش قصد داریم تا به بررسی کتابخانه ۷۴xx595.h راه اندازی آی سی شیفت رجیستر بپردازیم. به کمک این کتابخانه می توان در زمانی کم و با سرعت بالا، اقدام به راه اندازی شیفت رجیستر نمود. در ادامه آموزش تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه ۷۴xx595.h
به منظور استفاده از کتابخانه، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت output_expand_74xx59.h را تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه
کتابخانه ۷۴xx595.h یک کتابخانه جهت کار با تراشه شیفت رجیستر است. از این کتابخانه می توانید برای راه اندازی و کار با تراشه شیفت رجیستر استفاده کنید. در کنار این، کتابخانه شیفت رجیستر بر روی بردهای آردوینو مبتنی بر تراشه AVR تنها قابلیت اجرا دارد. به عبارت دیگر، این کتابخانه بر روی تراشه ESP قابلیت اجرا ندارد. البته این کتابخانه بر روی بردهای خاصی از خانواده AVR قابلیت اجرا دارد. این بردها عبارتند از:
- UNO
- MEGA
- NANO
- MICRO
توابع کلیدی و کاربردی کتابخانه
پس از بررسی الزامات و نکات فنی، نوبت به تحلیل توابع کلیدی می رسد. جدول زیر شرح عملکرد هر را تابع را به همراه ورودی ها، ارائه می دهد.
شرح | ورودی | تابع | |||
این تابع در حقیقت تابع سازنده کلاس کتابخانه است. ورودی های این تابع به ترتیب شرح داده شده و ارتباط برد آردوینو با آی سی را برقرار می کند. | ورودی اول: تعداد شیفت رجیسترها
ورودی دوم: شماره پایه داده جهت اتصال به شیفت رجیستر ورودی سوم: شماره پایه کلاک مخصوص شیفت رجیستر ورودی چهارم: شماره پایه جهت تعیین لچ ورودی پنجم: شماره پایه جهت تعیین OE |
output_expand74XX595(int numberOfShiftRegisters, int serialDataPin, int clockPin, int latchPin, int OE) | |||
این تابع جهت تست اولیه به کار می رود. با فراخوانی این تابع خروجی های آی سی یک لحظه حالت چشمک زن پیدا می کنند. | بدون ورودی | void startup() | |||
به کمک این تابع می توانید به صورت آرایه ای، وضعیت پایه ها را تعیین کنید. به عنوان مثال با تعیین آرایه ای به شکل زیر:
Ar[]={1,1,0,0} دو پایه نخست روشن و دو پایه بعدی خاموش خواهند شد. |
ورودی از نوع آرایه | void setAll(uint8_t * digitalValues); | |||
به کمک این تابع می توانید وضعیت کلیه پایه ها را بخوانید. این وضعیت در یک آرایه قرار می گیرد. | بدون ورودی | uint8_t * getAll(); | |||
به کمک این پایه می توانید یک پایه خاص را مقدار دهی کنید. بدین ترتیب نیازی به مقدار دهی سایر پایه ها نیست. ورودی اول شماره پایه و ورودی دوم مقدار آن (۰ یا ۱) را مشخص می کند. از آنجایی که ورودی دوم به صورت uint8_t تعریف شده، لذا ورودی دوم می تواند به صورت HIGH یا LOW تعریف شود. | ورودی نخست شماره پایه
ورودی دوم مقدار پایه |
void set(int pin, uint8_t value); | |||
به کمک این تابع می توانید وضعیت یک پایه را SET کنید | ورودی جهت تعیین پایه | void setPin(int pin) | |||
به کمک این تابع کلیه پایه ها به صورت LOW تعریف می شوند. | بدون ورودی |
|
|||
به کمک این تابع کلیه پایه ها به صورت HIGH تعریف می شوند. | بدون ورودی | void setAllHigh() | |||
به کمک این تابع می توان وضعیت پایه را خواند. در ورودی شماره پایه قرار می گیرد. | ورودی جهت تعیین شماره پایه | uint8_t get(int pin) |
پس از بررسی توابع نوبت به اجرای یک مثال می رسد. قسمت بعد را به این موضوع اختصاص می دهیم.
اجرای یک نمونه برنامه
پس از بررسی توابع کلیدی و کاربردی، نوبت به اجرای یک نمونه برنامه می رسد. در برنامه زیر از ورودی سریال شماره یک پایه را دریافت کرده و آن را set می کنیم.
#define NUMBER_OF_REGISTERS 4 // تعیین تعداد آی سی ها #include "output_expand74XX595.h" //درج کتابخانه آی سی int outputs_calculed = (NUMBER_OF_REGISTERS * 8); // محاسبه تعداد خروجی های کل شیفت رجیسترها output_expand74XX595 output(NUMBER_OF_REGISTERS,13,12,11,10); //تابع سازنده کلاس کتابخانه void setup(){ Serial.begin(9600); Serial.println("Starting...."); output.startup();//اجرای حالت تست چشمک زن } void loop(){ while(Serial.available() >0){ //در این برنامه از سریال ورودی دریافت کرده تا وضعیت پایه شیفت رجیستر را کنترل کنیم. int data = Serial.parseInt(); //دریافت داده و تبدیل به عدد صحیح if (data > outputs_calculed){ //در صورتیکه عدد دریافت شده از تعداد پایه های خروجی بیشتر شد، ورودی نامعتبر است. Serial.println("INVALID INPUT!"); } else if(Serial.read() > 0){ Serial.print("SET PIN STATE"); Serial.print(data); Serial.println(""); output.setPin(data); //تعیین وضعیت پایه } Serial.println(output.get(30)); //نمایش وضعیت یک پایه دلخواه } }
لوازم مورد نیاز
لینک خرید انواع برد آردوینو، کلیک کنید
لینک خرید انواع برد ESP، کلیک کنید
لینک خرید شیفت رجیستر، کلیک کنید
جمع بندی
در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو این قسمت را به یکی از مهم ترین و پرکاربرد ترین کتابخانه های آردوینو اختصاص دادیم. همانطور که اطلاع دارید، شیفت رجیسترها از ابزارهای مهم جهت افزایش پایه های خروجی میکروکنترلرها به شمار می روند. به کمک این ابزار شما می توانید پایه های میکروکنترلر خود نظیر برد آردوینو UNO را توسعه دهید. جهت انجام این کار، آی سی ۷۴HC595 یک آی سی فوق العاده کاربردی است. جهت راه اندازی و کار با این تراشه، کتابخانه تحت آردوینو توسعه یافته است. در این آموزش به تحلیل و بررسی این کتابخانه پرداختیم. نخست، نحوه نصب کتابخانه را بررسی کردیم. در ادامه الزامات فنی و بردهای مورد پشتیبانی کتابخانه را از نظر گذراندیم. در ادامه به بررسی توابع کلیدی و کاربردی پرداختیم. در نهایت با ارائه یک مثال، نحوه استفاده از توابع در برنامه های عملی را مشاهده کردیم.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
با سلام خسته نباشید ، سوال داشتم از کتابخانه اردینو نمیشه شیفت ریجستر یا u8glib را نصب کرد آیا از قطعی اینترنت هست یا که فیلتر شکن نصب بکنیم کدام فیلتر شکن را نصب بکنیم که کتابخانه اردینو را بتوان اینستال کرد سوال بعدی اینکه اگر اینترنت داخلی سپاه بخواهد بیاورد آیا نصب برنامه های میکرو کنترلرها مثل اردینو کار خواهند کرد یا که بر میگردیم به عصر حجر و با تیر کمان مثل انسانهای اولیه به شکار و در غارها زندگی میکنیم لطفاً توضیح بدهید
با سلام
کاربر گرامی این مورد کاملا وابسته به اینترنت است. میتوانید به صورت دستی کتابخانه را دانلود و از مسیر نصب آردوینو به پوشه Library انتقال دهید.