شمارهگیر لمسی RoboJax V2 با نمایشگر LCD1602-I2C
مقدمه
این راهنما به شما نشان میدهد که چگونه یک شمارنده لمسی ساده اما بسیار کارآمد با استفاده از آردوینو اونو، حساس(حس کننده) لمسی خازنی TTP223B و نمایشگر LCD1602 با قابلیت I2C بسازید. این پروژه که به عنوان شمارنده لمسی Robojax V2 شناخته میشود، نقطه شروع مناسبی برای هر کسی است که به دنبال افزودن ورودی لمسی و شهودی به پروژههای الکترونیکی خود باشد. به جای یک دکمه مکانیکی، یک لمس ساده بر روی پد حساس(حس کننده) موجب افزایش شمارش میشود و شمارش جاری به وضوح بر روی صفحه نمایش LCD نشان داده میشود. یک دکمه فشار جداگانه به شما اجازه میدهد هر زمان که خواستید شمارش را به صفر بازنشانی کنید.


این پروژه تنها یک تمرین یادگیری نیست؛ بلکه دامنه وسیعی از کاربردهای عملی دارد. در اینجا چند ایده برای الهام بخشیدن به شما آورده شده است:
- شمارشگر افراد:یک دستگاه ساده برای شمارش تعداد افرادی که وارد یک اتاق یا ناحیه خاص میشوند، بسازید.
- شمارنده خط تولید:از آن برای شمارش اقلام هنگام عبور از یک نقطه در یک نوار نقاله کوچک یا فرآیند مونتاژ استفاده کنید.
- پیگیری حضور:یک سیستم ساده برای ردیابی حضور در کلاس یا رویداد بسازید.
- نصب هنری تعاملی:از آن به عنوان یک مؤلفه در یک اثر هنری استفاده کنید که به تعداد دفعاتی که لمس میشود واکنش نشان میدهد.
- ابزار آموزشی:مبانی سنسورها، وقفهها و رابطهای نمایش را به روشی سرگرمکننده و عملی آموزش دهید.
در پایان این راهنما، شما یک شمارنده لمسی کاملاً عملی و درک محکمی از چگونگی ادغام سنسورهای لمسی، نمایشگرهای I2C و ورودیهای کاربر در پروژههای آردوینو خود خواهید داشت.
اجزای سختافزاری
برای ساخت این پروژه، به اجزاء زیر نیاز خواهید داشت:
- آردوینو اونو (یا برد سازگار)
- ماجیول حساس(حس کننده) لمس خازنی TTP223B یا TTP223 (نوع قرمز یا آبی)
- ماجیول رابط I2C نمایشگر LCD1602
- دکمه فشار (برای بازنشانی)
- کابل پرش
- بورد آزمایش
راهنمای سیمکشی
نقشهکشی این پروژه ساده است، اما مهم است که توجه کنید ترتیب پایهها در ماجیولهای لمسی قرمز و آبی متفاوت است. در اینجا تجزیه و تحلیلی از نحوه اتصال همه چیز آورده شده است.
اول، بیایید حساس(حس کننده) لمسی را وصل کنیم. برای ماجیول آبی، ترتیب پایهها سیگنال، VCC و زمین است. پایه سیگنال را به پایه ۲ آردوینو متصل کنید، VCC را به ۵ ولت و زمین را به GND. برایماجیول قرمزترتیب پایهها به شرح زیر است: زمین، سیگنال و VCC (در ویدیو در :57). پایه زمین را به GND متصل کنید، پایه سیگنال (وسط) را به پایه ۲ آردوینو و پایه VCC را به ۵ ولت متصل کنید (در ویدیو در :01).
سپس نمایشگر LCD را متصل کنید. رابط I2C فقط از چهار سیم استفاده میکند. پایه GND روی نمایشگر را به GND آردوینو متصل کنید، پایه VCC را به 5V، پایه SDA را به پایه آنالوگ A4 آردوینو و پایه SCL را به پایه آنالوگ A5 آردوینو متصل کنید (در ویدیو در 03:55). اینها پایههای صحیح برای آردوینو Uno هستند. اگر از بورد دیگری مانند آردوینو مگا استفاده میکنید، پایههای SDA و SCL به ترتیب روی 20 و 21 قرار دارند (در ویدیو در 04:18).
در نهایت، دکمه بازنشانی را متصل کنید. دکمه را روی تخته نازک قرار دهید و یکی از پایههای آن را به GND آردوینو و دیگری را به پایه ۱۲ آردوینو متصل کنید (در ویدیو در ۰۳:۳۳). ترتیب این سیمها مهم نیست.
این پروژه به هیچ کدام از مقاومتها برای حساس(حس کننده) لمسی یا دکمه نیاز ندارد، زیرا شِفر (کود) از مقاومت داخلی Pull-up آردوینو برای دکمه استفاده خواهد کرد.
توضیح شِفر (کود)
شِفر (کود) این پروژه به گونهای طراحی شده است که درک و ویرایش آن ساده باشد. بخشهای کلیدی قابل تنظیم توسط کاربر در بالای طرح قرار دارند.
این بخش از شِفر (کود) است که شما احتمالاً میخواهید آن را سفارشی کنید:
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
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 = 500;//millisecond delay between each touch
int count=0;// variable holding the count numberبیایید بررسی کنیم که هر یک از این تنظیمات چه کارهایی انجام میدهند:
- آدرس LCD:متن:
lcd(0x27, 16, 2)خط تنظیمات نمایش را تعیین میکند.0x27آدرس I2C ماجیول LCD خاص شماست. بیشتر ماجیولها از این آدرس استفاده میکنند، اما اگر نمایشگر شما کار نکرد، ممکن است0x3Fشما میتوانید این مقدار را تغییر دهید تا با صفحهنمایش شما مطابقت داشته باشد. - پایه لمسیاین ثابت پایه آردوینو را تعریف میکند که سیم سیگنال حساس(حس کننده) لمسی شما به آن متصل است. اگر میخواهید از پایه دیگری استفاده کنید، میتوانید این را تغییر دهید.
- تنظیم مجدد شِفر (کود) PINاین ثابت پایه آردوینو برای دکمه ریست شما را تعریف میکند. به طور پیشفرض روی پایه ۱۲ تنظیم شده است.
- تاخیر لمسی:این یک تنظیم حیاتی است. این زمان حداقل را به میلیثانیه بین دو لمس ثبت شده کنترل میکند (در ویدیو در 05:13). مقداری برابر با 500 میلیثانیه از شمارشهای تصادفی چندگانه از یک لمس یا از ضربههای بسیار سریع جلوگیری میکند. اگر میخواهید شمارشگر سریعتر پاسخ دهد، میتوانید این مقدار را به چیزی مانند 100 میلیثانیه کاهش دهید (در ویدیو در 10:31).
Thecountمتغیر یک عدد صحیح است که مقدار شمارش فعلی را نگه میدارد. این متغیر به صفر مقداردهی اولیه میشود و هر بار که حساس(حس کننده) لمس میشود، افزایش مییابد. شِفر (کود) خود به منطق خواندن حساس(حس کننده)، بهروزرسانی صفحه نمایش و بررسی دکمه بازنشانی رسیدگی میکند، بنابراین نیازی به نگرانی در این مورد نیست. تنها کافی است ثابتهای بالا را بر اساس تنظیمات خاص و رفتار مورد نظر خود تنظیم کنید.
نمایش پروژه زنده
وقتی که همه چیز را به هم متصل کردهاید و شِفر (کود) را بر روی آردوینو بارگذاری کردهاید، پروژه به طور زیر عمل خواهد کرد:
زمانی که دستگاه را روشن کنید، LCD عبارت "Robojax Touch" و "Counter V2" را به مدت چند ثانیه نمایش میدهد قبل از اینکه شمارش آغاز شود. هر بار که به حساس(حس کننده) لمسی دست بزنید، شمارش به یک افزایش مییابد و شمارش جدید در خط پایینی LCD، کنار کلمه "Touched:" نمایش داده میشود (در ویدئو در :51). همین اطلاعات نیز به نمایشگر مسلسل IDE آردوینو برای اهداف اشکالزدایی یا ثبتنام چاپ میشود.
برای تنظیم مجدد شمارشگر، به سادگی دکمه فشاری را فشار دهید. نمایشگر LCD پاک شده و "تنظیم مجدد شد" نمایش داده میشود و شمارش به صفر باز میگردد (در ویدئو در 08:49). دستگاه اکنون آماده است تا دوباره شمارش کند. این بازخورد ساده و واضح، دیدن عملکرد پروژه را در زمان واقعی آسان میکند.
فصلها
- [00:00] معرفی و مرور پروژه
- [00:44] اجزا و نحوهی کار آنها
- راهنمای سیمکشی برای حساس(حس کننده) لمسی و دکمه
- راهنمای سیمکشی برای نمایشگر LCD
- [04:26] توضیح شِفر (کود) و راهاندازی
- درک حلقه اصلی و منطق لمس
- [09:25] نمایش زنده و آزمایش
- جمعبندی و ایدههای پروژه آینده
//*
* This is Arduino touch counter V2 using TTP223/TTP223B and LCD1602-I2C
* This program will function as a counter. Every time the touch module is touched,
* the counter increments by 1. The count number is displayed on the LCD1602 display.
* We have a reset button to restart the counting from zero.
*
* Watch video instruction for this video: https://youtu.be/5A9jPD5nUCw
*
* Written by Ahmad Shamshiri on Saturday, 27th of October at 16:28 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/>.
*/
// start of settings for LCD1602 with I2C
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C
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 = 500;//millisecond delay between each touch
int count=0;// variable holding the count number
void setup() {
// Robojax.com Touch counter 20181027
// initialize the LCD
lcd.begin();
lcd.backlight();// turn the backlight ON for the LCD
lcd.print("Robojax Touch");
lcd.setCursor(0,1);
lcd.print("Counter V2");
Serial.begin(9600);// initialize serial monitor with 9600 baud
Serial.println("Robojax Touch Counter V2");
pinMode(touchPin,INPUT);// define a pin for touch module
pinMode(resetPin,INPUT_PULLUP);// define a pin for reset button
// see video ( link in the video description) on using PULLUP
delay(3000);// give time to user to read the display at the beginning
// 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
lcd.clear();// clear previous values from screen
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Touched:");
lcd.setCursor(9,1);
lcd.print(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)
{
lcd.clear();// clear previous values from screen
count =0;// reset the counter;
Serial.println("Counter Resetted.");//print the information
lcd.setCursor(0,0);
lcd.print("Robojax TCV2");
lcd.setCursor(0,1);
lcd.print("Resetted");
}
// Robojax.com Touch counter 20181027
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازونخرید LCD1602-I2C از اَمه زونamzn.to
-
ایبیخرید LCD1602-I2C از eBayebay.us
-
علیاکسپرسخرید LCD1602-I2C از علیاکسپرسs.click.aliexpress.com
-
علیاکسپرسخرید ۱۰ عدد LCD1602-I2C از علیاکسپرسs.click.aliexpress.com
منابع و مراجع
فایلها📁
فایل فریزینگ
-
ماجیول LCD LCD1602-I2C با ۴ سیم
LCD1602-I2C.fzpz0.01 MB
سایر فایلها
-
برگه داده TP223
robojax-0492_TTP223_Datasheet.pdf0.24 MB -
راهنمای کاربر TTP223B
robojax-TTP223B_manual.pdf0.15 MB -
کتابخانه LiquidCrystal LCD1602
robojax-LCD1602_LiquidCrystal.zip