Daftar Isi:

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

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

Video: Gunakan 1 Input Analog untuk 6 Tombol untuk Arduino: 6 Langkah
Video: BELAJAR ARDUINO #106 - Banyak Pushbutton VS Satu Pin Analog 2024, Juli
Anonim
Gunakan 1 Input Analog untuk 6 Tombol untuk Arduino
Gunakan 1 Input Analog untuk 6 Tombol untuk Arduino

Saya sering bertanya-tanya bagaimana saya bisa mendapatkan lebih banyak Input Digital untuk Arduino saya. Baru-baru ini terpikir oleh saya bahwa saya harus dapat menggunakan salah satu Input Analog untuk memasukkan beberapa input digital. Saya melakukan pencarian cepat dan menemukan di mana orang dapat melakukan ini, tetapi ini hanya memungkinkan satu tombol untuk ditekan pada satu waktu. Saya ingin dapat memiliki kombinasi tombol apa pun untuk ditekan SECARA SIMULTAN. Jadi, dengan bantuan TINKERCAD CIRCUITS, saya mulai mewujudkannya.

Mengapa saya ingin menekan tombol secara bersamaan? Seperti yang diilustrasikan dalam desain Sirkuit TinkerCad, ini dapat digunakan untuk input sakelar DIP untuk pemilihan mode yang berbeda dalam program.

Rangkaian yang saya buat menggunakan sumber 5V yang tersedia dari Arduino dan menggunakan 7 resistor dan 6 tombol atau sakelar.

Langkah 1: Sirkuit

Sirkuit
Sirkuit

Arduino memiliki input analog yang menerima input 0V hingga 5V. Input ini memiliki resolusi 10-bit, yang berarti sinyal dipecah menjadi 2^10 segmen, atau 1024 hitungan. Berdasarkan hal ini, sebagian besar yang dapat kami masukkan ke input analog sambil memungkinkan penekanan simultan adalah 10 tombol ke 1 input analog. Tapi, ini bukan dunia yang sempurna. Ada hambatan dalam konduktor, kebisingan dari sumber luar, dan daya yang tidak sempurna. Jadi, untuk memberi saya banyak fleksibilitas, saya berencana mendesain ini untuk 6 tombol. Ini, sebagian, dipengaruhi oleh fakta bahwa Sirkuit TinkerCAD memiliki objek DIP Switch 6-Switch, yang akan membuat pengujian menjadi mudah.

Langkah pertama dalam desain saya adalah memastikan bahwa setiap tombol, ketika ditekan satu per satu, akan memberikan tegangan yang unik. Ini mengesampingkan semua resistor menjadi nilai yang sama. Langkah selanjutnya adalah bahwa nilai resistansi, ketika ditambahkan secara paralel, tidak dapat memiliki resistansi yang sama dengan nilai resistor tunggal mana pun. Ketika resistor dihubungkan secara paralel, resistansi yang dihasilkan dapat dihitung dengan Rx=1/[(1/R1)+(1/R2)]. Jadi, jika R1=2000 dan R2=1000, Rx=667. Saya berspekulasi bahwa dengan menggandakan ukuran setiap resistor, saya tidak akan melihat resistansi yang sama untuk kombinasi mana pun.

Jadi, rangkaian saya sampai saat ini adalah memiliki 6 sakelar, masing-masing dengan resistornya sendiri. Tapi, ada satu resistor lagi yang dibutuhkan untuk menyelesaikan rangkaian ini.

Resistor terakhir memiliki 3 tujuan. Pertama, ia bertindak sebagai resistor Pull-Down. Tanpa resistor, ketika tidak ada tombol yang ditekan, rangkaian tidak lengkap. Ini akan memungkinkan tegangan pada Input Analog Arduino mengapung ke potensi tegangan apa pun. Sebuah resistor Pull-Down pada dasarnya Menarik tegangan ke 0 V. Tujuan kedua adalah untuk membatasi arus dari rangkaian ini. Hukum Ohm menyatakan bahwa V = IR, atau Tegangan = Arus dikalikan dengan Resistansi. Dengan sumber tegangan yang diberikan, semakin besar resistor berarti arus akan semakin kecil. Jadi, jika sinyal 5V diterapkan ke resistor 500ohm, arus terbesar yang bisa kita lihat adalah 0,01A, atau 10mA. Tujuan ketiga adalah untuk memberikan tegangan sinyal. Arus total yang mengalir melalui resistor terakhir adalah: 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 tombolnya terkait ditekan. Dari total arus, Tegangan yang dipasok ke Input Analog adalah i*Rlast, atau i*500.

Langkah 2: Bukti - Excel

Bukti - Excel
Bukti - Excel

Cara tercepat dan termudah untuk membuktikan bahwa saya akan mendapatkan resistansi unik dan voltase unik dengan sirkuit ini adalah dengan menggunakan kemampuan Excel.

Saya mengatur semua kemungkinan kombinasi input sakelar dan mengatur pola biner berikut ini secara berurutan. Nilai "1" menunjukkan bahwa sakelar hidup, kosong menunjukkan sakelar mati. Di bagian atas spreadsheet, saya memasukkan nilai resistansi untuk setiap sakelar dan untuk resistor pull-down. Saya kemudian menghitung resistansi ekivalen untuk masing-masing kombinasi, kecuali ketika semua resistor dimatikan karena resistor ini tidak akan berpengaruh tanpa memiliki sumber daya yang memasoknya. Untuk mempermudah perhitungan saya sehingga saya dapat menyalin dan menempelkan ke setiap kombinasi, saya memasukkan semua kombinasi dalam perhitungan dengan mengalikan setiap nilai sakelar (0 atau 1) dengan nilai resistansi terbaliknya. Melakukannya menghilangkan hambatannya dari perhitungan jika sakelar 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). Menggunakan Itotal = 5V / Req, kami menentukan arus total yang melalui rangkaian. Ini adalah arus yang sama yang melewati resistor Pull-down, dan memberi kita Tegangan ke Input Analog kita. Ini dihitung sebagai Vin = Itotal x Rx. Memeriksa data Req dan data Vin, kita dapat melihat bahwa kita memang memiliki nilai unik.

Pada titik ini, tampaknya sirkuit kami akan berfungsi. Sekarang untuk mengetahui bagaimana memprogram Arduino.

Langkah 3: Pemrograman Arduino

Pemrograman Arduino
Pemrograman Arduino
Pemrograman Arduino
Pemrograman Arduino
Pemrograman Arduino
Pemrograman Arduino

Ketika saya mulai berpikir tentang cara memprogram Arduino, awalnya saya berencana untuk mengatur rentang tegangan individu untuk menentukan apakah sakelar hidup atau mati. Tetapi, ketika berbaring di tempat tidur suatu malam, terpikir oleh saya bahwa saya harus dapat menemukan persamaan untuk melakukan ini. Bagaimana? UNGGUL. Excel memiliki kemampuan untuk menghitung persamaan agar paling sesuai dengan data dalam bagan. Untuk melakukan ini, saya akan menginginkan persamaan Nilai Integer dari sakelar (biner) versus input tegangan yang sesuai dengan nilai itu. Di Buku Kerja Excel saya, saya meletakkan Nilai Integer di sisi kiri spreadsheet. Sekarang untuk menentukan persamaan saya.

Berikut adalah tutorial singkat tentang cara menentukan persamaan garis di dalam Excel.

1) Pilih sel yang tidak berisi data apa pun. Jika Anda memiliki sel yang dipilih yang memiliki data, Excel akan mencoba menebak apa yang ingin Anda tren. Ini membuatnya jauh lebih sulit untuk mengatur tren, karena Excel jarang memprediksi dengan benar.

2) Pilih tab "Sisipkan" dan Pilih bagan "Menyebar".

3) Klik Kanan pada kotak grafik dan klik "Select Data…". Ini akan memunculkan jendela "Pilih Sumber Data". Pilih tombol Tambah untuk melanjutkan memilih data.

4) Berikan Nama Seri (Opsional). Pilih Range untuk X-Axis dengan mengklik panah atas dan kemudian memilih data Voltage. Pilih Range untuk Sumbu Y dengan mengklik panah ke atas lalu pilih Data Integer (0-63).

5) Klik Kanan pada titik data dan Pilih "Add Trendline…" Di jendela "Format Trendline", pilih tombol Polinomial. Melihat tren, kami melihat bahwa Order of 2 tidak cukup cocok. Saya memilih Order of 3 dan merasa ini jauh lebih akurat. Pilih kotak centang untuk "Tampilkan Persamaan pada bagan". Persamaan terakhir sekarang ditampilkan pada grafik.

6) Selesai.

OKE. Kembali ke program Arduino. Sekarang kita memiliki persamaan, memprogram Arduino menjadi mudah. Integer yang mewakili posisi switch dihitung dalam 1 baris kode. Dengan menggunakan fungsi "bitread", kita dapat mengambil nilai setiap bit individu dan dengan demikian mengetahui status setiap tombol. (LIHAT FOTO)

Langkah 4: Sirkuit TinkerCAD

Sirkuit TinkerCAD
Sirkuit TinkerCAD

Jika Anda belum memeriksa Sirkuit TinkerCAD, lakukan sekarang. TUNGGU!!!! Selesaikan membaca Instructable saya, lalu periksa. Sirkuit TinkerCAD membuat pengujian sirkuit Arduino sangat mudah. Ini mencakup beberapa objek listrik dan Arduino, bahkan memungkinkan Anda untuk memprogram Arduino untuk pengujian.

Untuk menguji sirkuit saya, saya mengatur 6 sakelar dengan menggunakan paket sakelar DIP dan mengikatnya ke resistor. Untuk membuktikan bahwa nilai tegangan di Excel Spreadsheet saya sudah benar, saya menampilkan voltmeter di Input ke Arduino. Ini semua bekerja seperti yang diharapkan.

Untuk membuktikan bahwa Pemrograman Arduino berfungsi, saya menampilkan status sakelar ke LED, menggunakan output digital Arduino.

Saya kemudian mengganti setiap sakelar untuk setiap kombinasi yang mungkin dan dengan bangga mengatakan "ITU BEKERJA"!!!

Langkah 5: "Begitu Lama, dan Terima Kasih untuk Semua Ikan." (ref.1)

Saya belum mencoba ini menggunakan peralatan nyata, karena saya sedang bepergian untuk bekerja. Tapi, setelah membuktikannya dengan Sirkuit TinkerCAD, saya yakin itu akan berhasil. Tantangannya adalah nilai resistor yang saya tentukan tidak semuanya nilai standar untuk resistor. Untuk menyiasatinya, saya berencana menggunakan potensiometer dan kombinasi resistor untuk mendapatkan nilai yang saya butuhkan.

Terima kasih telah membaca instruksi saya. Saya harap ini membantu Anda dengan proyek Anda.

Silakan tinggalkan komentar jika Anda telah mencoba mengatasi kendala yang sama ini dan bagaimana Anda menyelesaikannya. Saya ingin mempelajari lebih banyak cara untuk melakukan ini.

Langkah 6: Referensi

Anda tidak berpikir saya akan memberikan kutipan tanpa memberikan referensi ke sumbernya bukan?

ref. 1: Adam, Douglas. Begitu Lama, dan Terima Kasih untuk Semua Ikan. (Buku ke-4 dari Hitchhiker's Guide to the Galaxy "trilogi")

Direkomendasikan: