Tentang proyek ini
MPR121 adalah sensor sentuh 12-pin, menggunakan kemampuan kapasitansi dari IC.
Ada 2 perpustakaan untuk IC ini, saya pribadi lebih suka Menggunakan yang konduktif telanjang.
https://github.com/BareConductive/mpr121
Chip memiliki pin pemicu, yang memungkinkan Anda mengetahui bahwa salah satu pin disentuh atau dilepaskan, memberi Anda waktu respons yang baik dan memberi Anda opsi untuk menggunakan interupsi alih-alih memindai status dalam loop – seperti yang ditunjukkan pada contoh .Satu-satunya kekurangannya adalah Anda hanya memiliki satu pin pemicu untuk semua 12 pin IO dari IC.Alamat I2C dapat diatur ADDR adalah pin pilih alamat I2C. Secara default, ini ditarik ke ground dengan resistor 100K, untuk alamat I2C 0x5A. Anda juga dapat menghubungkannya ke pin 3Vo untuk alamat 0x5B, pin SDA untuk 0x5C atau SCL untuk alamat 0x5DPengaturan ini untuk papan adafruit, beberapa papan klon memiliki set alamat I2C yang berbeda dan default. Anda dapat menggunakan pemindai I2C jika Anda tidak mengetahui pemindai untuk papan Anda.
Menghubungkan papan sangat sederhana, seperti yang ditunjukkan pada gambar.
Satu hal yang perlu diperhatikan - sebagian besar catu daya papan breakout diberi peringkat 3.3V tidak menyalakannya dengan 5V. bagaimana dengan tegangan level data - baik karena sifat perangkat keras i2c Anda tidak akan merusak MPR121 dengan 5V arduino, tetapi jika Anda melihat masalah membaca darinya, atau bahkan tidak menemukannya di bus - coba logika konverter tingkat antara 2.
Selama bertahun-tahun saya membuat beberapa hal dengan IC yang hebat ini. Pada hal pertama yang saya buat adalah permainan untuk anak saya, huruf-huruf di atas terhubung ke 2 MPR121 dan setiap sentuhan akan memicu rekaman mp3 saya mengatakan surat itu nama.
Saya juga pada saat yang sama bereksperimen dengan cat konduktif telanjang - ini sangat menyenangkan, dan bekerja sangat baik dengan MPR121.
Kode
- Led hidup/mati sederhana pada pin 0/1
Led hidup/mati sederhana pada pin 0/1Arduino
Ini menunjukkan opsi untuk menghidupkan dan mematikan led yang terhubung pada pin 3.
Menggunakan sentuhan pin 0 pada mpr121 untuk on dan 1 pada pelepas untuk off.#include #include #define numElectrodes 2#define LEDPIN 3void setup(){ Serial.begin (115200); Serial.println("Sistem dimulai"); pinMode(LEDPIN, OUTPUT); Kawat.mulai(); // 0x5C adalah alamat MPR121 I2C pada Bare Touch Board if (!MPR121.begin(0x5A)) { Serial.println("error setting up MPR121"); switch (MPR121.getError()) { case NO_ERROR:Serial.println("tidak ada kesalahan"); merusak; case ADDRESS_UNKNOWN:Serial.println("alamat salah"); merusak; kasus READBACK_FAIL:Serial.println("kegagalan readback"); merusak; case OVERCURRENT_FLAG:Serial.println("arus berlebih pada pin REXT"); merusak; case OUT_OF_RANGE:Serial.println("elektroda di luar jangkauan"); merusak; case NOT_INITED:Serial.println("tidak diinisialisasi"); merusak; default:Serial.println("kesalahan tidak diketahui"); merusak; } sementara (1); } MPR121.setInterruptPin(4); MPR121.setTouchThreshold(40); MPR121.setReleaseThreshold(20); MPR121.updateTouchData();}void loop(){ if (MPR121.touchStatusChanged()) { MPR121.updateTouchData(); for (int i =0; i Skema