Isi kandungan:

Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: 6 Langkah
Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: 6 Langkah

Video: Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: 6 Langkah

Video: Gunakan 1 Input Analog untuk 6 Butang untuk Arduino: 6 Langkah
Video: How to use up to 10 push button switch with 1 Arduino input pin ANPB-V1 2024, Julai
Anonim
Gunakan 1 Input Analog untuk 6 Butang untuk Arduino
Gunakan 1 Input Analog untuk 6 Butang untuk Arduino

Saya sering bertanya-tanya bagaimana saya boleh mendapatkan lebih banyak Input Digital untuk Arduino saya. Baru-baru ini saya terfikir bahawa saya boleh menggunakan salah satu Input Analog untuk membawa pelbagai input digital. Saya melakukan carian pantas dan mendapati di mana orang dapat melakukan ini, tetapi ini hanya membenarkan satu butang ditekan pada satu masa. Saya mahu ada kombinasi butang yang boleh ditekan SIMULTANEOUS. Oleh itu, dengan bantuan TINKERCAD CIRCUITS, saya berazam untuk mewujudkannya.

Mengapa saya mahu menekan butang serentak? Seperti yang digambarkan dalam reka bentuk TinkerCad Circuits, dapat digunakan untuk input suis DIP untuk pemilihan mode yang berbeda dalam program.

Litar yang saya gunakan menggunakan sumber 5V yang tersedia dari Arduino dan menggunakan 7 perintang dan 6 butang atau suis.

Langkah 1: Litar

Litar
Litar

Arduino mempunyai input analog yang menerima input 0V hingga 5V. Input ini mempunyai resolusi 10-bit, yang bermaksud bahawa isyarat dipecah menjadi 2 ^ 10 segmen, atau 1024 kiraan. Berdasarkan ini, sebilangan besar yang mungkin kita masukkan ke input analog sambil membenarkan penekanan serentak adalah 10 butang hingga 1 input analog. Tetapi, ini bukan dunia yang sempurna. Terdapat rintangan pada konduktor, bunyi dari sumber luar, dan daya yang tidak sempurna. Oleh itu, untuk memberi saya banyak kelonggaran, saya merancang untuk merancang ini dengan 6 butang. Ini, sebahagiannya, dipengaruhi oleh fakta bahawa TinkerCAD Circuits mempunyai objek 6-Switch DIP Switch, yang akan memudahkan pengujian.

Langkah pertama dalam reka bentuk saya adalah memastikan bahawa setiap butang, apabila ditekan secara individu, akan memberikan voltan yang unik. Ini menolak semua perintang adalah nilai yang sama. Langkah seterusnya adalah bahawa nilai rintangan, jika ditambahkan secara selari, tidak dapat memiliki rintangan yang sama dengan nilai perintang tunggal. Apabila perintang disambungkan secara selari, rintangan yang dihasilkan dapat dikira dengan Rx = 1 / [(1 / R1) + (1 / R2)]. Jadi, jika R1 = 2000 dan R2 = 1000, Rx = 667. Saya berspekulasi bahawa dengan menggandakan ukuran setiap perintang, saya tidak akan melihat rintangan yang sama untuk mana-mana kombinasi.

Oleh itu, litar saya pada tahap ini mempunyai 6 suis, masing-masing dengan perintangnya sendiri. Tetapi, ada satu lagi perintang yang diperlukan untuk menyelesaikan litar ini.

