Saya sedang melakukan beberapa proyek dan saya menggunakan Arduino untuk prototipe, saya harus menggunakan 10 tombol (bersama dengan lebih banyak hal) dan saya tidak memiliki cukup pin.
Salah satu solusi yang dapat saya pikirkan adalah dengan menggunakan pin analog dan menggunakan masing-masing untuk dua tombol, seperti ini:
mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab
Dengan begitu saya bisa membaca pin A0 dan tahu yang mana dari mereka didorong dengan melihat apakah tegangannya 5V atau setengahnya.
Apakah ini ide yang bagus? Berbagai tombol yang ditekan TIDAK PERNAH seharusnya didorong pada saat bersamaan, yang merupakan satu-satunya masalah yang dapat saya pikirkan.
Apakah ada cara yang lebih baik?
Jawaban:
Mengapa membuang beberapa pin analog untuk masing-masing dua sakelar, ketika Anda bisa melakukan sejumlah tombol pada pin analog tunggal?
Dua cara melakukannya. Satu dalam seri, lainnya paralel.
Ini adalah bagaimana beberapa kontrol audio setir mobil. Dan bagaimana beberapa pengendali inline ipod yang lebih lama bekerja.
Bergantung pada resistor yang Anda gunakan, jika Anda perlu menekan beberapa tombol secara bersamaan, dan seberapa sensitif analog Anda, Anda dapat memiliki semua 10 tombol pada satu pin.
sumber
Itu akan berhasil, tetapi cara yang lebih baik adalah dengan matriks . Ini adalah konsep yang sama dengan LED multiplexing dengan matriks, tetapi dengan sakelar.
Ini adalah matriks 2x2. Matriks yang berguna lebih besar, karena pada ukuran ini, Anda tidak menyimpan pin apa pun dari menghubungkan switch secara individual.
Dengan matriks 3x3 Anda bisa mendapatkan 9 switch. Anda memerlukan 10, sehingga Anda dapat menambahkan satu baris atau satu kolom lagi dan mendukung 12 switch, atau cukup meletakkan switch ke-10 pada pinnya sendiri.
Keuntungannya di sini adalah Anda dapat menggunakan IO digital, yang lebih murah dan biasanya lebih banyak daripada IO analog. Daftar shift adalah cara murah untuk menambahkan lebih digital IO, jika Anda kehabisan.
Jika Anda menginginkan pin yang lebih sedikit lagi, Anda dapat, untuk beberapa peningkatan kompleksitas, menggunakan charlieplexing . Anda harus menambahkan dioda sebagai tambahan untuk sakelar Anda, dan dioda ini mungkin berharga sebanyak register geser. Namun, jika biaya bukan urusan utama Anda, maka itu mungkin memiliki beberapa keuntungan. Dengan metode ini, Anda bisa membaca semua switch Anda (hingga 12, sebenarnya) dengan empat pin.
sumber
Input analog adalah pendekatan yang valid, Anda harus dapat memiliki beberapa tombol di atasnya. Saya juga ingin menyarankan menggunakan chip IO Expander seperti MCP23017 . Ini memiliki 16 pin yang dapat menjadi input adalah output dan dikontrol dengan I2C menggunakan dua pin. Adafruit memiliki perpustakaan Arduino untuk itu.
sumber
Ya, itu sepertinya ide yang bagus, tetapi saya akan mengusulkan alternatif yang baru saja muncul di benak saya.
Jika Anda memiliki akses ke gerbang logika, Anda bisa memetakan banyak
n
tombol keceil(log2(n + 1))
pin melalui logika boolean. Sebagai contoh, jika Anda memiliki 4 tombol, tetapi hanya 2 pin Anda dapat membuat konfigurasi seperti ini:Artinya,
button0
harus ditekanpin0
danpin1
rendah;button1
,pin0
rendah danpin1
tinggi;button2
,pin0
tinggipin1
rendah; danbutton3
,pin0
danpin1
tinggi.Dari sini ekspresi boolean berikut akan muncul
Dengan demikian pemetaan 4 tombol menjadi 2 pin dapat direalisasikan hanya dengan 2 gerbang OR. Anda akan memerlukan pin tambahan dan beberapa logika tambahan, untuk menunjukkan apakah ada tombol yang ditekan.
Tentu saja, masih akan ada masalah jika beberapa tombol ditekan secara bersamaan.
Juga, jika Anda masih akan pergi dengan pendekatan resistor, pertimbangkan untuk menggunakan nilai yang lebih besar pada resistor lain yang 100 ohm sejak 5 V melalui resistor pada urutan 100-an ohm akan menghasilkan arus pada urutan 10-an mA yang merupakan jenis dari tinggi yang tidak perlu. Saya kira nilai yang lebih masuk akal adalah 10k Ohm atau 47k Ohm.
sumber
Halaman berikut mungkin bermanfaat:
http://txapuzas.blogspot.co.uk/2010/07/papertecladoanalogico-varios-pulsadores.html
Itu ditulis dalam bahasa Spanyol, tetapi esensi digambarkan, saya pikir itu ide yang sangat bagus untuk Anda.
Pada video ini Anda dapat melihat hasil akhirnya, sketsanya ada di halaman juga, dienkapsulasi fungsinya untuk memudahkan implementasi proyek Anda
Video Youtube: 10 tombol keyboard pada satu pin
Berikut ini skema dari situs di atas:
sumber