در مجموعه آموزش های تحلیل و بررسی کتابخانه های آردوینو، این قسمت را به یکی از مهم ترین و پرکابردترین کتابخانه های آردوینو اختصاص می دهیم. همانطور که اطلاع دارید، کتابخانه از ارکان مهم توسعه یک پروژه به شمار می روند. یک کتابخانه دارای توابع از پیش تعریف شده بوده و بدین ترتیب برنامه نویس نیاز به طراحی از ابتدا نخواهد داشت. با استفاده از کتابخانه ها، می توان سرعت توسعه پروژه را افزایش داد. در این آموزش به بررسی یک کتابخانه کاربردی می پردازیم. این کتابخانه می تواند یک ورودی آنالوگ را به معادل دیجیتال آن تبدیل کند. در حقیقت کتابخانه این آموزش به صورت اشمیت تریگر عمل می کند. این کتابخانه با دریافت بازه مجاز برای ورودی آنالوگ، معادل دیجیتال آن را تشکیل داده و در خروجی تولید می کند. در این اموزش به تحلیل و بررسی این کتابخانه خواهیم پرداخت. مطابق رویه معمول، نصب، بررسی الزامات، تحلیل توابع و اجرای یک نمونه برنامه را مورد بررسی قرار خواهیم داد. در ادامه تحلیل کتابخانه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
نصب کتابخانه SchmittTrigger.h
به منظور استفاده از کتابخانه، ابتدا می بایست آن را نصب کنیم. در این قسمت به نصب کتابخانه با جستجو در مخازن آردوینو می پردازیم. به همین منظور، ابتدا در نرم افزار آردوینو بر روی گزینه Tools و سپس Manage Libraries را کلیک کنید. پس از کلیک بر روی این گزینه، با تصویر زیر رو به می شوید. این منو کتابخانه های در دسترس را به شما نشان می دهد. شما نیز می توانید با جستجوی نام کتابخانه مورد نظر خود، آن را در مخازن آردوینو یافته و سپس نصب کنید.
مطابق فلش مشخص شده در تصویر فوق، در کادر جستجو عبارت SchmittTrigger.h را جست و جو و تایپ کنید. پس از چند لحظه با تصویر زیر رو به رو می شوید. در این مرحله، کتابخانه را با کلیک بر روی گزینه install، نصب کنید.
الزامات و نکات فنی کتابخانه SchmittTrigger.h
پس از نصب کتابخانه، نوبت به بررس الزامات و نکات فنی آن می رسد. پیش از بررسی الزامات، جهت روشن تر شدن عملکرد کتابخانه، اجازه دهید مثالی را مطرح کنیم. فرض کنید یک پایه ورودی آنالوگ دارید. از طرفی به این پایه ورودی، یک پتانسیومتر یا مقاومت ولومی متصل است. شما با چرخاندن این مقاومت، ولتاژ ورودی به ورودی آنالوگ را تغییر می دهید. از طرف دیگر، شما می توانید یک حد تعریف کنید. با تعیین حد، مقدار صفر و یک معادل ورودی آنالوگ تعیین می شود. فرض کنید یک بازه(حد) بین ۷۰۰ الی ۸۰۰ تعریف کرده اید. در این حالت، ورودی کمتر از بازه ۷۰۰ الی ۸۰۰ صفر در نظر گرفته می شود. در کنار این، ورودی های بیش از ۸۰۰، به عنوان ۱ فرض خواهند شد. در حقیقت این کتابخانه، عملکرد سخت افزاری اشمیت تریگر را به صورت نرم افزاری پیاده سازی می کند.
کتابخانه SchmittTrigger.h، یک کتابخانه مستقل از معماری پردازنده است. به عبارت دیگر، این کتابخانه می تواند روی بردهای آردوینو با معماری AVR نظیر آردوینو UNO و یا سایر معماری ها مثل ESP و یا ARM، اجرا شود. بنابراین، می توان انتظار داشت که این کتابخانه روی بردهای آردوینو DUE و یا بردهای ESP8266 و ESP32، اجرا شود.
توابع کلیدی و کاربردی کتابخانه
پس از بررسی الزامات و نکات فنی، نوبت به تحلیل توابع می رسد. در وهله اول، به کمک تابع زیر به عنوان سازنده، یک شی از کلاس کتابخانه ایجاد می شود.
- SchmittTrigger(T switch_off_point, T switch_on_point)
در تابع فوق، ورودی اول حد پایین و ورودی دوم حد بالاست. در صورتیکه مقادیر آنالوگ کمتر از ورودی اول باشند، به عنوان ۰ منطقی در نظر گرفته می شوند. به طور مشابه، ورودی های بیش از مقدار بیشینه هم به عنوان ۱ منظور خواهند شد. در ادامه این موضوع، تابع input را داریم. این تابع ورودی را دریافت کرده و ذخیره می کند. شکل فراخوانی این تابع به شکل زیر است.
- void input(T value)
در ورودی تابع فوق، می توان اعداد صحیح، اعشاری یا خروجی تابع analogRead هم قرار داد. تابع، ورودی را به صورت خودکار با قالب تعریف شده تغییر می دهد. در ادامه، به کمک تابع output می توانیم وضعیت خروجی را متوجه شویم. تابع output دارای دو خروجی true و false است. عبارت true برای ۱ منطقی و false هم به عنوان ۰ منطقی، تعیین می شود.
اجرای یک نمونه برنامه
پس از بررسی الزامات و نکات فنی، نوبت به اجرای یک نمونه برنامه می رسد. برنامه زیر با تعیین بازه ۰ و۱، ورودی آنالوگ را دریافت و خروجی معادل را تولید می کند. این خروجی سپس روشن یا خاموش شدن LED روی برد آردوینو خواهد شد.
#include <SchmittTrigger.h> //کتابخانه SchmittTrigger<int> st(800, 900); //تعیین نقطه خاموش و روشن void setup() { pinMode(13, OUTPUT); //تعیین پایه شماره ۱۳ برای خروجی } void loop() { st.input(analogRead(A0)); //دریافت مقدار ورودی آنالوگ و قرار دادن آن در تابع input digitalWrite(13, st.output()); //تعیین وضعبت LED خروجی }
لوازم مورد نیاز
لینک خرید انواع برد آردوینو، کلیک کنید
لینک خرید انواع برد ESP، کلیک کنید
جمع بندی
اشمیت تریگر یکی از قطعات مهم و زمینه ساز ساخت سیگنال های دیجیتال در میکروکنترلرهاست. این قطعه می تواند ولتاژ ورودی اعمال شده به پایه های میکروکنترلر را به صفر و یک معادل، تبدیل کند. در این آموزش به تحلیل و بررسی یک کتابخانه شبیه ساز اشمیت تریگر پرداختیم. این کتابخانه می تواند همانند یک اشمیت تریگر سخت افزاری، ولتاژ ورودی روی پایه های آنالوگ را به معادل صفر و یک دیجیتال آن تبدیل کند. به کمک این کتابخانه شما قادر به تعیین بازه حاشیه نویز بوده و می توانید معاول سیگنال آنالوگ، صفر و یک دیجیتال تولید کنید. در این آموزش ابتدا به نصب و بررسی الزامات فنی پرداختیم. پس از این مرحله، به تحلیل و بررسی توابع کلیدی اقدام نمودیم. دست آخر برای روشن تر شدن موشوع، به ارایه یک مثال برنامه نویسی، پرداخته شد.