Minggu, 23 Februari 2025

State change detection (edge detection)

Deteksi Perubahan Status (Deteksi Tepi) untuk tombol tekan

Hitung jumlah penekanan tombol.

Setelah tombol tekan berfungsi, Anda sering kali ingin melakukan tindakan berdasarkan seberapa sering tombol ditekan. Untuk melakukannya, Anda perlu mengetahui kapan tombol berubah status dari mati ke hidup, dan menghitung berapa kali perubahan status ini terjadi. Ini disebut deteksi perubahan status atau deteksi tepi. Dalam tutorial ini, kita mempelajari cara memeriksa perubahan status, mengirim pesan ke Serial Monitor dengan informasi yang relevan, dan menghitung empat perubahan status untuk menyalakan dan mematikan LED.

Perangkat Keras yang Diperlukan

·         Papan Arduino

·         tombol atau sakelar sesaat

·         Resistor 10k ohm

·         kabel penghubung

·         Breadboard

Sirkuit


Hubungkan tiga kabel ke papan. Kabel pertama dari satu kaki tombol tekan melalui resistor pull-down (di sini 10k ohm) ke ground. Kabel kedua dari kaki tombol tekan yang sesuai ke catu daya 5 volt. Kabel ketiga terhubung ke pin I/O digital (di sini pin 2) yang membaca status tombol.

Ketika tombol tekan terbuka (tidak ditekan) tidak ada koneksi antara kedua kaki tombol tekan, jadi pin terhubung ke ground (melalui resistor pull-down) dan kita membaca LOW. Ketika tombol ditutup (ditekan), ia membuat koneksi antara kedua kakinya, menghubungkan pin ke tegangan, sehingga kita membaca HIGH. (Pin masih terhubung ke ground, tetapi resistor menahan aliran arus, jadi jalur dengan resistansi paling kecil adalah ke +5V.)

Jika Anda memutus pin I/O digital dari semuanya, LED mungkin berkedip tidak menentu. Ini karena input "mengambang" - yaitu, tidak terhubung ke tegangan atau ground. Input akan secara acak mengembalikan HIGH atau LOW. Itulah sebabnya Anda memerlukan resistor pull-down di sirkuit.

Skema

Desain PCB



Kode Contoh



Kode

Sketsa di bawah ini terus membaca status tombol. Sketsa tersebut kemudian membandingkan status tombol dengan statusnya saat terakhir kali melalui loop utama. Jika status tombol saat ini berbeda dari status tombol terakhir dan status tombol saat ini tinggi, maka tombol berubah dari mati menjadi hidup. Sketsa tersebut kemudian menambah penghitung penekanan tombol.

Sketsa tersebut juga memeriksa nilai penghitung penekanan tombol, dan jika nilainya kelipatan genap dari empat, maka LED pada pin 13 akan menyala. Jika tidak, maka akan mati.

 

 Pelajari lebih lanjut

Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan .

InputPullupSerial

InputPullupSerial

Menunjukkan penggunaan INPUT_PULLUP dengan pinMode()

Tarik Masukan Serial

Contoh ini menunjukkan penggunaan INPUT_PULLUP dengan pinMode(). Ia memantau status sakelar dengan membuat komunikasi serial antara Arduino dan komputer Anda melalui USB.

Selain itu, bila masukannya TINGGI, LED terintegrasi yang terpasang pada pin 13 akan menyala; bila RENDAH, LED akan mati.

Perangkat Keras yang Diperlukan

·         Papan Arduino

·         Sakelar sesaat, tombol, atau sakelar sakelar

·         papan tempat memotong roti

·         kawat penghubung

Sirkuit




Hubungkan dua kabel ke papan Arduino. Kabel hitam menghubungkan ground ke salah satu kaki tombol tekan. Kabel kedua terhubung dari pin digital 2 ke kaki tombol tekan lainnya.

Tombol tekan atau sakelar menghubungkan dua titik dalam rangkaian saat Anda menekannya. Saat tombol tekan terbuka (tidak ditekan), tidak ada koneksi antara kedua kaki tombol tekan. Karena pull-up internal pada pin 2 aktif dan terhubung ke 5V, kita membaca HIGH saat tombol terbuka. Saat tombol tertutup, Arduino membaca LOW karena koneksi ke ground telah selesai.

Skema


Desain PCB


Kode Contoh



Kode

Dalam program di bawah ini, hal pertama yang akan Anda lakukan dalam fungsi pengaturan adalah memulai komunikasi serial, pada 9600 bit data per detik, antara Arduino dan komputer Anda dengan baris:

Serial.begin(9600);

Berikutnya, inisialisasi pin digital 2 sebagai input dengan resistor pull-up internal diaktifkan:

pinMode(2,INPUT_PULLUP);

Baris berikut membuat pin 13, dengan LED onboard, sebuah output:

pinMode(13, OUTPUT);

Setelah pengaturan Anda selesai, lanjutkan ke loop utama kode Anda. Saat tombol tidak ditekan, resistor pull-up internal terhubung ke 5 volt. Hal ini menyebabkan Arduino melaporkan "1" atau TINGGI. Saat tombol ditekan, pin Arduino ditarik ke ground, menyebabkan Arduino melaporkan "0", atau RENDAH.

Hal pertama yang perlu Anda lakukan dalam loop utama program Anda adalah membuat variabel untuk menampung informasi yang masuk dari switch Anda. Karena informasi yang masuk dari switch akan berupa "1" atau "0", Anda dapat menggunakan int tipe data . Panggil variabel ini sensorValue, dan atur agar sama dengan apa pun yang sedang dibaca pada pin digital 2. Anda dapat melakukan semua ini hanya dengan satu baris kode:

int sensorValue = digitalRead(2);

Setelah Arduino membaca input, buat ia mencetak informasi ini kembali ke komputer sebagai desimal (DEC) nilai. Anda dapat melakukannya dengan perintah Serial.println () di baris kode terakhir kita:

Serial.println(sensorValue, DEC);

Sekarang, saat Anda membuka Serial Monitor di lingkungan Arduino, Anda akan melihat aliran "0" jika sakelar Anda tertutup, atau "1" jika sakelar Anda terbuka.

LED pada pin 13 akan menyala saat sakelar dalam posisi TINGGI, dan mati saat RENDAH.

 

 Pelajari lebih lanjut

Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan 

Debounce on a Pushbutton

 Debounce pada Tombol Tekan

Membaca tombol tekan, menyaring kebisingan.

Tombol tekan sering kali menghasilkan transisi buka/tutup yang salah saat ditekan, karena masalah mekanis dan fisik: transisi ini dapat dibaca sebagai beberapa penekanan dalam waktu yang sangat singkat yang mengelabui program. Contoh ini menunjukkan cara menghilangkan pantulan masukan, yang berarti memeriksa dua kali dalam waktu singkat untuk memastikan tombol tekan benar-benar ditekan. Tanpa menghilangkan pantulan, menekan tombol sekali dapat menyebabkan hasil yang tidak terduga. Sketsa ini menggunakan millis() berfungsi untuk melacak waktu yang telah berlalu sejak tombol ditekan.

Perangkat Keras yang Diperlukan

·         Papan Arduino

·         tombol atau sakelar sesaat

·         Resistor 10k ohm

·         kabel penghubung

·         papan tempat memotong roti

Sirkuit

Skema

Desain PCB



Kode Contoh

Kode

Sketsa di bawah ini didasarkan pada versi debounce milik Limor Fried , tetapi logikanya terbalik dari contohnya. Dalam contohnya, sakelar mengembalikan LOW saat tertutup, dan HIGH saat terbuka. Di sini, sakelar mengembalikan HIGH saat ditekan dan LOW saat tidak ditekan.

 

 Pelajari lebih lanjut

Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan .

Button

Cara Memasang Kabel dan Memprogram Tombol

Pelajari cara memasang kabel dan memprogram tombol tekan untuk mengendalikan LED.

Tombol tekan atau sakelar menghubungkan dua titik dalam rangkaian saat Anda menekannya. Contoh ini menyalakan LED internal pada pin 13 saat Anda menekan tombol.

Perangkat keras

·         Papan Arduino

·         Tombol sesaat atau Sakelar

·         Resistor 10k ohm

·         kabel penghubung

·         Breadboard

Sirkuit


Hubungkan tiga kabel ke papan. Dua kabel pertama, merah dan hitam, terhubung ke dua baris vertikal panjang di sisi papan tempat memotong roti untuk menyediakan akses ke catu daya 5 volt dan ground. Kabel ketiga terhubung dari pin digital 2 ke salah satu kaki tombol tekan. Kaki tombol yang sama terhubung melalui resistor pull-down (di sini 10K ohm) ke ground. Kaki tombol lainnya terhubung ke catu daya 5 volt.

Ketika tombol tekan terbuka (tidak ditekan) tidak ada koneksi antara kedua kaki tombol tekan, jadi pin terhubung ke ground (melalui resistor pull-down) dan kita membaca LOW. Ketika tombol ditutup (ditekan), ia membuat koneksi antara kedua kakinya, menghubungkan pin ke 5 volt, sehingga kita membaca HIGH.

Anda juga dapat memasang rangkaian ini dengan cara sebaliknya, dengan resistor pullup yang menjaga input tetap TINGGI, dan menjadi RENDAH saat tombol ditekan. Jika demikian, perilaku sketsa akan terbalik, dengan LED yang biasanya menyala dan mati saat Anda menekan tombol.

Jika Anda memutus pin I/O digital dari semuanya, LED mungkin berkedip tidak menentu. Ini karena inputnya "mengambang" - artinya, input akan secara acak mengembalikan HIGH atau LOW. Itulah sebabnya Anda memerlukan resistor pull-up atau pull-down di sirkuit.

Skema


Desain PCB

Kode Contoh

Kode

 

 Pelajari lebih lanjut

Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan .

Blink Without Delay

Berkedip Tanpa Penundaan

Mengedipkan LED tanpa menggunakan fungsi delay()

Terkadang Anda perlu melakukan dua hal sekaligus. Misalnya, Anda mungkin ingin mengedipkan LED saat membaca penekanan tombol. Dalam kasus ini, Anda tidak dapat menggunakan delay(), karena Arduino menjeda program Anda selama delay() Jika tombol ditekan saat Arduino dijeda menunggu delay() untuk lolos, program Anda akan melewatkan penekanan tombol.

Sketsa ini menunjukkan cara mengedipkan LED tanpa menggunakan delay() . Ia menyalakan LED dan kemudian mencatat waktu. Kemudian, setiap kali melalui loop(), ia memeriksa apakah waktu kedip yang diinginkan telah lewat. Jika sudah lewat, ia akan menyalakan atau mematikan LED dan mencatat waktu yang baru. Dengan cara ini, LED berkedip terus-menerus sementara eksekusi sketsa tidak pernah tertinggal pada satu instruksi.

Analoginya seperti memanaskan pizza di microwave, dan juga menunggu email penting. Anda menaruh pizza di microwave dan mengaturnya selama 10 menit. Analoginya seperti menggunakan delay() akan duduk di depan microwave sambil memperhatikan penghitung waktu mundur dari 10 menit hingga penghitung waktu mencapai nol. Jika email penting tiba selama waktu ini, Anda akan melewatkannya.

Apa yang akan Anda lakukan dalam kehidupan nyata adalah menyalakan pizza, lalu memeriksa email, dan mungkin melakukan hal lain (yang tidak memakan waktu terlalu lama!) dan sesekali Anda akan kembali ke microwave untuk melihat apakah penghitung waktu telah mencapai nol, yang menunjukkan pizza Anda sudah matang.

Dalam tutorial ini Anda akan mempelajari cara mengatur pengatur waktu yang serupa.

Perangkat Keras yang Diperlukan

·         Papan Arduino

·         LED

·         Resistor 220 ohm

Sirkuit

Untuk membuat rangkaian, hubungkan salah satu ujung resistor ke pin 13 pada papan. Hubungkan kaki panjang LED (kaki positif, disebut anoda) ke ujung resistor lainnya. Hubungkan kaki pendek LED (kaki negatif, disebut katoda) ke GND papan, seperti yang ditunjukkan pada diagram di atas dan skema di bawah.

Sebagian besar papan Arduino sudah memiliki LED yang terpasang pada pin 13 pada papan itu sendiri. Jika Anda menjalankan contoh ini tanpa perangkat keras yang terpasang, Anda akan melihat LED tersebut berkedip.

Skema

Setelah Anda membangun sirkuit, hubungkan papan Anda ke komputer, jalankan Perangkat Lunak Arduino (IDE), dan masukkan kode di bawah ini.

Desain PCB

Kode Contoh

Anda bisa melakukan langkah seperti dibawah ini 

Kode

Kode di bawah ini menggunakan fungsi millis() , perintah yang mengembalikan jumlah milidetik sejak papan mulai menjalankan sketsa saat ini, untuk mengedipkan LED.

 

 Pelajari lebih lanjut

Anda dapat menemukan tutorial yang lebih mendasar di bagian contoh bawaan .