ارسال فرمان به یک برد کنترل توسط چندین روش قابل اجرا خواهد بود. مثلا با یک ریموت رادیویی به برد کنترل در پارکینگ، فرمان ارسال میکنیم. یا توسط ارسال SMS به برد کنترل وسایل برفی با SMS فرمان ارسال میکنیم. توسط انواع سنسورهای تاچ به بردهای کنترل مختلف فرمان ارسال میکنیم. در تمامی این موارد با یک مدار پیچده درگیر هستیم. در این آموزش روش ساخت مدار سنسور تاچ خازنی بدون هیچ سخت افزار خاصی را آموزش خواهیم داد. پس از انجام مراحل این آموزش با هر نوع سیم رسانایی یک ورودی حساس به لمس یا همان تاچ خازنی Touch خواهید داشت. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
کد آردوینو مدار تاچ خازنی Ardutouch
این کد یک برنامه برای برد Arduino است که از امکان لمسی یک پین واحد استفاده میکند تا یک پین خروجی دیگر را تغییر وضعیت دهد.
#include “pins_arduino.h”: این خط به وسیله کتابخانهای به نام “pins_arduino.h” از تعریفهای مربوط به پینهای برد Arduino استفاده میکند.
int lastlevel=0,stat=HIGH;: دو متغیر تعریف شدهاند. lastlevel برای ذخیرهسازی وضعیت قبلی حسگر لمس و stat برای تعیین وضعیت پین خروجی به کار میرود. lastlevel به ابتدا به مقدار صفر تنظیم میشود و stat به HIGH (روشن) تنظیم میشود.
uint8_t readCapacitivePin(int pinToMeasure): این تابع یک پین به عنوان ورودی میگیرد و حساسیت لمس را اندازهگیری میکند. این تابع از توابع مربوط به پینهای برد Arduino برای انجام عملیاتهای مربوط به لمس استفاده میکند. عملکرد این تابع به صورت خلاصه به این صورت است:
- تنظیم پین به عنوان خروجی و خاموش کردن آن.
- تغییر پین به حالت ورودی.
- ایجاد تاخیر ۱ میلیثانیه.
- انجام محاسبات برای اندازهگیری حساسیت لمس و بازگرداندن نتیجه به عنوان تعداد چرخهها.
void setup(): این تابع به عنوان تابعی اولیه اجرا میشود و تنظیمات مربوط به برد را انجام میدهد. در اینجا، پین ۱۳ به عنوان یک پین خروجی تعریف شده و به وضعیت HIGH (روشن) تنظیم میشود.
void loop(): این تابع به صورت مداوم اجرا میشود. در اینجا، پین ۱۱ به عنوان یک پین ورودی لمس تعریف شده و مقدار لمس از آن اندازهگیری میشود. سپس با توجه به مقدار اندازهگیری شده و وضعیت قبلی (lastlevel)، وضعیت پین ۱۳ تغییر میکند. اگر مقدار اندازهگیری (level) بیشتر یا مساوی ۳ بود و وضعیت قبلی (lastlevel) کمتر از ۳ بود، وضعیت پین ۱۳ تغییر میکند و به وضعیت معکوس (ON به OFF یا OFF به ON) منتقل میشود.
به طور خلاصه، این کد از یک حسگر لمس برای تغییر وضعیت یک پین خروجی استفاده میکند. وقتی کاربر پین لمس را لمس میکند، وضعیت پین خروجی تغییر میکند.کدهای زیر را کپی کرده و در کامپایلر آردوینو وارد کنید. سپس کدها را روی برد آپلود کنید.
محدودیت در دسترسی کامل به این مجموعه آموزش
دسترسی کامل به آموزش برای اعضای دیجی اسپارک امکان پذیر است. بخش اصلی آموزش شامل سورس کدهای توسعه داده شده توسط مهندسهای دیجی اسپارک است. به همین دلیل این آموزش خاص و یکتاست. برای استفاده از آن بایستی عضویت تهیه کنید. تبادل نظر با کاربران و پرسش سوال رایگان است و میتوانید از بخش نظرات همین آموزش اقدام کنید. |
در کدهای بالا با استفاده از تابع readCapacitivePin حساسیت لمس تاچ خازنی را مشخص خواهیم کرد. پارامتر حساسیت لمسی عددی بین ۰ تا ۱۷ خواهد بود. اصولا با وجود نویز عدد خروجی در صورت لمس نشدن عدد کوچکتر از ۳ خواهد بود. با لمس شدن این عدد بیشتر خواهد شد. در این کد تعریف کردهایم که اگر حساسیت تاچ خازنی بالاتر از ۳ رفت ال ای دی را روشن و خاموش کند. پین تعریف شده در این حالت خروجی برای تخلیه بار خواهد بود و اگر به منبع ولتاژ متصل شود، پین اتصال کوتاه میکند. این عمل میتواند به برد آردوینو Arduino آسیب برساند. پس مراقب باشید هیچ چیزی بجز قطعه برای لمس به پین متصل نکنید.
اتصالات پروژه
اتصالات مدار بسیار ساده است. کافیست یک قطعه سیم را به یکی از پینهای برد آردوینو Arduino متصل کنید. لازم به ذکر است در این آموزش به سخت افزار دیگری نیاز نخواهید داشت. با اینحال پیشنهاد میشود برای جلوگیری از بوجود آمدن نویز در مدار از یک خازن ۱nF سر راه پین و قطعه رسانا استفاده کنید. من در این آموزش از برد آردوینو پرو مینی Arduino Pro Mini استفاده کردهام. چنانچه روش پروگرام کردن این برد را نمیدانید. به آموزش اتصال به کامپیوتر و پروگرام کردن برد آردوینو مینی Arduino Mini مراجعه کنید. سوالات در خصوص مراحل پروگرام کردن را در همان پست مطرح بفرمایید.
در این پروژه از برد آردوینو پرو مینی Arduino Pro Mini استفاده شده است. جهت بررسی ویژگیهای این برد و دسترسی به اطلاعات کامل به فروشگاه دانشجو کیت مراجعه کنید.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام
تشکر میکنم، لذت بردم. من امروز اسپارکر شدم و دارم یکی یکی پستهایی که میتونم با وسایلم بسازم را اجرا میکنم. این پروژه ساده و کاربردی بود.
سلام و سپاس
بسیار خوشحال شدیم که به جمع اسپارکر ها پیوستید
سلام
ویدیو جذابی بود و پروژه حرفه ای .و خاص
ممنونم از شما
سلام
سپاس از شما
جناب مهندس کدخدایی
با سلام و احترام
من میخواستم ببینم میتونم یک سیم نازک به طول تقریبا یک و نیم متری به این برد نصب کنم و هر کجای این سیم رو تاچ کنم فرمان خروجی از برد اردینو بگیرم و در صورت تایید میخواستم بدونم برای ۴ ورودی سیم مجزا نیز باید ۴ تا برد خریداری کنم یا بردی ساخته شده که ۴ ورودی مجزا داشته باشه. متشکرم از پاسخ
سلام و سپاس
سیم بلند باعث ایجاد نویز میشه که البته میشه همونطور که توی پست گفتم با خازن برطرفش کرد ولی باید تست بشه…
arduino ورودی های متعددی داره و نیازی به تهیه چند بورد نیست
سلام خسته نباشید
ببخشید من از اردینو مدل پرو مینی استفاده میکنم و از یک تبدیل pl 3203 استفاده میکنم و وقتی ان را پروگرام میکنم کد اپلود میشه ولی مدار تغییر نمیکنه و من با یه مثال ساده هم امتحان کردم مثل led روشن کردن ولی نمیشه مشکل از چیه به نظر شما؟؟
سلام
یعنی مشکل شما آپلود برنامه است؟
از طریق آموزش مربوطه اقدام کنید:
آموزش پروگرام کردن arduino pro mini
سلام جناب کدخدایی
مگه وقتی کد اپلود بشه نباید بگه اپلود با موفقیت انجام شد؟؟؟
اردینو من این رو میگه و کد اپلود میشه ولی انجام نمیشه؟؟
یعنی الان مشکل از اپلوده هنوز؟
یه پروژه ساده مثل تست ال ای دی رو نیز درست نمیزنه
من وقتی نوشت اپلودینگ چند دفعه ریست میزنم و کد اپلود میشه و پیغامم میده
کد مشکل نداره مال خودشه و خطا نیز ندارم سخت افزار مث ال ای دی نیز با برد ینو من کار میکنه
ممنون از توجه تون
یعنی این مشکل فقط روی arduino pro mini ظاهر میشه و با arduino uno مشکلی ندارید؟
بله فقط با اردینو پرو مینی من این مشکل است و با uno اجرا میشه؟؟یعتی مشکل از برد منه؟؟یا نوع اپلود شدن؟؟
احتمالا مشکل از پروگرامر یا همون مبدل شماست
سلام مهندس وقتتون بخیر
بجای یک سیم چیزی هست که بشه اونو به یک سطح چسبوند و با تماس دست فرمان صادر بشه؟ واینکه این برد چند ورودی میگیره و آیا خروجی هم داره اگه داره به صورت صفر و یه هست؟ و قیمتش چنده؟
سلام و سپاس
راحترین روش استفاده از سیم مسی است ولی تمامی سطوحی که هادی جریان باشند برای اینکار مناسب است
این بورد یک آردوینو pro mini است ولی شما میتوانید از انواع آردوینو استفاده کنید که تعداد پین های دیجیتال و آنالوگی آن متفاوت است