Saya telah banyak bermain dengan Raspberry Pi belakangan ini. Tapi saya punya masalah.
Ketika saya mengatur pin input untuk memeriksa apakah listrik dikirim atau tidak, itu memberi saya jawaban yang agak tidak stabil.
Beberapa pengamatan yang telah saya lakukan untuk mengklarifikasi masalah saya:
Ketika saya menghubungkan sirkuit, dan listrik mengalir ke pin input, nilai yang diberikannya secara konsisten BENAR atau 1.
Ketika saya memutus sirkuit dengan melepas LED yang merupakan bagian dari itu (ketika nilai input harus 0) itu memberi saya nilai acak, bergeser antara 0 dan 1.
Ketika saya menghapus semua kabel dari Pi saya itu memberi saya nilai konsisten 0
Jika saya memiliki semua kabel GPIO dihapus itu memberi saya nilai 0, tetapi jika saya hanya menyentuh pin input dengan sepotong logam listrik terkemuka, (mengarah ke apa-apa di ujung lain) dimulai dengan nilai acak lagi. Itu tidak memberi saya nilai acak kecuali saya memiliki sesuatu yang terhubung ke pin output juga. Tidak harus mengarah ke mana pun, cukup menyentuh pin output. Dan beberapa potongan logam lainnya harus menyentuh pin input. Tidak ada koneksi sama sekali di antara mereka.
Saya bertanya-tanya mengapa itu mulai memberi saya nilai acak ketika pin Input GPIO menyentuh logam apa pun.
Dan yang lebih menarik, mengapa itu memberi saya 1 atau BENAR yang konsisten ketika saya benar-benar mengirim listrik ke sana?
Jawaban:
Masalah
Benar, tetapi apa yang terjadi ketika ground terhubung ke pin input GPIO? Nilai yang diberikannya akan selalu salah .
Ketika tidak ada yang terhubung pin berada dalam keadaan "mengambang", dan hasilnya tidak dapat diprediksi. itu dalam keadaan tidak terdefinisi, bukan 0 atau 1, dan nilai yang terdeteksi dapat berubah secara aneh, karenanya hasil acak Anda. Dalam elektronik ini dikenal sebagai negara ketiga .
Beberapa detail dari artikel Wikipedia :
Solusi umum
Solusinya adalah resistor pull-down . Anggap ini sebagai komponen tambahan yang tidak melakukan apa-apa ketika garis mendapatkan 0 atau 1. Tetapi ketika garis menganggur, tiba-tiba tendangan itu beraksi dan memberikan 0.
Solusi Raspberry Pi
Beruntung bagi Anda, Rpi memiliki pull-down bawaan, Anda harus mengaktifkannya secara terprogram. Berikut ini adalah skrip python untuk itu:
Catatan samping
Jangan hubungkan daya langsung ke pin karena akan berbahaya! Pastikan ada resistansi yang cukup di sirkuit. Juga, jangan pernah menghubungkan daya 5V secara langsung ke GPIO karena hanya menerima 3.3V.
sumber