👆 سنسور لمسی TTP223 (TTP223 Capacitive Touch Sensor)
| اسم انگلیسی | TTP223 Capacitive Touch Sensor |
|---|---|
| در ووکوی (Wokwi) | نسخهی آمادهای سراغ نداریم |
| دسته | 🌡️ سنسورها |
| در شبیهساز فارسی | مود ساده (بدون کد) و مود آردوینو · رایگان |
سنسور لمسی TTP223 (Capacitive Touch Sensor) یک ماژول کوچک با یک صفحهی مسی گرد است که بدون هیچ قطعهی متحرکی، نزدیک شدن انگشت را حس میکند. بدن ما مثل یک خازن کوچک عمل میکند؛ تراشهی TTP223 تغییر ظرفیت صفحه را میبیند و پایهی SIG را HIGH میکند. حتی از پشت یک ورق نازک پلاستیک یا شیشه هم کار میکند، پس میشود آن را زیر بدنهی دستگاه پنهان کرد. با آن چراغ خواب لمسی، کلید بیصدا، زنگ لمسی یا دکمهای که آب و گرد و خاک به آن آسیبی نمیزند میسازی.
سنسور لمسی در ووکوی (Wokwi)
تا جایی که میدانیم ووکوی نسخهی آمادهی این قطعه را ندارد. خروجی TTP223 فقط یک سیگنال دیجیتال است که هنگام لمس HIGH میشود؛ پس در ووکوی یک wokwi-pushbutton بین 5V و پین 2، همراه یک مقاومت ۱۰ کیلو از پین 2 به GND، همان رفتار را میسازد. اگر با ESP32 کار میکنی، پینهای لمسی خود ESP32 بدون هیچ ماژولی لمس را حس میکنند؛ پین لمسی ESP32 با touchRead را ببین.
{
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-pushbutton", "id": "btn1", "top": -110, "left": 100, "attrs": { "color": "green" } },
{ "type": "wokwi-resistor", "id": "r1", "top": -40, "left": 100, "attrs": { "value": "10000" } },
{ "type": "wokwi-resistor", "id": "r2", "top": -40, "left": 260, "attrs": { "value": "220" } },
{ "type": "wokwi-led", "id": "led1", "top": -120, "left": 300, "attrs": { "color": "yellow" } }
],
"connections": [
[ "btn1:1.l", "uno:5V", "red", [] ],
[ "btn1:2.l", "uno:2", "green", [] ],
[ "r1:1", "uno:2", "green", [] ],
[ "r1:2", "uno:GND.1", "black", [] ],
[ "uno:9", "r2:1", "orange", [] ],
[ "r2:2", "led1:A", "orange", [] ],
[ "led1:C", "uno:GND.1", "black", [] ]
]
}
در تینکرکد فارسی سنسور TTP223 در نسخهی Plus شبیهسازی میشود و مدار آمادهی چراغ لمسی را دارد.
سیمکشی با آردوینو
| پایهی قطعه | وصل به |
|---|---|
| SIG | پین 2 |
| VCC | 5V (ماژول ۲ تا ۵٫۵ ولت را قبول میکند) |
| GND | GND |
| آند LED چراغ (از راه ۲۲۰ اهم) | پین 9 (PWM) |
| کاتد LED | GND |
پشت بیشتر ماژولها دو جای لحیم کوچک با اسم A و B هست. A سطح خروجی را برعکس میکند (لمس = LOW) و B ماژول را به حالت «تاگل» میبرد که با هر لمس خروجی عوض میشود و میماند. برای کد این صفحه هر دو را باز بگذار؛ یعنی حالت پیشفرض: لمس = HIGH و فقط تا وقتی انگشت روی سنسور است.
کد نمونه
یک چراغ لمسی واقعی دو حرکت را از هم جدا میکند: لمس کوتاه چراغ را روشن یا خاموش میکند و نگهداشتن بیشتر از ۸۰۰ میلیثانیه، نور را یک پله عوض میکند. سه پلهی نور با analogWrite روی پین 9 ساخته میشوند؛ اگر PWM برایت تازه است، توضیحش را بخوان.
// TTP223 on pin 2: short tap = lamp on/off, long press = next brightness.
const int TOUCH_PIN = 2;
const int LAMP_PIN = 9; // PWM pin, LED through 220 ohm
const unsigned long LONG_MS = 800;
const int LEVELS[3] = {40, 120, 255};
bool lampOn = false;
int level = 2;
bool wasTouched = false;
bool longDone = false;
unsigned long touchStart = 0;
void showLamp() {
analogWrite(LAMP_PIN, lampOn ? LEVELS[level] : 0);
}
void setup() {
Serial.begin(9600);
pinMode(TOUCH_PIN, INPUT); // the TTP223 drives the line itself
pinMode(LAMP_PIN, OUTPUT);
showLamp();
}
void loop() {
bool touched = digitalRead(TOUCH_PIN) == HIGH;
if (touched && !wasTouched) { // a finger just arrived
touchStart = millis();
longDone = false;
}
if (touched && !longDone && millis() - touchStart >= LONG_MS) {
longDone = true; // long press: next brightness
level = (level + 1) % 3;
lampOn = true;
showLamp();
Serial.print("Brightness level ");
Serial.println(level);
}
if (!touched && wasTouched && !longDone) { // a short tap was released
lampOn = !lampOn;
showLamp();
Serial.println(lampOn ? "Lamp on" : "Lamp off");
}
wasTouched = touched;
delay(10);
}
متغیر longDone نمیگذارد بعد از یک نگهداشتن طولانی، رها کردن انگشت هم بهعنوان لمس کوتاه حساب شود.
اشتباههای رایج
- لمس هنگام روشن شدن: TTP223 در لحظهی روشن شدن حالت «بدون لمس» را کالیبره میکند. اگر آن موقع انگشتت روی صفحه باشد، بعداً لمسها را برعکس میبیند یا اصلاً نمیبیند.
- پد B بسته و کد تاگل: اگر ماژول خودش در حالت تاگل باشد و کد هم تاگل کند، منطق دو بار برعکس میشود و چراغ لج میکند. فقط یکی از این دو را نگه دار.
- پوشش خیلی ضخیم: پلاستیک یا چوب ضخیمتر از چند میلیمتر حساسیت را خیلی کم میکند. پوشش نازک و غیرفلزی انتخاب کن.
- پین بدون PWM: analogWrite فقط روی پینهای 3، 5، 6، 9، 10 و 11 اونو نور را کم و زیاد میکند؛ روی پین 8 چراغ فقط روشن و خاموش میشود.
آموزشهای مرتبط
سؤالهای رایج
سنسور لمسی TTP223 مقاومت پولآپ میخواهد؟
نه. خروجی SIG را خود تراشه HIGH یا LOW میکند؛ کافی است پایه را با pinMode روی INPUT بخوانی.
پدهای A و B روی ماژول TTP223 چه کار میکنند؟
با لحیم کردن A، خروجی برعکس میشود و لمس LOW میدهد. با لحیم کردن B، ماژول به حالت تاگل میرود و هر لمس خروجی را عوض میکند و نگه میدارد. حالت پیشفرض هر دو باز است.
TTP223 در تینکرکد فارسی رایگان است؟
سنسور لمسی TTP223 در تینکرکد فارسی در نسخهی Plus شبیهسازی میشود. در ووکوی هم نسخهی آماده ندارد و یک دکمه با مقاومت پولداون جایش را میگیرد.
آموزشهایی که از این قطعه استفاده میکنند
قطعههای دیگرِ سنسورها
ماژول سنسور لرزش SW-420
SW-420 Vibration Sensor Module
سنسور فاصله اولتراسونیک (HC-SR04)
HC-SR04 Ultrasonic Sensor
سنسور دما و رطوبت DHT11 / DHT22
DHT22 / DHT11 Temperature & Humidity Sensor
سنسور نور LDR (فتورزیستور)
Photoresistor (LDR)
سنسور حرکت PIR
PIR Motion Sensor (HC-SR501)
سنسور دما TMP36 / LM35
TMP36 / LM35 Temperature Sensor