Daftar Isi:

Proyeksi Azimuthal 3D Peta Dekorasi X Folk Music Puzzle Game - Arduino: 7 Langkah
Proyeksi Azimuthal 3D Peta Dekorasi X Folk Music Puzzle Game - Arduino: 7 Langkah

Video: Proyeksi Azimuthal 3D Peta Dekorasi X Folk Music Puzzle Game - Arduino: 7 Langkah

Video: Proyeksi Azimuthal 3D Peta Dekorasi X Folk Music Puzzle Game - Arduino: 7 Langkah
Video: Why all world maps are wrong 2024, Juli
Anonim
Image
Image
Desain Papan
Desain Papan

PENGANTAR

Halaman berikut akan menginstruksikan Anda cara membuat proyek Arduino, yang memiliki dua fungsi utama - dekorasi polos dengan pencahayaan dan permainan puzzle musik rakyat, yang menggabungkan bidang geografi, geometri, peta, Perserikatan Bangsa-Bangsa, dan musik menjadi satu. Dibangun di atas struktur segi enam, perangkat ini menggambarkan peta dunia dalam Azimuthal Equidistant Projection, yang merupakan bentuk proyeksi peta yang digunakan oleh Perserikatan Bangsa-Bangsa (dan simbolnya).

Saat mengaktifkan mode dekorasi, benua peta akan bersinar dalam warna berbeda yang ditentukan oleh kombinasi acak nilai RGB melalui penggunaan LED RGB.

Mode permainan, di sisi lain, mengharuskan pengguna untuk mengenali asal lagu musik rakyat (dipilih dengan menghasilkan angka secara acak dari 1 hingga 20) dan meletakkan papan kontinental jawabannya ke posisi yang sesuai di papan kayu utama dalam satu set. waktu (diatur sebelumnya selama 1 menit).

_

PERSEDIAAN

Bahan Sebenarnya

  • LED RGB 5mm * 20
  • kabel
  • Resistor * 9
  • Papan Arduino *1 (jenis apa saja)
  • Papan tempat memotong roti *3
  • Tombol *7
  • Papan Layar LCD I2C * 1
  • Kotak Karton (13*9*5.7 inci; 33*23*14.5 cm)
  • Papan Kayu (37.5*29*0.8 cm)
  • Papan Akrilik (transparan * 2, semi-transparan * 1)
  • Pengisi Daya Portabel * 1

Peralatan:

  • Pisau * 1
  • Perekat Penyembuh UV * 1
  • Pita dua sisi * 1 gulungan
  • Pistol Lem Panas * 1

Mesin:

Mesin Pemotong Laser

Perangkat lunak:

  • Adobe Ilustrator
  • Adobe Photoshop
  • Badak 3D

Langkah 1: Rancang Papan

Anda dapat langsung mengunduh file terlampir atau mengikuti langkah-langkah di bawah ini.

Menguraikan Peta

  1. Unduh kerangka peta dari Google

    1. Google "logo persatuan bangsa"
    2. Pilih "alat - ukuran - besar"
    3. Unduh gambar yang paling Anda sukai (yang digunakan oleh proyek ini: tautan) *Cobalah untuk tidak memilih gambar dengan garis rumit yang tumpang tindih dengan daratan kontinental*
  2. Transfer peta yang diunduh ke versi cetak

    1. Warnai daerah yang tidak diinginkan menjadi putih dengan menggunakan fungsi kuas di Adobe Photoshop
    2. Ekspor file (JPEG)
    3. Impor file ke Adobe Illustrator dan gunakan fungsi "jejak gambar" untuk melacak peta
    4. Ekspor file (dxf)

Menambahkan Latar Belakang Segi Enam

  1. Impor file dxf ke Rhino
  2. Pilih fungsi "poligon" dan masukkan "6" untuk opsi "NumSides"
  3. Masukkan "3.5" untuk nilai radius
  4. Gambar 28 segi enam berukuran sama
  5. Ekspor file dalam 3dm

Langkah 2: Pemotongan Laser

Image
Image
Pemotongan Laser
Pemotongan Laser
Pemotongan Laser
Pemotongan Laser
Pemotongan Laser
Pemotongan Laser
  1. Impor file yang telah selesai sebelumnya ke xxx.
  2. Menggunakan mesin pemotong laser, cetak bodi utama di papan kayu dan benua di papan akrilik (2 transparan & 1 semi-transparan) (video disediakan di atas)

Langkah 3: Bangun Perangkat

Bangun Perangkat
Bangun Perangkat
Bangun Perangkat
Bangun Perangkat
Bangun Perangkat
Bangun Perangkat

Papan Setelah Pemotongan Laser

  • Benua Akrilik

    1. Gunakan perekat yang dapat disembuhkan UV untuk merekatkan tiga papan setiap benua (dengan semi-transparan sebagai lapisan tengah)
    2. Gunakan sinar UV untuk menyinari daerah yang direkatkan agar lem mengeras
  • Yayasan Papan Kayu

    1. Hapus secara manual area tanah kecil yang menempel di papan kayu utama
    2. *Jika ada bagian papan kayu yang rusak, gunakan perekat tahan UV untuk merekatkannya kembali*

Membangun Basis (Fondasi Bawah dari Seluruh Perangkat)

  1. Temukan kotak kardus berukuran memadai, dengan dimensi sedekat 13*9*5,7 inci (33*23*14.5 cm)
  2. Menggunakan papan kayu sebagai model referensi, lacak bagian benua ke permukaan atas kotak
  3. Lacak bagian bawah kancing ke permukaan atas kotak, dengan masing-masing tombol dipusatkan di setiap bagian benua yang dilacak
  4. Gunakan pisau untuk memotong bagian tombol dengan mengikuti jejak
  5. Di dalam bagian benua yang dilacak, gunakan pisau untuk memotong segmen pendek di sekitar tombol
  6. Lacak dua bagian bawah tombol lagi ke sisi kanan kotak (coba sejajarkan jejak dengan ketinggian yang sama)
  7. Lacak papan layar LCD ke sisi kanan kotak (di atas dua tombol pada langkah sebelumnya)
  8. Gunakan pisau untuk memotong dua bagian tombol dan bagian LCD dengan mengikuti jejak pada langkah 6 dan 7

Langkah 4: Bangun Sirkuit

Bangun Sirkuit
Bangun Sirkuit

Mengacu pada skema di atas, membangun sirkuit.

Catatan:

  • Resistor untuk LED RGB dan tombolnya berbeda, LIHAT JELAS!
  • Karena LCD Display Board di atas tidak memiliki model I2C, maka tidak terhubung dengan sempurna. (Papan Layar LCD dengan model I2C hanya perlu mencolokkan empat pin)

    • Hubungkan GND pada penampil dan papan Arduino
    • Hubungkan VCC pada penampil dengan pin positif pada papan tempat memotong roti
    • Hubungkan SDA pada penampil dan papan Arduino
    • Hubungkan SCL pada penampil dan papan Arduino

Langkah 5: Unggah Kode

Kode untuk proyek ini dapat ditemukan di sini atau di bawah.

Setiap baris pengkodean memiliki catatan tambahan yang menjelaskan tujuan dan fungsinya.

Catatan:

  • Semua pin D tertentu dapat diubah dan disesuaikan berdasarkan tata letak sirkuit Anda
  • Semua detik yang tertunda dapat diubah menjadi nilai yang berbeda, tetapi JANGAN HAPUS! (Detik yang tertunda ini memungkinkan kode mengalir lebih logis. Tanpanya, beberapa bagian kode mungkin tidak berfungsi!)
  • Pada baris 24 (pengenalan "for loop"), Anda dapat menentukan jumlah pengulangan yang Anda inginkan untuk menjalankan loop (nilai aslinya adalah 5)
  • Kombinasi warna LED RGB di setiap loop "jika ditekan" dan "jika tidak ditekan" dapat disesuaikan dan disesuaikan. (Awalnya, LED RGB akan bersinar hijau jika ditekan sementara mereka akan bersinar merah jika tidak ditekan. Anda dapat mengubah nilai untuk memiliki warna kreatif untuk menjawab KANAN dan SALAH)

#termasuk

#termasuk LiquidCrystal_I2C lcd_I2C_27(0x27, 16, 2); // atur alamat LCD untuk tampilan 16 karakter dan 2 baris int _R; //perkenalkan variabel R, yang merupakan singkatan dari nilai Merah dari LED RGB int _G; //perkenalkan variabel G, yang merupakan singkatan dari nilai Hijau dari LED RGB int _B; //perkenalkan variabel B, yang merupakan singkatan dari nilai Biru dari LED RGB int _SongNumber; //introduce variabel SongNumber void setup() { pinMode(10, INPUT); // menetapkan D10 sebagai input untuk tombol dekorasi peta pinMode(9, INPUT); // menetapkan D9 sebagai input untuk tombol permainan teka-teki pinMode(8, INPUT); // menetapkan D8 sebagai input untuk tombol Eurasia pinMode(4, INPUT); // menetapkan D4 sebagai input untuk tombol Amerika Utara pinMode(3, INPUT); // menetapkan D3 sebagai input untuk tombol Amerika Selatan pinMode(2, INPUT); // menetapkan D2 sebagai input untuk tombol Afrika pinMode(1, INPUT); // menetapkan D1 sebagai input untuk tombol Oseania lcd_I2C_27.init (); // inisialisasi papan layar LCD lcd_I2C_27.backlight(); //nyalakan lampu latar papan tampilan LCD } void loop() { if (digitalRead(10))) { //jika tombol dekorasi peta ditekan untuk (int i = 0; i <5; ++i) { //jalankan loop berikut sebanyak 5 kali _R = random(0, 1023); //memberi variabel R nilai acak dari 0 hingga 1023 _G = random(0, 1023); //memberi variabel G nilai acak dari 0 hingga 1023 _B = random(0, 1023); //memberi variabel B nilai acak dari 0 hingga 1023 analogWrite(13, (_R / 4)); //nilai R dari LED RGB untuk grup pertama menggantikan dan menulis nilai variabel dari 0 hingga 255 analogWrite(12, (_G / 4)); //nilai G dari LED RGB untuk grup pertama menggantikan dan menulis nilai variabel dari 0 hingga 255 analogWrite(11, (_B / 4)); //nilai B dari LED RGB untuk grup pertama menggantikan dan menulis nilai variabel dari 0 hingga 255 analogWrite(7, (_R / 4)); //nilai R dari LED RGB untuk grup kedua menggantikan dan menulis nilai variabel dari 0 hingga 255 analogWrite(6, (_G / 4)); //nilai G dari LED RGB untuk grup kedua menggantikan dan menulis nilai variabel dari 0 hingga 255 analogWrite(5, (_B / 4)); //nilai B dari LED RGB untuk grup kedua menggantikan dan menulis nilai variabel dari 0 hingga 255 delay(3000); // tunggu selama 3000 milidetik (3 detik) } //karena nilai variabel R, G, B ditentukan dalam loop, akan ada lima kombinasi warna yang berbeda per loop } if (digitalRead(9)) { //if tombol permainan puzzle ditekan _SongNumber = random(1, 20); //memberi variabel SongNumber nilai acak dari 1 hingga 20 lcd_I2C_27.setCursor(0, 0); // mengatur kursor, penghitungan dimulai dengan 0 lcd_I2C_27.print(_SongNumber); // mencetak nilai SongNumber ke LCD display board analogWrite(13, 0); //reset dan tulis nilai D13 sebagai 0 analogWrite(12, 0); //reset dan tulis nilai D12 sebagai 0 analogWrite(11, 0); //reset dan tulis nilai D11 sebagai 0 analogWrite(7, 0); //reset dan tulis nilai D7 sebagai 0 analogWrite(6, 0); //reset dan tulis nilai D6 sebagai 0 analogWrite(5, 0); //reset dan tulis nilai D5 sebagai 0 jika (_SongNumber>= 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) { //jika nilai variabel SongNumber adalah dari 18 hingga 20 delay(60000); // tunggu selama 60000 milidetik hingga pemain mendengarkan musik rakyat (60 detik; 1 menit) if (digitalRead(1)) { //jika tombol Oceania ditekan analogWrite(13, 0); //analogWrite nilai D13 sebagai 0 analogWrite(12, 255); //analogWrite nilai D12 sebagai 255 analogWrite(11, 0); //analogWrite nilai D11 sebagai 0 analogWrite(7, 0); //analogWrite nilai D7 sebagai 0 analogWrite(6, 255); //analogWrite nilai D6 255 analogWrite(5, 0); //analogWrite nilai D5 sebagai 0 } //semua LED RGB akan bersinar dalam warna hijau else { //jika tombol Oceania tidak ditekan analogWrite(13, 255); //analogWrite nilai D13 sebagai 255 analogWrite(12, 0); //analogWrite nilai D12 sebagai 0 analogWrite(11, 0); //analogWrite nilai D11 sebagai 0 analogWrite(7, 255); //analogWrite nilai D7 sebagai 255 analogWrite(6, 0); //analogWrite nilai D6 sebagai 0 analogWrite(5, 0); //analogTulis nilai D5 sebagai 0 } //semua LED RGB akan bersinar dalam warna merah } //karena jawaban yang benar untuk SongNumber 18 sampai 20 semuanya Oseania, "if loop" ini mengakses apakah jawaban pemain benar atau bukan lcd_I2C_27.clear(); //menghapus penundaan papan layar LCD(1000); // tunggu 1000 milidetik (1 detik) } }

Langkah 6: Menyelesaikan Perangkat

  1. Buka kotak kardus dan masukkan sirkuit yang telah dibuat sebelumnya (termasuk semua elemen, mis: tiga papan tempat memotong roti, papan Arduino, pengisi daya portabel)
  2. Mengacu pada kode dan bagian benua yang dilacak di bagian atas kotak, masukkan tombol ke masing-masing posisi yang sesuai

    *Anda dapat merujuk ke catatan samping di belakang kode untuk memastikan tombol pin mana untuk benua mana*

  3. Masukkan dua "tombol fungsi" (deco peta D10 dan permainan puzzle D9) ke masing-masing bagian yang dipotong di sisi kanan kotak
  4. Pasang papan layar LCD ke bagian yang dipotong di sisi kanan kotak
  5. Buka kotak dan pastikan semua kabel terhubung dengan benar ke papan
  6. Tempelkan alas papan kayu ke bagian atas kotak dengan menggunakan selotip dua sisi (pastikan sejajar dengan benar sehingga kancing dapat masuk tepat ke bagian papan kayu yang dipotong)
  7. Gunakan pistol lem panas untuk mengisi bagian wilayah kecil (bukan benua utama)

Langkah 7: SELESAI!!!!

Untuk permainan puzzle, buka tautan untuk daftar putar pengujian!

Direkomendasikan: