آموزش راه اندازی ماژول سنسور خازنی لمسی – سنسور تاچ MPR121 با آردوینو

فهرست مطالب

ویژگی های ماژول سنسور خازنی لمسی MPR121

ماژول سنسور خازنی لمسی MPR121، یک سنسور تاچ با دقت بسیار بالا است. این ماژول دارای 12 کلید لمسی است و توسط پروتکل ارتباطی I2C به راحتی توسط هر میکروکنترلری قابل راه‌اندازی می‌باشد. بر روی این ماژول هیچ رگولاتوری وجود ندارد، پس لازم است که حتما ولتاژ تغذیه داده شده به ماژول در محدوده 1.7 تا 3.6 ولت باشد.

معرفی پایه ها (Pinout) ماژول سنسور خازنی لمسی MPR121

ماژول سنسور خازنی لمسی MPR121 دارای 18 پایه به شرح زیر است:

6 پایه در سمت چپ ماژول:

  • VCC: تغذیه ماژول –3.3 ولت
  • IRQ: خروجی وقفه
  • SCL: پایه کلاک برای پروتکل I2C
  • SDA: پایه دیتا برای پروتکل I2C
  • ADD: پایه تنظیم آدرس پروتکل I2C
  • GND: زمین

12 پایه در سمت راست ماژول:

  • 0-11: کلیدهای تاچ
نکته

آدرس I2C این ماژول در حالت پیش فرض 0x5A است و در صورت اتصال پایه ADD به VCC برابر 0x5B در صورت اتصال پایه ADD به SDA برابر 0x5C و در صورت اتصال پایه ADD به SCL برابر 0x5D خواهد بود.

پین اوت (Pinout) این ماژول را می‌توانید در تصویر زیر مشاهده کنید.

لوازمی که به آن احتیاج دارید

قطعات مورد نیاز

آردوینو UNO R3 × 1
ماژول سنسور خازنی لمسی - سنسور تاچ MPR121 × 1
سیم جامپر × 1

نرم افزارهای مورد نیاز

آردوینو IDE

راه اندازی ماژول سنسور خازنی لمسی MPR121 با آردوینو

گام اول: سیم بندی

مطابق مدار زیر، ماژول را به آردوینو وصل کنید.

گام دوم: نصب کتابخانه

به Library manager رفته و کتابخانه Adafruit MPR121 را نصب کنید.

توجه

اگر برای نصب کتابخانه نیاز به راهنمایی بیشتر دارید، به اینجا مراجعه کنید.

گام سوم: کد

کد زیر را روی برد آردوینو آپلود کنید. پس از آپلود کد، پنجره Serial Monitor را باز کنید.

   /*
  Modified on Jan 20, 2021
  Modified by MehranMaleki from Arduino Examples
  
Home
*/ #include <Wire.h> #include "Adafruit_MPR121.h" #ifndef _BV #define _BV(bit) (1 << (bit)) #endif // You can have up to 4 on one i2c bus but one is enough for testing! Adafruit_MPR121 cap = Adafruit_MPR121(); // Keeps track of the last pins touched // so, we know when buttons are 'released' uint16_t lasttouched = 0; uint16_t currtouched = 0; void setup () { Serial.begin(9600); while (!Serial) { // needed to keep leonardo/micro from starting too fast! delay(10); } Serial.println("Adafruit MPR121 Capacitive Touch sensor test"); // Default address is 0x5A, if tied to 3.3V its 0x5B // If tied to SDA its 0x5C and if SCL then 0x5D if (!cap.begin(0x5A)) { Serial.println("MPR121 not found, check wiring?"); while (1); } Serial.println("MPR121 found!"); } void loop() { // Get the currently touched pads currtouched = cap.touched(); for (uint8_t i = 0; i < 12; i++) { // it if *is* touched and *wasnt* touched before, alert! if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) { Serial.print(i); Serial.print(" touched"); } // if it *was* touched and now *isnt*, alert! if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) { Serial.println(" released"); } } // reset our state lasttouched = currtouched; // comment out this line for detailed data from the sensor! return; // debugging info, what Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX); Serial.print("Filt: "); for (uint8_t i = 0; i < 12; i++) { Serial.print(cap.filteredData(i)); Serial.print("\t"); } Serial.println(); Serial.print("Base: "); for (uint8_t i = 0; i < 12; i++) { Serial.print(cap.baselineData(i)); Serial.print("\t"); } Serial.println(); // put a delay so it isn't overwhelming delay(1000); }

کد بالا در ابتدا اتصال صحیح ماژول به آردوینو را چک می‌کند. سپس لمس شدن و آزاد شدن هر کدام از کلیدها را بر روی پنجره Serial Monitor نمایش می‌دهد.

خروجی کد به شکل زیر است.

آموزش های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.