شمارنده لمسی روbojax V1 (شمارنده پایه)
مقدمه
این راهنما نحوه ساخت یک شمارنده لمسی ساده اما عملی را با استفاده از آردوینو و ماجیول حساس(حس کننده) لمسی خازنی TTP223B نشان میدهد. این پروژه که توسط Robojax ایجاد شده، مقدمهای عملی برای خواندن ورودیهای دیجیتال و مدیریت وضعیت در یک برنامه میکروکنترلر ارائه میدهد. به جای یک دکمه فیزیکی، این پروژه از یک پد لمسی استفاده میکند که راهی عالی برای یادگیری در مورد فناوری حساس(حس کننده) خازنی است.




عملکرد اصلی ساده است: هر بار که حساس(حس کننده) را لمس کنید، یک شمارشگر به میزان یک افزایش مییابد و تعداد فعلی در مانیتور سری آردوینو نمایش داده میشود. یک دکمه فشاری جداگانه برای بازنشانی شمارش به صفر استفاده میشود. این پروژه ساده میتواند برای انواع کاربردهای دنیای واقعی سازگار شود، از جمله:
- ایجاد یک شمارنده افراد ساده برای یک اتاق یا رویداد.
- ساخت یک شمارشگر برای موجودی یا شمارش اقلام.
- توسعه یک پنل کنترل لمسی برای پروژههای دیگر.
- آموزش اصول خواندن ورودی دیجیتال و مدیریت حالت.
سختافزار مورد نیاز
- برد آردوینو (اونو، نانو و غیره)
- ماجیول حساس(حس کننده) لمسی خازنی TTP223B
- کلید فشاری
- بردبورد و سیمهای جامپر
راهنمای سیمکشی
سیمکشی برای این پروژه بسیار ساده است و فقط به چند اتصال نیاز دارد. ماجیول TTP223B دارای سه پایه است: VCC، GND و OUT (یا SIG). دکمه فشاری دو پایه دارد و با استفاده از مقاومت کششی داخلی آردوینو متصل میشود که با حذف نیاز به یک مقاومت خارجی، مدار را سادهتر میکند.
در اینجا دیاگرام اتصال است:
- تیوب TTP223B VCCبه آردوینو متصل شوید۵ ولتپایه.
- تیتیپی ۲۲۳ بی GNDبه آردوینو متصل شویدGNDسوزن.
- TTP223B خروجیبه پایه دیجیتال آردوینو متصل شوید۲.
- پایه دکمهای ۱به پایه دیجیتال آردوینو متصل شوید۱۲.
- پایه دکمهای ۲به آردوینو متصل شویدگندپایه.
همانطور که در ویدیو توضیح داده شده است، دکمه فشار به گونهای سیمکشی شده که از مقاومت کششی داخلی آردوینو استفاده کند. این بدین معناست که پایه خوانده خواهد شدHIGHزمانی که دکمه فشرده نشده وLOWزمانی که فشرده شود، نیاز به یک مقاومت خارجی را از بین میبرد. (در ویدیو در 03:48)
توضیح شِفر (کود)
شِفر (کود) آردوینو برای این پروژه مختصر است و بر روی چند پارامتر کلیدی قابل تنظیم تمرکز دارد. شما میتوانید به راحتی این پروژه را برای استفاده از پایههای مختلف یا تنظیم زمانبندی با تغییر متغیرها در بالای طرح تنظیم کنید.
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 10;//millisecond delay between each touchtouchPinاین ثابت پایه دیجیتال را تعریف میکند که پایه OUT حساس(حس کننده) لمسی TTP223B به آن متصل است. شما میتوانید شماره را تغییر دهید.2به هر پایه دیجیتال دیگری (مانند ۳، ۴، ۵ و غیره) اگر ترجیح میدهید پیکربندی سیمکشی متفاوتی داشته باشید.resetPinاین ثابت پایه دیجیتال متصل به دکمه بازنشانی را تعریف میکند. مقدار پیشفرض عبارت است از12اما میتوانید آن را به هر پایه دیجیتال دیگری که موجود است تغییر دهید.touchDelayاین متغیر یک تأخیر به میلیثانیه پس از شناسایی لمس تنظیم میکند. هدف آن جلوگیری از چندین شمارش از یک لمس سریع و برای دمدن حساس(حس کننده) است. مقداری از10میلیثانیه یک نقطه شروع خوب است، اما میتوانید آن را افزایش دهید (به عنوان مثال، به ۱۰۰ یا ۵۰۰) اگر متوجه شدید که شمارشگر خیلی سریع افزایش مییابد. (در ویدئو در ۰۲:۴۵)
متن:countمتغیر یک شمارنده داخلی است که نباید آن را تغییر دهید.setup()تابع، نمایشگر مسلسل را با نرخ باود 9600 راهاندازی میکند که باید با تنظیمات در نمایشگر مسلسل IDE آردوینو شما مطابقت داشته باشد و حالت پایهها را برای حساس(حس کننده) لمسی و دکمه ریست تنظیم میکند.loop()تابع به طور مداوم حساس(حس کننده) لمسی را میخواند؛ وقتی که آن را شناسایی کندHIGHسیگنال، آن افزایش مییابدcountمتغیر و مقدار جدید را به نمایشگر مسلسل چاپ میکند. همچنین دکمه بازنشانی را بررسی میکند و اگر آن را بخواندLOWچند خطا در ورودی وجود دارد، لطفاً متن را بررسی کنید.countبه صفر برگرد. (در ویدیو در ۰۴:۰۴)
دیگر پروژه زنده
پس از بارگذاری شِفر (کود) بر روی آردوینو، پنجره سریال را باز کنید (تنظیم شده بر روی ۹۶۰۰ بادی). شما باید پیام "شمارنده لمسی روبوجکس" را ببینید. هر بار که به پد فلزی ماجیول TTP223B لمس میکنید، شمارنده افزایش مییابد و پیامی مانند "۱ بار لمس شده" را چاپ میکند. فشار دادن دکمه ریست شمارش را پاک میکند و پیام "شمارنده ریست شد" را چاپ میکند. ویدئو این روند را با دو ماجیول TTP223B مختلف نشان میدهد و نشان میدهد که شِفر (کود) با هر دو نوع معمول کار میکند. (در ویدئو در ۰۰:۴۹)
نتیجه گیری
این پروژه پایه محکمی برای درک نحوه ارتباط با حسگرهای لمسی و مدیریت شمارندههای ساده فراهم میکند. شِفر (کود) تمیز و دارای توضیحات خوب است که آن را برای تغییرات به منظورهای دیگر ساده میسازد. خالق همچنین به تنوعهای آینده اشاره میکند، مانند افزودن یک محدودیت به شمارش یا فعال کردن یک زنگ یا ریلی پس از تعداد مشخصی از لمسها، که اینها مراحل عالی بعدی برای گسترش مهارتهای شما هستند. (در ویدیو در ساعت 05:50)
فصلها
- مقدمهای بر پروژه شمارنده لمسی
- [00:49] راهاندازی سختافزار و سیمکشی
- [02:29] توضیح شِفر (کود)
- چگونه تابع حلقه کار میکند
- [05:50] نتیجهگیری و ایدههای پروژه آینده
++
/*
* This is an Arduino Robojax Touch counter using TTP223/TTP223B.
* This program will function as a counter. Every time the touch module is touched,
* the counter increments by 1.
* We have a reset button to restart the counting from zero.
*
* Watch video instructions for this video: https://youtu.be/zJ-yd4vYn8s
*
* Written by Ahmad Shamshiri on Saturday, October 27th at 2:40 PM in Ajax, Ontario, Canada.
* Get this code from Robojax.com
*
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.
* This code has been downloaded from Robojax.com.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
const int touchPin = 2;// the input pin where touch sensor is connected
const int resetPin = 12;// the input pin for reset button
const int touchDelay = 10;//millisecond delay between each touch
int count=0;// variable holding the count number
void setup() {
// Robojax.com Touch counter 20181027
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Touch Counter");
pinMode(touchPin,INPUT);// define a pin for touch module
pinMode(resetPin,INPUT_PULLUP);// define a pin for reset button
// see video ( http://bit.ly/pushbutton-resistor) on using PULLUP
// Robojax.com Touch counter 20181027
}
void loop() {
// Robojax.com Touch counter 20181027
int touchValue = digitalRead(touchPin);// read touchPin and store it in touchValue
// if touchValue is HIGH
if(touchValue == HIGH)
{
count++;// increment the count
Serial.print("Touched ");//print the information
Serial.print(count);//print count
Serial.println(" times.");
delay(touchDelay);// touch delay time
}
// if reset switch is pushed
if(digitalRead(resetPin) == LOW)
{
count =0;// reset the counter;
Serial.println("Counter Resetted.");//print the information
}
// Robojax.com Touch counter 20181027
}
فایلها📁
برگه مشخصات (pdf)
-
برگه داده TTP223 توسط شرکت Taiwan Semiconductor (TONTEK)
TTP223_datasheet.pdf0.27 MB
سایر فایلها
-
راهنمای کاربر TTP223B
robojax-TTP223B_manual.pdf0.15 MB