Semuanya dimulakan dengan permainan kecil dari zaman kegelapan yang disebut "Mario", sejak dari menjadi seorang lelaki kecil yang melompat ke atas itik untuk menyelamatkan puteri saya sehingga menjadi Putera tampan maskulin yang berkeliaran di Parsi (Putera Parsi) yang memerangi kegelapan untuk menyelamatkan dunia saya di belakang saya telah menjadi peminat besar bermain permainan video dan saya membesar bermain mereka. Tetapi mereka kadang-kadang bosan dan saya merasa kurang terlibat dengannya. Hari ini, konsol permainan canggih membolehkan permainan maya dan membantu kita merasakan permainan jauh lebih baik daripada papan kekunci atau tetikus.
Menjadi Penggemar Arduino, saya bosan bermain permainan terkenal bernama "Angry Birds" menggunakan papan kekunci & tetikus dan memutuskan untuk membina Pengawal Permainan saya sendiri menggunakan Flex Sensor dan Potentiometer. Semasa sensor flex ditarik, burung di ketapel juga akan ditarik dan anda boleh menggunakan potensiometer untuk menetapkan arah di mana ia harus dilancarkan. Kemudian apabila anda melepaskan sensor flex, burung akan dilancarkan. Saya sangat seronok melakukannya, jadi jika anda ingin membina sesuatu yang serupa, tutorial ini akan sangat membantu. Tutorial ini juga akan membantu dalam Mengendalikan Kursor Tetikus menggunakan Potentiometer.
Keperluan Perisian dan Perkakasan:
Perisian:
- Arduino IDE
- Memproses IDE
- Permainan Angry Birds di Komputer
Perkakasan:
- Arduino (Sebarang Versi)
- Potensiometer
- Sensor Flex
- Perintang 47K ohm
- Wayar Penyambung
- Papan roti
Konsep Di Sebalik:
The Lembaga Arduino berbunyi nilai dari Potentiometer dan Flex Senor dan menghantar mereka kepada Laptop / PC melalui port COM USB melalui normal (Serial.write) fungsi. Kami kemudian membaca maklumat ini menggunakan Pemprosesan dan mengawal kursor tetikus menggunakan kelas Robot di Java yang disokong oleh pemprosesan IDE. Kami telah memprogram IDE pemrosesan sedemikian rupa sehingga ketika sensor Flex ditarik, klik tetikus akan dibuat dan berdasarkan berapa banyak yang ditarik, penunjuk tetikus akan bergerak ke arah X. Kemudian berdasarkan nilai dari potensiometer kita akan menggerakkan kursor tetikus ke arah Y, dengan cara ini kita dapat mengatur arah di mana burung harus dilancarkan.
Rajah Litar:
Litar untuk memainkan Angry Bird menggunakan Flex Sensor dan Potentiometer adalah mudah.
Kami telah menghubungkan potensiometer dan sensor fleksibel dengan input Analog (A0, A1) Arduino. Keluaran sensor Flex juga ditarik ke bawah menggunakan resistor tarik turun 47K.
Anda boleh menghubungkannya secara langsung di papan roti atau menyoldernya ke papan Perf dan memasangnya di sarung tangan atau sesuatu untuk menjadikannya lebih kreatif. Saya hanya menggunakan papan roti untuk membuat sambungan seperti yang ditunjukkan di bawah:
Program Arduino:
Kod Arduino yang lengkap diberikan pada akhir tutorial. Beberapa garis penting dijelaskan di bawah.
Kami memulakan program agar berfungsi dengan kadar baud 9600 dan mula membaca nilai dari sensor Flex dan Potentiometer. Seperti yang kita ketahui, fungsi serial.write () hanya dapat menghantar satu bait data pada satu masa. Oleh kerana Satu bait adalah 8 bit dan 2 ^ 8 = 256. Kami akan dapat mengirim nilai dari 0 hingga 256. Oleh itu, kita harus memampatkan nilai output sensor Flex dan Output Potentiometer menjadi 0 hingga 256.
Untuk melakukan itu, kami menggunakan fungsi peta () di Arduino. Semua nilai dari sensor lentur ditukar dari 5 hingga 100, jadi ketika kita membengkokkan sensor, ia akan meningkat dari 5 dan ketika dilepaskan, ia akan kembali ke 5. Untuk menyebutkan klik tetikus, nilai 1 dan 0 digunakan. Semasa 1 dihantar tetikus ditekan dan ketika 0 dihantar tetikus dilepaskan.
jika (FlexValue> = 65 && FlexValue <= 120) // sensor flex saya berbeza dari 65 hingga 120, anda mungkin berbeza {FlexValue = peta (FlexValue, 120,65,0,100); // berdasarkan lenturan tukar menjadi 0 hingga 100 jika (FlexValue> = 5) // 1 dan 0 digunakan untuk klik tetikus jadi mulailah dari 5 {Mclick = true; Serial.write (1); // 1 dihantar untuk membuat tetikus kiri klik Serial.write (FlexValue); // Flex value adalah jarak untuk menggerakkan tetikus ke arah X} yang lain {Mclick = false; Serial.write (0);}}
Begitu juga nilai yang membentuk potensiometer ditukar dari 101 hingga 200 menyanyikan fungsi peta () dan dihantar ke port COM Laptop yang menuntut fungsi Serial.write () seperti yang ditunjukkan di bawah.
jika (potValue <= 200) {potValue = peta (potValue, 0,200,101,201); // Berasaskan bertukar menjadi 101 hingga 201 Serial.write (potValue); // Nilai pot adalah jarak untuk menggerakkan tetikus ke arah Y}
Selebihnya program dijelaskan menggunakan komen.
Kod Pemprosesan:
Pemprosesan adalah aplikasi pengembangan Sumber Terbuka dan dapat dengan mudah diunduh dan digunakan untuk mengembangkan projek menarik menggunakan Arduino atau Mikrokontroler lain. Kami telah melakukan beberapa projek menggunakan Pemprosesan dan anda boleh memeriksanya dengan mengklik pautan di bawah.
- Radio FM DIY Menggunakan Pemprosesan
- Realiti maya / kawalan Gerakan menggunakan Arduino
- Bilik Sembang Peribadi menggunakan Arduino.
- Sistem Radar Arduino menggunakan Processing APP dan Ultrasonic Sensor
- Pengesanan dan Penjejakan Muka Masa Sebenar menggunakan Arduino
- Speedometer DIY menggunakan Arduino dan Pemprosesan
- Permainan Ping Pong menggunakan Arduino Accelerometer
- Robot Biped Menggunakan Arduino
- Kamera Pengimejan Termal DIY Arduino
Dalam projek ini kami telah menggunakan IDE pemprosesan untuk membaca nilai port COM dan mengawal penunjuk tetikus berdasarkan nilai yang diterima melalui port COM. The Kod Processing lengkap untuk Angry Bird Permainan Pengawal ini boleh dimuat turun dari pautan di bawah:
- Memproses Kod untuk Pengawal Permainan Angry Bird ini (Klik kanan dan 'Simpan pautan sebagai')
Program Arduino boleh didapati di akhir tutorial ini. Kod Pemprosesan telah diubahsuai agar sesuai dengan tujuan kami dari kod yang diberikan oleh yoggy di halaman GitHubnya.
Data yang berasal dari port COM harus dibaca dalam tingkat baud yang sama di mana ia dihantar dari Arduino. Periksa juga port COM mana Arduino anda disambungkan dengan menggunakan pengurus peranti. Arduino saya dihubungkan ke COM3 dan ia adalah Port ke- 0 di komputer saya dan kadar baud di Arduino adalah 9600 jadi kodnya adalah seperti berikut
port = Serial baru (ini, Serial.list (), 9600);
Sebaik sahaja kita mula membaca nilai-nilai kita membezakannya dengan mengenalinya berdasarkan nilainya tentang bagaimana kita menghantar dari Arduino. Nilai dipetakan lagi dari 0 hingga 100 sehingga kita dapat mengawal tetikus berdasarkan nilai tersebut.
jika (port.available ()> 0) {data = port.read (); println (data); // Baca data dari port COM dan simpan dalam data} jika (data> = 101 && data <= 201) // Jika nilainya jika dari 101 hingga 201 maka itu mestilah dari Potensiometer {Turn = int (peta (data, 101,201,0,100)); // Gunakan nilai itu untuk menghidupkan catapullt} if (data> = 5 && data <= 100) // Jika nilai jika dari 5 hingga 100 maka mestilah dari Flex Sensor {Pull = int (peta (data, 5,100, 0,100));} // Gunakan nilai itu untuk menarik ketel jika (data == 1) klik = benar; // Gunakan nilai itu untuk menekan butang tetikus jika (data == 0) klik = false; // Gunakan nilai itu untuk melepaskan butang tetikus
Setelah kami mengkategorikan data, kami kemudian dapat mengawal tetikus menggunakan Robot Java Class in Processing. Perintah robot.mouseMove (crntX-Tarik, crntY + Turn); boleh digunakan untuk menggerakkan tetikus ke posisi yang diingini dan garis robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); dan robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); dapat digunakan untuk menekan atau melepaskan butang tetikus masing-masing.
jika (klik == false) // apabila Flex Sesnor tidak ditarik {crntX = (int) p.getX (); crntY = (int) p.getY (); jika (Tarik> 50) robot.mouseRelease (InputEvent.BUTTON1_DOWN_MASK); // Lepaskan butang tetikus} jika (klik == benar) // ketika Flex Sesnor ditarik {robot.mousePress (InputEvent.BUTTON1_DOWN_MASK); // Tekan butang tetikus robot.mouseMove (crntX-Tarik, crntY + Turn); // Gerakkan tetikus berdasarkan nilai Flex dan POT}}
Pemprosesan IDE ketika dilancarkan juga akan memaparkan kotak dialog kecil di mana anda dapat menemukan nilai Tarik, Putar dan status Klik Mouse seperti yang ditunjukkan di bawah
Perincian ini dapat digunakan untuk men-debug Program atau membetulkan data yang diperlukan.
Bekerja:
Untuk membuat Projek Angry Bird ini berfungsi menggunakan kod yang disediakan, kumpulkan perkakasan anda mengikut gambarajah litar dan muat naik Kod Arduino yang diberikan. Kemudian Perhatikan port COM mana Arduino anda disambungkan dan buat perubahan yang diperlukan dalam kod Pemprosesan dan lancarkan lakaran pemprosesan.
Sekarang, mulailah permainan burung marah dan letakkan kursor anda di dekat ketapel dan tarik sensor lentur untuk menarik burung dan tetapkan arah menggunakan potensiometer. Setelah arah ditetapkan lepaskan sensor Flex
EEEEWWWWWEEEEEEEEEE !!!!!!!!!!……………
Burung anda akan dilemparkan terus ke udara dan BOOMM !! Pada babi. Kerja lengkap boleh didapati di Video yang diberikan di bawah.
Semoga anda menikmati projek ini dan dapat membina sesuatu yang serupa. Sekiranya anda mempunyai keraguan, anda boleh menghubungi saya di bahagian komen atau menghantar soalan anda di forum untuk pertanyaan teknikal.
Sekarang, masa untuk menerobos kotak celengan itu dan mendapatkan kembali telur burung kita !!!!