Arduino & IoT Academy · Pelajaran

Hilangkan Bounce dengan millis()

Abaikan derau dengan jendela kestabilan singkat.

Pelajaran 2 dari 413 langkah

Hilangkan Bounce dengan millis() adalah pelajaran Arduino & IoT Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Arduino & IoT Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Arduino & IoT Academy mencakup 4 pelajaran total.

Mengapa Tidak Menggunakan delay() Saja?

Anda dapat menjeda dengan delay() setelah penekanan, tetapi hal itu membekukan seluruh papan Anda. Alat yang lebih cerdas untuk tombol yang bersih adalah millis().

millis() Adalah Stopwatch

millis() mengembalikan jumlah milidetik sejak papan Anda mulai berjalan. Anda membandingkan dua pembacaan untuk mengukur waktu yang berlalu tanpa menghentikan program.

unsigned long now = millis();

Rencana Debounce

Gagasannya sederhana: ketika pin berubah, mulai sebuah pengatur waktu. Percayai keadaan baru hanya jika keadaan tersebut tetap stabil melewati jangka waktu singkat.

Pilih Jendela Debounce

Penundaan sekitar 50 milidetik adalah pilihan klasik. Waktunya cukup lama untuk melampaui pantulan, tetapi jauh terlalu cepat untuk Anda sadari.

const unsigned long DEBOUNCE = 50;

Ingat Perubahan Terakhir

Anda memerlukan variabel untuk menyimpan kapan pin terakhir kali berubah. Bandingkan nilainya dengan waktu saat ini pada setiap putaran loop.

unsigned long lastChange = 0;

Lacak Dua Keadaan

Simpan pembacaan mentah dan keadaan stabil yang telah dikonfirmasi secara terpisah. Nilai mentah berisik; nilai stabil adalah nilai yang dipercaya oleh logika Anda.

int lastRaw = HIGH;
int stable = HIGH;

Deteksi Perubahan

Pada setiap loop, baca pin. Jika nilainya berbeda dari nilai mentah terakhir, sinyal baru saja berubah, jadi atur ulang pengatur waktu Anda.

int raw = digitalRead(BTN);
if (raw != lastRaw)
  lastChange = millis();

Tunggu Hingga Stabil

Jika waktu yang cukup telah berlalu sejak perubahan terakhir, pembacaan tersebut telah stabil. Kini Anda dapat menerimanya dengan aman sebagai keadaan sebenarnya.

if (millis() - lastChange > DEBOUNCE) {
  stable = raw;
}

Tindak Lanjuti Perubahan

Untuk memicu tindakan sekali setiap penekanan, pantau perubahan keadaan stabil menjadi LOW. Satu perubahan itu adalah penekanan yang bersih dan telah melalui debounce.

if (stable == LOW && lastStable == HIGH)
  Serial.println("clean press");

Perbarui untuk Berikutnya

Di akhir loop, simpan pembacaan saat ini ke dalam variabel terakhir Anda. Dengan demikian, perbandingan selalu diperbarui pada setiap putaran.

lastRaw = raw;
lastStable = stable;

Keunggulan Tanpa Pemblokiran

Karena millis() tidak pernah menjeda papan, sensor dan keluaran Anda tetap berjalan. Anda melakukan debounce sementara semua bagian lainnya tetap aktif. 🚀

Pemeriksaan Singkat

Mari kita periksa bagaimana debounce dengan millis() menentukan bahwa suatu penekanan benar-benar terjadi.

Rangkuman: Penekanan yang Bersih

Anda menggunakan millis() untuk mengabaikan pantulan tanpa membekukan papan, dan hanya menerima penekanan setelah sinyal stabil. Masukan yang kokoh dan profesional! ✅

Gratis untuk memulai

Belajar C++ dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
30
Pelajaran
120

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Hilangkan Bounce dengan millis()” gratis?

Ya — teks lengkap “Hilangkan Bounce dengan millis()” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Arduino & IoT Academy, upgrade ke CoddyKit PRO. Kursus Arduino & IoT Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Hilangkan Bounce dengan millis()”?

Abaikan derau dengan jendela kestabilan singkat. Kamu berlatih Arduino & IoT Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Arduino & IoT Academy?

Tidak diperlukan pengalaman sebelumnya. Arduino & IoT Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Hilangkan Bounce dengan millis()” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Arduino & IoT Academy ini?

Ya. Setiap pelajaran Arduino & IoT Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mengapa Tombol Mengalami “Bounce”
  2. Hilangkan Bounce dengan millis()
  3. Simpan Nilai di EEPROM
  4. Simpan Penghitung Setelah Reset
← Kembali ke Arduino & IoT Academy