Perintang terakhir mempunyai 3 tujuan. Pertama, ia berfungsi sebagai perintang Pull-Down. Tanpa perintang, apabila tiada butang ditekan, litar tidak lengkap. Ini akan membolehkan voltan pada Input Analog Arduino mengambang ke potensi voltan. Perintang Pull-Down pada dasarnya Menarik voltan ke 0 V. Tujuan kedua adalah untuk menghadkan arus litar ini. Undang-undang Ohm menyatakan bahawa V = IR, atau Voltan = Semasa dikalikan dengan Rintangan. Dengan sumber voltan yang diberikan, semakin besar perintang bermaksud arus akan lebih kecil. Jadi, jika isyarat 5V diterapkan pada perintang 500ohm, arus terbesar yang dapat kita lihat ialah 0.01A, atau 10mA. Tujuan Ketiga adalah untuk memberikan voltan isyarat. Jumlah arus yang mengalir melalui perintang terakhir ialah: i = 5V / Rtotal, di mana Rtotal = Rlast + {1 / [(1 / R1) + (1 / R2) + (1 / R3) + (1 / R4) + (1 / R5) + (1 / R6)]}. Namun, hanya sertakan 1 / Rx untuk setiap Resistor yang ditekan butang yang sesuai. Dari arus keseluruhan, Voltan yang dibekalkan ke Input Analog adalah i * Rlast, atau i * 500.

Langkah 2: Bukti - Excel

Bukti - Excel
Bukti - Excel

Cara terpantas dan termudah untuk membuktikan bahawa saya akan mendapat rintangan unik dan dengan itu voltan unik dengan litar ini adalah dengan menggunakan kemampuan Excel.

Saya menyediakan semua kemungkinan kombinasi input suis dan menyusunnya mengikut corak binari secara berurutan. Nilai "1" menunjukkan bahawa suis dihidupkan, kosong menunjukkan ia mati. Di bahagian atas spreadsheet, saya memasukkan nilai rintangan untuk setiap suis dan untuk perintang penarik. Saya kemudian mengira rintangan setara untuk setiap kombinasi, kecuali ketika semua perintang dimatikan kerana perintang ini tidak akan memberi kesan tanpa sumber kuasa membekalkannya. Untuk membuat pengiraan saya mudah sehingga saya dapat menyalin dan menampal ke setiap kombinasi, saya memasukkan semua kombinasi dalam pengiraan dengan mengalikan setiap nilai suis (0 atau 1) dengan nilai rintangan terbalik. Melakukannya menghilangkan ketahanannya dari pengiraan jika suis dimatikan. Persamaan yang dihasilkan dapat dilihat pada gambar spreadsheet, tetapi Req = Rx + 1 / (Sw1 / R1 + Sw2 / R2 + Sw3 / R3 + Sw4 / R4 + Sw5 / R5 + Sw6 / R6). Dengan menggunakan Itotal = 5V / Req, kami menentukan jumlah arus melalui litar. Ini adalah arus yang sama yang melalui resistor Pull-down, dan memberi kita Voltan ke Input Analog kita. Ini dikira sebagai Vin = Itotal x Rx. Meneliti data Req dan data Vin, kita dapat melihat bahawa kita memang mempunyai nilai yang unik.

Pada ketika ini, nampaknya litar kita akan berfungsi. Sekarang untuk mengetahui cara memprogram Arduino.

Langkah 3: Pengaturcaraan Arduino

Pengaturcaraan Arduino
Pengaturcaraan Arduino
Pengaturcaraan Arduino
Pengaturcaraan Arduino
Pengaturcaraan Arduino
Pengaturcaraan Arduino

Ketika saya mula memikirkan cara memprogram Arduino, pada mulanya saya merancang untuk menetapkan julat voltan individu untuk menentukan sama ada suis dihidupkan atau dimatikan. Tetapi, ketika berbaring di tempat tidur pada suatu malam, saya terfikir bahawa saya dapat mencari persamaan untuk melakukan ini. Bagaimana? EXCEL. Excel mempunyai keupayaan untuk mengira persamaan agar sesuai dengan data dalam carta. Untuk melakukan ini, saya mahukan persamaan Nilai Integer suis (binari) berbanding input voltan yang sepadan dengan nilai itu. Dalam Buku Kerja Excel saya, saya meletakkan Nilai Integer di sebelah kiri hamparan. Sekarang untuk menentukan persamaan saya.

Berikut adalah tutorial ringkas bagaimana menentukan persamaan garis dalam Excel.

1) Pilih sel yang tidak mengandungi data. Sekiranya anda memilih sel yang mempunyai data, Excel akan cuba meneka apa yang anda mahu kecenderungan. Ini menjadikannya lebih sukar untuk mengatur tren, kerana Excel jarang membuat ramalan dengan betul.

2) Pilih tab "Masukkan" dan Pilih carta "Penyebaran".

3) Klik Kanan di kotak carta dan klik pada "Pilih Data…". Ini akan muncul tetingkap "Pilih Sumber Data". Pilih butang Tambah untuk terus memilih data.

4) Beri Nama Siri (Pilihan). Pilih Julat untuk Paksi-X dengan mengklik anak panah ke atas dan kemudian memilih data Voltan. Pilih Julat untuk Paksi-Y dengan mengklik anak panah ke atas dan kemudian memilih Data Integer (0-63).

5) Klik kanan pada titik data dan Pilih "Tambah Trendline …" Pada tetingkap "Format Trendline", pilih butang Polynomial. Melihat tren, kita melihat bahawa Order of 2 tidak begitu sepadan. Saya memilih Pesanan 3 dan merasakan ini lebih tepat. Pilih kotak pilihan untuk "Persamaan Paparan pada carta". Persamaan terakhir sekarang dipaparkan pada carta.

6) Selesai.

OKEY. Kembali ke program Arduino. Sekarang kita mempunyai persamaan, memprogram Arduino adalah mudah. Integer yang mewakili kedudukan suis dikira dalam 1 baris kod. Dengan menggunakan fungsi "bitread", kita dapat mengambil nilai setiap bit individu dan dengan itu mengetahui keadaan setiap butang. (LIHAT FOTO)

Langkah 4: Litar TinkerCAD

Litar TinkerCAD
Litar TinkerCAD

Sekiranya anda belum memeriksa Litar TinkerCAD, lakukan sekarang. TUNGGU !!!! Selesaikan membaca Instructable saya, dan kemudian periksa. TinkerCAD Circuits menjadikan pengujian litar Arduino sangat mudah. Ia merangkumi beberapa objek elektrik dan Arduino, bahkan membolehkan anda memprogram Arduino untuk ujian.

Untuk menguji litar saya, saya menyediakan 6 suis dengan menggunakan pek suis DIP dan mengikatnya ke perintang. Untuk membuktikan bahawa nilai voltan dalam Spreadsheet Excel saya betul, saya menunjukkan voltmeter pada Input ke Arduino. Ini semua berjalan seperti yang diharapkan.

Untuk membuktikan bahawa Pengaturcaraan Arduino berfungsi, saya mengeluarkan keadaan beralih ke LED, menggunakan output digital Arduino.

Saya kemudian menukar setiap suis untuk setiap kombinasi yang mungkin dan dengan bangga mengatakan "IT BEKERJA" !!!

Langkah 5: "Begitu lama, dan Terima kasih untuk Semua Ikan." (ruj.1)

Saya masih belum mencuba ini dengan menggunakan peralatan sebenar, kerana saya kini dalam perjalanan untuk bekerja. Tetapi, setelah membuktikannya dengan TinkerCAD Circuits, saya percaya ia akan berjaya. Cabarannya adalah bahawa nilai perintang yang saya nyatakan tidak semua nilai standard untuk perintang. Untuk mengatasi ini, saya merancang untuk menggunakan potensiometer dan kombinasi perintang untuk mendapatkan nilai yang saya perlukan.

Terima kasih kerana membaca arahan saya. Saya harap ia dapat membantu projek anda.

Tinggalkan komen sekiranya anda telah berusaha mengatasi halangan yang sama dan bagaimana anda menyelesaikannya. Saya ingin belajar lebih banyak cara untuk melakukan ini.

Langkah 6: Rujukan

Anda tidak menyangka saya akan memberikan petikan tanpa memberikan rujukan kepada sumbernya, kan?

rujukan 1: Adams, Douglas. Begitu lama, dan Terima kasih untuk Semua Ikan. (Buku ke-4 Panduan Hitchhiker untuk Galaxy "trilogi")

Disyorkan: