Talaan ng mga Nilalaman:

Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Hakbang
Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Hakbang

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Hakbang

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino: 7 Hakbang
Video: Why all world maps are wrong 2024, Disyembre
Anonim
Image
Image
Idisenyo ang Lupon
Idisenyo ang Lupon

PANIMULA

Ang sumusunod na pahina ay magtuturo sa iyo kung paano lumikha ng isang proyekto ng Arduino, na mayroong dalawang pangunahing pag-andar-payak na dekorasyon na may ilaw at katutubong larong puzzle ng musika, na nagsasama ng mga larangan ng heograpiya, geometry, mapa, United Nations, at musika nang magkasama sa isa. Ang pagbuo sa istraktura ng mga hexagons, ang aparato ay naglalarawan ng mapa ng mundo sa Azimuthal Equidistant Projection, na kung saan ay ang form ng projection ng mapa na ginamit ng United Nations (at ang simbolo nito).

Kapag pinapagana ang dekorasyon mode, ang mga kontinente ng mapa ay mamula sa iba't ibang mga kulay na tinutukoy ng mga random na kumbinasyon ng mga halagang RGB sa pamamagitan ng paggamit ng RGB LEDs.

Ang mode ng laro, sa kabilang banda, ay nangangailangan ng mga gumagamit na kilalanin ang pinagmulan ng mga katutubong kanta ng musika (napili ng sapalarang pagbuo ng mga numero mula 1 hanggang 20) at ilagay ang lupon ng kontinental ng kanyang sagot sa kaukulang posisyon nito sa pangunahing board na kahoy sa loob ng isang hanay oras (paunang itinakda para sa 1 minuto).

_

SUMUSUNOD

Mga Tunay na Kagamitan

  • 5mm RGB LEDs * 20
  • Mga wire
  • Mga resistorista * 9
  • Arduino Board * 1 (anumang uri)
  • Mga Breadboard * 3
  • Mga Pindutan * 7
  • LCD Display Board I2C * 1
  • Cardboard Box (13 * 9 * 5.7 pulgada; 33 * 23 * 14.5 cm)
  • Wooden Board (37.5 * 29 * 0.8 cm)
  • Mga Board ng Acrylic (transparent * 2, semi-transparent * 1)
  • Portable Charger * 1

Mga tool:

  • Blade * 1
  • UV Cure Adhesives * 1
  • Dalawang panig na Tape * 1 roll
  • Mainit na Baril ng Pandikit * 1

Mga Makina:

Laser Cutting Machine

Software:

  • Adobe Illustrator
  • Adobe Photoshop
  • Rhino 3D

Hakbang 1: Idisenyo ang Lupon

Maaari mong direktang i-download ang nakalakip na file o sundin ang mga hakbang sa ibaba.

Pagbabalangkas sa Mapa

  1. Mag-download ng isang balangkas ng mapa mula sa Google

    1. Google "United Nations logo"
    2. Piliin ang "mga tool - laki - malaki"
    3. I-download ang iyong pinaka-paboritong imahe (ang ginamit ng proyektong ito: link) * Subukang huwag piliin ang mga may mga kumplikadong linya na magkakapatong sa mga lupalop na kontinental *
  2. Ilipat ang na-download na mapa sa bersyon ng pag-print

    1. Kulayan ang mga hindi kanais-nais na rehiyon sa puti sa pamamagitan ng paggamit ng function ng paintbrush sa Adobe Photoshop
    2. I-export ang file (JPEG)
    3. I-import ang file sa Adobe Illustrator at gamitin ang function na "trace ng imahe" upang subaybayan ang mapa
    4. I-export ang file (dxf)

Pagdaragdag ng Hexagon Background

  1. I-import ang dxf file sa Rhino
  2. Piliin ang pagpapaandar na "polygon" at susi sa "6" para sa pagpipiliang "NumSides"
  3. I-key ang "3.5" para sa halaga ng radius
  4. Gumuhit ng 28 pantay na sukat na mga hexagon
  5. I-export ang file sa 3dm

Hakbang 2: Laser Cutting

