كود البحث

عداد روبوجَکس باللمس V1 (عداد أساسي)

عداد روبوجَکس باللمس V1 (عداد أساسي)

مقدمة

يُظهر هذا الدليل كيفية بناء عداد لمسية بسيط ولكنه عملي باستخدام لوحة Arduino ووحدة الاستشعار باللمس TTP223B. يوفر هذا المشروع، الذي أنشأه Robojax، مقدمة عملية لقراءة المدخلات الرقمية وإدارة الحالة داخل برنامج الميكروكنترولر. بدلاً من زر ضغطة فعلية، يستخدم هذا المشروع لوحة حساسة للمس، وهي وسيلة رائعة لتعلم تقنية الاستشعار بالسعة.

Schematic of TTP223 module
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view

تتمثل الوظيفة الأساسية في بساطة: في كل مرة تلمس فيها المستشعر، يتزايد العداد بمقدار واحد، ويظهر العدد الحالي على شاشة المراقبة التسلسلية الخاصة بـ Arduino. يتم استخدام زر دفع منفصل لإعادة تعيين العداد إلى الصفر. يمكن تكييف هذا المشروع البسيط لمجموعة متنوعة من التطبيقات في العالم الحقيقي، بما في ذلك:

  • إنشاء عداد بسيط للأشخاص في غرفة أو حدث.
  • بناء عداد للتعداد للمخزون أو لحساب العناصر.
  • تطوير لوحة تحكم تعمل باللمس لمشاريع أخرى.
  • تعليم أساسيات قراءة المدخلات الرقمية وإدارة الحالة.

الأجهزة المطلوبة

  • لوحة أردوينو (أونو، نانو، إلخ)
  • وحدة مستشعر اللمس السعوي TTP223B
  • مفتاح دفع按钮
  • لوحة التجارب وأسلاك التوصيل

دليل الأسلاك

التوصيلات لهذا المشروع بسيطة جداً، حيث تتطلب فقط بعض الاتصالات. يحتوي وحدة TTP223B على ثلاثة دبابيس: VCC و GND و OUT (أو SIG). يحتوي زر الضغط على دبوسين، ويتم توصيله باستخدام المقاومة الداخلية السالبة للاردوينو، مما يبسط الدائرة من خلال إزالة الحاجة إلى مقاومة خارجية.

إليك مخطط الاتصال:

  • تي تي بي 223 ب فولتية التشغيل: اتصل بـ Arduino's5فولتدبوس.
  • TTP223B GNDاتصل باردوينوجنددبوس.
  • TTP223B الخروج: الاتصال بدبوس أردوينو الرقمي٢.
  • زر دفع دبوس 1: الاتصال دبوس رقمي لأردوينو١٢.
  • زر الدفع دبوس 2: اتصل بآردوينوجي إن ديدبوس.

كما تم شرحه في الفيديو، يتم توصيل زر الضغط لاستخدام مقاوم السحب الداخلي في الأردوينو. هذا يعني أن الدبوس سيقرأ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 touch
  • touchPinهذا الثابت يحدد الدبوس الرقمي الذي يتصل به دبوس الخروج لمستشعر اللمس TTP223B. يمكنك تغيير الرقم2إلى أي دبوس رقمي آخر (مثل 3، 4، 5، إلخ) إذا كنت تفضل إعداد توصيل مختلف.
  • resetPinتحدد هذه الثابتة دبوس الرقم الرقمي المتصل بزر إعادة الضبط. القيمة الافتراضية هي12، لكن يمكنك تغييره إلى أي دبوس رقمي آخر متاح.
  • touchDelayتقوم هذه المتغيرات بإعداد تأخير بالميلي ثانية بعد اكتشاف اللمس. هدفها هو تقليل تأثير اللمسات المتعددة من لمسة واحدة سريعة. قيمة من10الملي ثانية هي نقطة انطلاق جيدة، ولكن يمكنك زيادتها (مثل 100 أو 500) إذا وجدت أن العداد يزداد بسرعة كبيرة. (في الفيديو في 02:45)

الــcountالمتغير هو عداد داخلي يجب عليك عدم تعديله.setup()تقوم الدالة بتهيئة شاشة السيريال بمعدل بت يبلغ 9600، والذي يجب أن يتطابق مع الإعداد في شاشة السيريال في بيئة تطوير أوردوينو الخاصة بك، وتحدد أوضاع الدبابيس لمستشعر اللمس وزر إعادة الضبط.loop()تقوم الدالة بقراءة مستشعر اللمس باستمرار؛ عندما تكشف عن一个HIGHإشارة، فإنه يزيد منcountمتغير ويطبع القيمة الجديدة على شاشة السيريال. كما أنه يتحقق من زر إعادة الضبط، وإذا قرأLOW, it sets thecountالعودة إلى الصفر. (في الفيديو في 04:04)

عرض المشروع الحي

بمجرد تحميل الكود على جهاز Arduino الخاص بك، افتح شاشة السيريال (على إعداد 9600 بود). يجب أن ترى الرسالة "عداد لمسة Robojax". في كل مرة تلمس فيها اللوحة المعدنية على وحدة TTP223B، ستزداد العدّاد وتقوم بطباعة رسالة مثل "لمست 1 مرة". سيؤدي الضغط على زر إعادة الضبط إلى مسح العدّاد وطباعة "تم إعادة ضبط العداد". يعرض الفيديو هذه العملية مع وحدتين مختلفتين من TTP223B، مما يدل على أن الكود يعمل مع كلا النوعين الشائعين. (في الفيديو عند 00:49)

الخاتمة

يوفر هذا المشروع أساسًا قويًا لفهم كيفية التفاعل مع حساسات اللمس وإدارة العدادات البسيطة. الشيفرة نظيفة ومعلقة بشكل جيد، مما يسهل تعديلها لأغراض أخرى. كما يذكر المنشئ تغييرات مستقبلية، مثل إضافة حد للعدد أو تفعيل إنذار أو نظام تتابع بعد عدد محدد من اللمسات، وهي خطوات ممتازة لتوسيع مهاراتك. (في الفيديو عند 05:50)

فصول

  • [00:00] مقدمة عن مشروع عداد اللمس
  • إعداد الأجهزة والأسلاك
  • [02:29] شرح الكود
  • كيف تعمل دالة الحلقة
  • [05:50] الخاتمة وأفكار المشاريع المستقبلية

الصور

TTP223B touch module
TTP223B touch module
Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay (blue)
Arduino wring for TTP223 Touch sensor with relay
Arduino wring for TTP223 Touch sensor with relay
TTP223 Touch module - Top view
TTP223 Touch module - Top view
TTP223 Touch module - back view
TTP223 Touch module- back view
TTP223 Touch module - Top view
TTP223 Touch module - Top view
Schematic of TTP223 module
Schematic of TTP223 module
165-RoboJax Touch Counter V1 (basic counter)
اللغة: C++
++
/*
 * 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)

ملفات أخرى