آموزش راه اندازی ماژول سنسور خازنی لمسی – سنسور تاچ MPR121 با آردوینو
فهرست مطالب
ویژگی های ماژول سنسور خازنی لمسی MPR121
معرفی پایه ها (Pinout) ماژول سنسور خازنی لمسی MPR121
-
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
-
راه اندازی ماژول سنسور خازنی لمسی 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<iframe class="wp-embedded-content" sandbox="allow-scripts" security="restricted" style="position: absolute; clip: rect(1px, 1px, 1px, 1px);" title="“Home” — Electropeak" src="https://electropeak.com/learn/embed/#?secret=6SCzCOyaf8" data-secret="6SCzCOyaf8" width="600" height="338" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
*/
#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 نمایش میدهد.
خروجی کد به شکل زیر است.
عالی✌