Image
Image
Pagputol ng Laser
Pagputol ng Laser
Pagputol ng Laser
Pagputol ng Laser
Pagputol ng Laser
Pagputol ng Laser
  1. I-import ang dating nakumpleto na file sa xxx.
  2. Gamit ang laser cutting machine, i-print ang pangunahing katawan sa kahoy na board at ang mga kontinente sa mga acrylic board (2 transparent & 1 semi-transparent) (ang mga video ay ibinigay sa itaas)

Hakbang 3: Buuin ang Device

Buuin ang Device
Buuin ang Device
Buuin ang Device
Buuin ang Device
Buuin ang Device
Buuin ang Device

Mga Lupon Pagkatapos ng Laser Cutting

  • Mga Kontinente ng Acrylic

    1. Gumamit ng mga curable UV na adhesive upang idikit ang tatlong board ng bawat kontinente (na may semi-transparent bilang gitnang layer)
    2. Gamitin ang ilaw ng UV upang lumiwanag sa mga nakadikit na rehiyon upang payagan ang mga glu na tumibay
  • Wooden Board Foundation

    1. Manu-manong alisin ang mga maliliit na rehiyon ng lupa na natigil sa pangunahing board ng kahoy
    2. * Kung ang anumang bahagi ng board na kahoy ay nasira, gamitin ang UV na nalulunasan na mga pandikit upang ipako muli ang mga ito *

Pagbuo ng Batayan (Ibabang Foundation ng Buong Device)

  1. Maghanap ng isang sapat na sukat na karton na kahon, na may sukat na malapit sa 13 * 9 * 5.7 pulgada (33 * 23 * 14.5 cm)
  2. Gamit ang board ng kahoy bilang modelo ng sanggunian, subaybayan ang mga bahagi ng kontinental sa tuktok na ibabaw ng kahon
  3. Subaybayan ang ilalim na bahagi ng mga pindutan papunta sa tuktok na ibabaw ng kahon, na ang bawat pindutan ay nakasentro sa loob ng bawat mga na-trace na mga kontinental na bahagi
  4. Gumamit ng isang talim upang putulin ang mga bahagi ng pindutan sa pamamagitan ng pagsunod sa mga bakas
  5. Sa loob ng mga na-trace na mga kontinental na bahagi, gumamit ng isang talim upang maputol ang mga maiikling segment na nakapalibot sa pindutan
  6. Subaybayan ang dalawa pang mga ilalim na bahagi ng pindutan sa kanang bahagi ng kahon (subukang ihanay ang mga bakas sa parehong taas)
  7. Subaybayan ang LCD display board papunta sa kanang bahagi ng kahon (sa itaas ng dalawang mga pindutan sa nakaraang hakbang)
  8. Gumamit ng isang talim upang putulin ang dalawang bahagi ng pindutan at ang bahagi ng LCD sa pamamagitan ng pagsunod sa mga bakas sa hakbang 6 at 7

Hakbang 4: Buuin ang mga Circuits

Buuin ang mga Circuits
Buuin ang mga Circuits

Sumangguni sa mga eskematiko sa itaas, buuin ang circuit.

Tandaan:

  • Ang mga resistors para sa RGB LEDs at ang isa sa mga pindutan ay magkakaiba, MALIWASANG MAKITA!
  • Dahil ang LCD Display Board sa itaas ay walang modelo ng I2C, hindi ito ganap na konektado. (Ang mga LCD Display Board na may mga modelo ng I2C ay kailangang mag-plug sa apat na mga pin)

    • Ikonekta ang mga GND sa displayer at sa Arduino board
    • Ikonekta ang VCC sa displayer gamit ang mga positibong pin sa breadboard
    • Ikonekta ang mga SDA sa displayer at sa Arduino board
    • Ikonekta ang mga SCL sa displayer at sa Arduino board

Hakbang 5: I-upload ang Code

Ang code para sa proyektong ito ay matatagpuan dito o sa ibaba.

Ang bawat linya ng pag-coding ay may isang tala sa gilid na nagpapaliwanag sa layunin at pag-andar nito.

Tandaan:

  • Ang lahat ng mga tukoy na D pin ay maaaring mabago at maiakma batay sa layout ng iyong circuit
  • Ang lahat ng naantalang segundo ay maaaring mabago sa iba't ibang mga halaga, ngunit HUWAG TANGGALIN ang mga ito! (Pinapayagan ng mga naantala na segundo ang code na dumaloy nang mas lohikal. Kung wala ang mga ito, maaaring hindi gumana ang ilang bahagi ng code!)
  • Sa linya 24 (ang pagpapakilala ng "para sa loop"), maaari mong italaga ang bilang ng pag-uulit na nais mong patakbuhin para sa (ang orihinal na halaga ay 5)
  • Ang kumbinasyon ng kulay ng RGB LEDs sa bawat pindutan na "kung pinindot" at "kung hindi pinindot" ang mga loop ay maaaring ayusin at ipasadya. (Orihinal, ang RGB LEDs ay lumiwanag sa berde kung pinindot habang sila ay lumiwanag sa pula kung hindi pinindot. Maaari mong baguhin ang mga halaga upang magkaroon ng mga malikhaing kulay para sa pagsagot sa TAMA at MALI)

# isama

# isama ang LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // itakda ang LCD address para sa isang 16 chars at 2 line display int _R; // ipakilala ang variable R, na kumakatawan sa Pulang halaga ng RGB LEDs int _G; // ipakilala ang variable G, na nangangahulugang ang Green na halaga ng RGB LEDs int _B; // ipakilala ang variable B, na kumakatawan sa Blue na halaga ng RGB LEDs int _SongNumber; // ipakilala ang variable na SongNumber void setup () {pinMode (10, INPUT); // nagtatakda ng D10 bilang input para sa pindutan ng map-dekorasyon na pinMode (9, INPUT); // nagtatakda ng D9 bilang input para sa puzzle-game button pinMode (8, INPUT); // nagtatakda ng D8 bilang input para sa pindutan ng Eurasia pinMode (4, INPUT); // nagtatakda ng D4 bilang input para sa pindutan ng Hilagang Amerika na pinMode (3, INPUT); // nagtatakda ng D3 bilang input para sa pindutan ng Timog Amerika pinMode (2, INPUT); // nagtatakda ng D2 bilang input para sa pindutan ng Africa pinMode (1, INPUT); // nagtatakda ng D1 bilang input para sa Oceania button lcd_I2C_27.init (); // ipasimula ang LCD display board lcd_I2C_27.backlight (); // i-on ang backlight ng LCD display board} void loop () {if (digitalRead (10)) {// kung ang map-dekorasyon na pindutan ay pinindot para sa (int i = 0; i <5; ++ i) {// patakbuhin ang sumusunod na loop nang 5 beses _R = random (0, 1023); // bigyan ang variable R ng isang random na halaga mula 0 hanggang 1023 _G = random (0, 1023); // bigyan ang variable G ng isang random na halaga mula 0 hanggang 1023 _B = random (0, 1023); // bigyan ang variable B ng isang random na halaga mula 0 hanggang 1023 analogWrite (13, (_R / 4)); // ang halaga ng R ng mga RGB LEDs para sa unang kapalit ng pangkat at nagsusulat ng variable na halaga mula 0 hanggang 255 analogWrite (12, (_G / 4)); // ang halaga ng G ng mga RGB LEDs para sa unang kapalit ng pangkat at nagsusulat ng variable na halaga mula 0 hanggang 255 analogWrite (11, (_B / 4)); // ang halaga ng B ng mga RGB LEDs para sa unang kapalit ng pangkat at nagsusulat ng variable na halaga mula 0 hanggang 255 analogWrite (7, (_R / 4)); // ang R halaga ng RGB LEDs para sa pangalawang pangkat na pamalit at isinusulat ang variable na halaga mula 0 hanggang 255 analogWrite (6, (_G / 4)); // ang halaga ng G ng mga RGB LEDs para sa pangalawang pangkat na kahalili at isinusulat ang variable na halaga mula 0 hanggang 255 analogWrite (5, (_B / 4)); // ang halaga ng B ng mga RGB LEDs para sa pangalawang pangkat na kahalili at isinusulat ang variable na halaga mula 0 hanggang 255 pagkaantala (3000); // wait for 3000 milliseconds (3 segundo)} // dahil ang mga halaga ng variable R, G, B ay natutukoy sa loop, magkakaroon ng limang magkakaibang mga kumbinasyon ng kulay bawat loop} kung (digitalRead (9)) {// kung ang pindutan ng puzzle-game ay pinindot _SongNumber = random (1, 20); // give variable SongNumber isang random na halaga mula 1 hanggang 20 lcd_I2C_27.setCursor (0, 0); // itakda ang cursor, ang pagbibilang ay nagsisimula sa 0 lcd_I2C_27.print (_SongNumber); // i-print ang halaga ng SongNumber sa LCD display board analogWrite (13, 0); // reset at isulat ang halaga ng D13 bilang 0 analogWrite (12, 0); // reset at isulat ang halaga ng D12 bilang 0 analogWrite (11, 0); // reset at isulat ang halaga ng D11 bilang 0 analogWrite (7, 0); // reset at isulat ang halaga ng D7 bilang 0 analogWrite (6, 0); // reset at isulat ang halaga ng D6 bilang 0 analogWrite (5, 0); // reset at isulat ang halaga ng D5 bilang 0 kung (_SongNumber> = 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) {// kung ang halaga ng variable SongNumber ay mula 18 hanggang 20 pagkaantala (60000); // maghintay para sa 60000 milliseconds para sa mga manlalaro na makinig sa katutubong musika (60 segundo; 1 min) kung (digitalRead (1)) {// kung ang pindutan ng Oceania ay pinindot analogWrite (13, 0); // analogWrite ang halaga ng D13 bilang 0 analogWrite (12, 255); // analogWrite ang halaga ng D12 bilang 255 analogWrite (11, 0); // analogWrite ang halaga ng D11 bilang 0 analogWrite (7, 0); // analogWrite ang halaga ng D7 bilang 0 analogWrite (6, 255); // analogWrite ang halaga ng D6 255 analogWrite (5, 0); // analogWrite ang halaga ng D5 bilang 0} // lahat ng mga RGB LEDs ay magpapasikat sa berdeng kulay iba pa {// kung ang pindutan ng Oceania ay hindi pinindot analogWrite (13, 255); // analogWrite ang halaga ng D13 bilang 255 analogWrite (12, 0); // analogWrite ang halaga ng D12 bilang 0 analogWrite (11, 0); // analogWrite ang halaga ng D11 bilang 0 analogWrite (7, 255); // analogWrite ang halaga ng D7 bilang 255 analogWrite (6, 0); // analogWrite ang halaga ng D6 bilang 0 analogWrite (5, 0); // analogSulat ang halaga ng D5 bilang 0} // lahat ng mga RGB LEDs ay magpapasikat sa pulang kulay} // dahil ang mga tamang sagot para sa SongNumber 18 hanggang 20 ay pawang Oceania, ina-access ng "if loop" kung ang sagot ng manlalaro ay tama o hindi lcd_I2C_27.clear (); // limasin ang pagkaantala ng LCD display board (1000); // maghintay ng 1000 milliseconds (1 segundo)}}

Hakbang 6: Tinatapos ang Device

  1. Buksan ang kahon ng karton at ilagay sa dati nang itinayo na mga circuit (kabilang ang lahat ng mga elemento, hal: tatlong mga breadboard, ang Arduino board, ang portable charger)
  2. Sumangguni sa code at ang mga sinusubaybayang mga bahagi ng kontinental sa tuktok ng kahon, i-plug ang mga pindutan sa bawat isa sa kanilang kaukulang posisyon.

    * Maaari kang mag-refer sa mga tala sa gilid sa likod ng mga code upang matiyak kung aling pindutan ng pin ang para sa aling kontinente *

  3. Palamunan ang dalawang "mga pindutan ng pag-andar" (mapa-deco ng D10 at larong puzzle ng D9) sa bawat isa sa mga cut-part sa kanang bahagi ng kahon
  4. I-install ang LCD display board sa hiwa nitong bahagi sa kanang bahagi ng kahon
  5. Buksan ang kahon at tiyakin na ang lahat ng mga wire ay konektado nang maayos sa mga board
  6. Idikit ang pundasyon ng kahoy na board sa tuktok na bahagi ng kahon sa pamamagitan ng paggamit ng dobleng panig na tape (siguraduhing maayos na maayos upang ang mga pindutan ay maaaring magkasya mismo sa cut-part ng mga kahoy na board)
  7. Gumamit ng hot glue gun upang punan ang mga maliliit na bahagi ng rehiyon (hindi ang pangunahing kontinente)

Hakbang 7: TAPOS !!!!!

Para sa larong puzzle, pumunta sa link para sa pagsubok sa playlist!

Inirerekumendang: