Isi kandungan:

Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: 4 Langkah
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: 4 Langkah

Video: Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: 4 Langkah

Video: Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED: 4 Langkah
Video: ESP32 Turorial 1 - Introduction to SunFounder's ESP32 IoT Learnig kit Software and Arduino IDE 2024, November
Anonim
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED
Uji Bare Arduino, Dengan Perisian Permainan Menggunakan Input Kapasitif & LED

Permainan Push-It Interaktif menggunakan papan Arduino yang kosong, tidak diperlukan bahagian luaran atau pendawaian (menggunakan input 'sentuhan' kapasitif). Ditunjukkan di atas, menunjukkan bahawa ia berjalan di dua papan yang berbeza.

Push-Ia mempunyai dua tujuan.

  1. Untuk menunjukkan / mengesahkan dengan cepat bahawa papan Arduino anda berfungsi dan anda telah disiapkan dengan betul untuk memuat turun lakaran kod baru kepadanya. Anda dapat melihat bahawa ia melakukan input dan output (aras input digital, output ke LED on board); simpan dan pulihkan nilai dari memori EEPROM yang tidak mudah berubah. Semua tanpa memasang wayar atau peranti.
  2. Sediakan permainan yang menghiburkan dan mencabar berinteraksi dengan papan Arduino.

Ini boleh diandaikan bahawa anda sudah memasang Arduino IDE dan paling tidak biasa dengan penggunaannya. Sekiranya tidak, saya merujuk anda ke pautan berikut:

Bermula dengan Arduino

Menambah sokongan Digispark (dengan bootloader) ke Arduino 1.6.x IDE yang ada

Push-It akan berfungsi dengan kebanyakan papan Arduino, mis. papan Nano, Uno, atau DigiSpark Attiny85. Saya telah mengujinya dengan Nano 3.1 dan DigiSpark. Dalam teks apabila saya merujuk kepada nama / nombor pin, ia akan digunakan seperti di papan Nano (berbanding dengan DigiSpark).

Langkah 1: Mempunyai Perkara yang Anda Perlu

Mana-mana papan Arduino atau setanding.

Sekiranya anda belum memilikinya, saya cadangkan untuk memulakan dengan DigiSpark Pro (~ $ 12), atau Nano 3.0 dari eBay dengan harga ~ $ 3 (tetapi anda akan mempunyai satu atau dua minggu lagi untuk menunggu ia datang dari China; dan anda perlu memasang pemacu USB CH340). DigiSpark ~ $ 10 (bukan Pro) sangat sesuai untuk permainan 'video' bit tunggal ini (Unit yang dilucutkan ini, dengan hanya 6 I / Os, agak sukar untuk dimuat naik ke)

Pautan ke perkakasan yang digunakan di sini:

Nano V3.0 Atmega328P di eBay

Lembaga Pembangunan USB Digispark

Langkah 2: Ambil dan Muat turun Kod

Ambil dan Muat turun Kod
Ambil dan Muat turun Kod

Salin kod di bawah ini ke dalam fail sketsa arduino (mis.… / Push_It / Push_It.ino) Saya telah cuba memberikan komen dengan cukup baik. Saya harap kod anda mudah difahami. Logik untuk menentukan kapan perlu meningkat, menurun dan kapan tidak agak rumit, tetapi bahagian itu juga merupakan kod khusus dan tidak berguna umum. Untuk maklumat lebih lanjut mengenai penyediaan 'sketsa' (projek kod) baru untuk digunakan Arduino IDE lihat:

Membuat Lakaran Arduino Baru

Muat turun lakaran 'Push_It' ke mikrokontroler kami mengikut arahan Arduino IDE untuk papan anda.

Langkah 3: Bermain

Bermain
Bermain

Matlamat permainan ini adalah agar LED (on-board) berkedip sekerap mungkin dalam satu set kilat yang kemudian berulang

Memainkan permainan:

Push-Ia dimulakan dengan satu kilat, yang kemudian akan berulang. Sekiranya anda menyentuh jari anda di dekat pin input semasa LED menyala, kitaran seterusnya akan menyalakan LED dua kali.

Setiap kali anda menekan butang pseudo semasa kilatan pertama satu set kilat, satu lagi kilatan akan ditambahkan ke set tersebut. Secara amnya tidak menjadi masalah ketika anda mengangkat / mengeluarkan jari anda.

Tetapi jika anda 'menekan' sebelum atau selepas kilat pertama, jumlah kilatan dalam satu set akan dikurangkan.

Sekiranya anda tidak melakukan apa-apa lagi, jumlah kilatan dalam satu set dikekalkan. Selanjutnya apabila kiraan tidak berubah untuk satu kitaran penuh, bilangan kiraan disimpan ke dalam memori EEPROM.

Setiap kali anda berjaya meningkatkan jumlah kilat, waktunya mempercepat sedikit, menjadikannya lebih sukar dan sukar untuk mendapatkan jumlah kilat yang tinggi. Apabila anda membuat slip dan jumlah kilatan berkurang akan ada jeda yang lebih lama sebelum kilat permulaan kitaran seterusnya. Ini memberikan cabaran tambahan, kerana ini dapat meningkatkan kemungkinan anda melompat senjata. Oleh itu, berjaga-jaga.

Sebaik sahaja anda mendapatkan unit anda sehingga jumlah kilat yang tinggi, anda boleh membawanya (atau menghantarnya, yang mana DigiSpark bagus) kepada rakan, di mana setelah memasangnya, mereka akan melihat seberapa tinggi jumlah kilat yang anda miliki. ke. Saya merasa sukar untuk mendapatkannya sehingga lebih daripada 8. Dengan butang sebenar yang terpasang, saya berjaya mendapatkannya sehingga lebih dari selusin. Untuk kembali ke kiraan yang lebih rendah, anda boleh menekannya berulang kali pada bila-bila masa sebelum atau selepas kilatan pertama. Juga jika anda melonjakkan pin input ke tanah semasa power up, kiraan akan diset semula ke 1.

Perhatikan bahawa papan DigiSpark yang asal mempunyai kelewatan 10 saat setelah dihidupkan sebelum ia akan mula melakukan kod 'Push-It' dan bermain permainan. Ia menggunakan masa ini untuk cuba bercakap melalui pin USB untuk menerima kemungkinan kemas kini kod muat turun baru.

Sekiranya papan Arduino yang anda gunakan mempunyai LED USB TX di atasnya, LED ini akan mempunyai kilat kecil yang cepat apabila anda telah 'menekan butang' dengan berkesan. Terdapat kilatan LED yang lebih ketara apabila nilai kiraan di EEPROM dikemas kini dengan nilai baru. Maklum balas ini dapat membantu anda dalam mengetahui kapan atau memastikan bahawa anda telah dengan berkesan mencetuskan peristiwa 'tekan butang'. Anda mungkin perlu memastikan bahawa anda tidak menyentuh tanah litar (seperti logam di sekitar penyambung mikro-USB) sehingga gambar anda memang menimbulkan kebisingan pada pin input terbuka. Akan ada cabaran tambahan dan agak tidak dapat diramalkan kerana kenyataan bahawa pin input melayang (tidak ditarik ke atas atau ke bawah oleh beban konduktif / resistif) dan kebisingan isyarat berubah melalui jari anda.

Gelombang persegi 250Hz dikeluarkan ke pin di sebelah pin input yang sangat meningkatkan kepastian isyarat input yang disuntikkan apabila jari anda menutup kedua pin.

Saya dapati tindak balas papan DigiSpark dapat diramalkan secara konsisten terhadap sedikit kepingan jari ke sudut papan tempat D3-D5 berada.

Semasa bermain 'Push-It', saya suka melakukannya dengan papan yang disambungkan ke pek bateri mudah alih USB 5v (lihat foto). Ini biasanya boleh didapati dengan murah di tong bersebelahan dengan penyesuai automatik USB AC dan 12v; di kebanyakan mana-mana gedung elektronik.

Langkah 4: Eksperimen Pilihan Dengan Komponen Luaran

Percubaan Pilihan Dengan Komponen Luaran
Percubaan Pilihan Dengan Komponen Luaran

Sila ambil perhatian: Jika anda melampirkan butang nyata ada satu baris kod yang perlu dikomentari, seperti yang dinyatakan dalam kod tersebut.

Dengan pembesar suara, dari satu sisi ke tanah, jika anda menyentuh hala yang lain ke D4, anda akan mendengar bunyi gelombang persegi 250 Hz. Pada D3 terdapat gelombang persegi 500Hz. Sekiranya anda menyambungkan pembesar suara antara D3 dan D4, anda akan mendengar gabungan dua isyarat.

Menyambungkan LED dan bukannya pembesar suara seperti di atas sangat menarik. Tidak perlu bimbang tentang voltan, tahap arus, resis, atau bahkan kekutuban untuk perkara itu (lebih buruk ia tidak menyala, maka putar saja). Cuba, pertama sekali, dengan plumbum negatif (katod) bersambung ke tanah dan yang lain ke D3 atau D4. LED akan menyala 'setengah', kerana gelombang persegi. Selanjutnya tidak diperlukan resister kerana keluaran MicroControllerUnits terhad semasa ini. Saya membuat pengukuran semasa menghasilkan masing-masing 15ma dan 20ma untuk MCU Attiny85 dan Atmega328. Tahap ini adalah kira-kira separuh daripada nilai terhad semasa untuk bahagian-bahagian ini kerana sifat kitaran tugas 50% dari isyarat gelombang persegi. Pembacaan meter sebenarnya adalah arus semasa melalui litar yang diuji.

Menariknya, jika anda menjembatani antara D3 & D4 dengan LED (lihat gambar di atas dan ke kiri) ia akan menyala dengan baik, dan pada sekitar ½ kecerahan seperti yang berlaku dengan satu sisi yang terhubung ke tanah. Saya menjemput anda untuk memikirkan mengapa.

Disyorkan: