Cara Menghilangkan Kenalan Kenalan Ketika Menyambungkan Butang Ke Arduino

Isi kandungan:

Cara Menghilangkan Kenalan Kenalan Ketika Menyambungkan Butang Ke Arduino
Cara Menghilangkan Kenalan Kenalan Ketika Menyambungkan Butang Ke Arduino

Video: Cara Menghilangkan Kenalan Kenalan Ketika Menyambungkan Butang Ke Arduino

Video: Cara Menghilangkan Kenalan Kenalan Ketika Menyambungkan Butang Ke Arduino
Video: Cara mengatasi Port Arduino yang tidak terbaca pada Arduino IDE 2024, April
Anonim

Kami telah melihat menghubungkan butang ke Arduino dan menyentuh isu kenalan "melantun". Ini adalah fenomena yang sangat menjengkelkan yang menyebabkan penekanan butang berulang dan menyukarkan pengendalian klik butang secara teratur. Mari kita bincangkan bagaimana untuk menghilangkan lantunan kenalan.

Kesan lantunan kenalan
Kesan lantunan kenalan

Perlu

  • - Arduino;
  • - butang taktik;
  • - perintang dengan nilai nominal 10 kOhm;
  • - Diod pemancar cahaya;
  • - wayar penyambung.

Arahan

Langkah 1

Lantunan kenalan adalah fenomena biasa pada suis mekanikal, butang tekan, suis togol dan relay. Kerana kenyataan bahawa kenalan biasanya dibuat dari logam dan aloi yang mempunyai keanjalan, apabila ditutup secara fizikal, mereka tidak segera membuat sambungan yang dapat dipercayai. Dalam jangka masa yang singkat, kenalan ditutup beberapa kali dan saling tolak. Akibatnya, arus elektrik mengambil nilai keadaan tetap bukan dengan serta-merta, tetapi setelah beberapa siri naik turun. Tempoh kesan sementara ini bergantung pada bahan hubungan, saiz dan reka bentuk. Ilustrasi menunjukkan osilogram khas apabila kenalan butang taktik ditutup. Dapat dilihat bahawa waktu dari saat beralih ke keadaan stabil adalah beberapa milisaat. Ini dipanggil "lantunan".

Kesan ini tidak dapat dilihat pada litar elektrik untuk mengawal pencahayaan, motor, atau sensor dan peranti inersia lain. Tetapi dalam litar di mana terdapat pembacaan dan pemprosesan maklumat yang cepat (di mana frekuensi berada dalam urutan yang sama dengan denyut "pantulan", atau lebih tinggi), ini adalah masalah. Khususnya, Arduino UNO, yang beroperasi pada 16 MHz, sangat baik dalam menangkap lantunan kenalan dengan menerima urutan satu dan nol dan bukannya satu suis 0 hingga 1.

Hubungi melantun semasa menekan butang
Hubungi melantun semasa menekan butang

Langkah 2

Mari lihat bagaimana pantulan kenalan mempengaruhi operasi litar yang betul. Mari sambungkan butang jam ke Arduino menggunakan litar perintang tarik. Dengan menekan butang, kita akan menyalakan LED dan membiarkannya sehingga butang ditekan lagi. Untuk kejelasan, kami menyambungkan LED luaran ke pin digital 13, walaupun yang terpasang dapat dilepaskan.

Menyambungkan butang ke Arduino menggunakan litar perintang tarik
Menyambungkan butang ke Arduino menggunakan litar perintang tarik

Langkah 3

Untuk menyelesaikan tugas ini, perkara pertama yang terlintas di fikiran:

- ingat keadaan butang sebelumnya;

- bandingkan dengan keadaan semasa;

- jika keadaan telah berubah, maka kita mengubah keadaan LED.

Mari tulis lakaran seperti itu dan muatkan ke dalam memori Arduino.

Apabila litar dihidupkan, kesan memantul hubungan segera kelihatan. Ini menampakkan diri pada kenyataan bahawa LED tidak menyala segera setelah menekan butang, atau menyala dan kemudian padam, atau tidak mati segera setelah menekan butang, tetapi tetap menyala. Secara amnya, litar tidak berfungsi dengan stabil. Dan jika tugas dengan menyalakan LED ini tidak begitu kritikal, maka untuk tugas lain yang lebih serius, ia tidak dapat diterima.

Lakaran menekan butang pemprosesan tanpa mengambil kira kenalan lantunan
Lakaran menekan butang pemprosesan tanpa mengambil kira kenalan lantunan

Langkah 4

Kami akan berusaha memperbaiki keadaan. Kami tahu bahawa pentalan kenalan berlaku dalam beberapa milisaat selepas penutupan kenalan. Mari tunggu, katakan, 5ms setelah menukar keadaan butang. Kali ini untuk seseorang hampir sekejap, dan menekan butang oleh seseorang biasanya memerlukan lebih lama - beberapa puluh milisaat. Dan Arduino berfungsi dengan baik dalam jangka masa yang singkat, dan 5ms ini akan membolehkannya memotong kenalan daripada menekan butang.

Dalam lakaran ini, kami akan menyatakan prosedur debounce () ("bounce" dalam bahasa Inggeris hanya "bounce", awalan "de" bermaksud proses terbalik), dengan input yang kami berikan pada keadaan butang sebelumnya. Sekiranya penekanan butang berlangsung lebih dari 5 msec, maka ia adalah penekanan.

Dengan mengesan akhbar, kita mengubah keadaan LED.

Muat naik lakaran ke papan Arduino. Semuanya jauh lebih baik sekarang! Butang berfungsi tanpa gagal, apabila ditekan, LED berubah keadaan, seperti yang kita mahukan.

Sketsa memproses penekanan butang, dengan mengambil kira kenalan kenalan
Sketsa memproses penekanan butang, dengan mengambil kira kenalan kenalan

Langkah 5

Fungsi serupa disediakan oleh perpustakaan khas seperti perpustakaan Bounce2. Anda boleh memuat turunnya dari pautan di bahagian "Sumber" atau di laman web https://github.com/thomasfredericks/Bounce2. Untuk memasang perpustakaan, letakkan di direktori perpustakaan persekitaran pengembangan Arduino dan mulakan semula IDE.

Perpustakaan "Bounce2" mengandungi kaedah berikut:

Bounce () - inisialisasi objek "Bounce";

selang kekosongan (ms) - menetapkan masa kelewatan dalam milisaat;

pasang kosong (nombor pin) - menetapkan pin yang mana butang disambungkan;

int update () - mengemas kini objek dan kembali benar jika keadaan pin telah berubah, dan salah sebaliknya;

int read () - membaca keadaan pin baru.

Mari tulis semula lakaran kami menggunakan perpustakaan. Anda juga dapat mengingat dan membandingkan keadaan butang masa lalu dengan yang sekarang, tetapi mari kita permudahkan algoritma. Apabila butang ditekan, kami akan menghitung penekanan, dan setiap penekanan ganjil akan menyala LED, dan setiap penekanan genap akan mematikannya. Lakaran ini kelihatan ringkas, senang dibaca dan senang digunakan.

Disyorkan: