Mündəricat:

Azimuthal Projeksiyon 3D Xəritə Dekorasiya X Xalq Musiqi Puzzle Oyunu - Arduino: 7 Addım
Azimuthal Projeksiyon 3D Xəritə Dekorasiya X Xalq Musiqi Puzzle Oyunu - Arduino: 7 Addım

Video: Azimuthal Projeksiyon 3D Xəritə Dekorasiya X Xalq Musiqi Puzzle Oyunu - Arduino: 7 Addım

Video: Azimuthal Projeksiyon 3D Xəritə Dekorasiya X Xalq Musiqi Puzzle Oyunu - Arduino: 7 Addım
Video: Mercator projection 2024, Noyabr
Anonim
Image
Image
Lövhəni dizayn edin
Lövhəni dizayn edin

GİRİŞ

Aşağıdakı səhifə, coğrafiya, həndəsə, xəritələr, Birləşmiş Millətlər və musiqi sahələrini bir araya gətirən iki əsas funksiyaya sahib olan işıqlandırma və xalq musiqisi tapmaca oyunu olan bir Arduino layihəsinin necə yaradılacağını sizə izah edəcək. Altıbucaqlıların quruluşuna əsaslanan qurğu, dünya xəritəsini Birləşmiş Millətlər Təşkilatının (və simvolu) istifadə etdiyi xəritə proyeksiyası forması olan Azimutal bərabər məsafəli proyeksiyada əks etdirir.

Dekorasiya rejimini aktivləşdirərkən, xəritənin qitələri RGB LED -lərinin istifadəsi ilə RGB dəyərlərinin təsadüfi birləşmələri ilə təyin olunan fərqli rənglərdə parlayacaqdı.

Digər tərəfdən oyun rejimi, istifadəçilərdən xalq musiqisi mahnılarının mənşəyini tanımağı (1 -dən 20 -ə qədər ədədlər təsadüfi yaradılaraq seçilməsini) və öz cavabının kontinental lövhəsini bir dəstə içərisində əsas taxta lövhənin müvafiq mövqeyinə qoymasını tələb edir. vaxt (1 dəqiqə əvvəlcədən qurulmuşdur).

_

TƏCHİZAT

Həqiqi Materiallar

  • 5 mm RGB LED *20
  • Tellər
  • Rezistorlar *9
  • Arduino Board *1 (istənilən tip)
  • Çörək lövhələri *3
  • Düymələr *7
  • LCD ekran lövhəsi I2C *1
  • Karton Kutu (13*9*5.7 düym; 33*23*14.5 sm)
  • Taxta lövhə (37.5*29*0.8 sm)
  • Akril lövhələr (şəffaf * 2, yarı şəffaf * 1)
  • Portativ Şarj Cihazı *1

Alətlər:

  • Bıçaq *1
  • UV müalicəsi üçün yapışqanlar *1
  • İki tərəfli lent *1 rulon
  • İsti yapışqan silahı *1

Maşınlar:

Lazer kəsmə maşını

Proqram təminatı:

  • Adobe Illustrator
  • Adobe Photoshop
  • Kərgədan 3d

Addım 1: Lövhəni dizayn edin

Əlavə edilmiş faylı birbaşa yükləyə və ya aşağıdakı addımları izləyə bilərsiniz.

Xəritənin təsviri

  1. Google -dan bir xəritə konturu yükləyin

    1. Google "Birləşmiş Millətlər Təşkilatının loqosu"
    2. "Alətlər - ölçü - böyük" seçin
    3. Ən çox sevdiyiniz şəkli yükləyin (bu layihənin istifadə etdiyi şəkil: link) *Kontinental torpaqlarla üst -üstə düşən mürəkkəb xətləri olanları seçməməyə çalışın *
  2. Yüklənmiş xəritəni çap versiyasına köçürün

    1. Adobe Photoshop -da boya fırçası funksiyasından istifadə edərək arzuolunmaz bölgələri ağ rəngə boyayın
    2. Faylı ixrac edin (JPEG)
    3. Dosyanı Adobe Illustrator -a idxal edin və xəritəni izləmək üçün "görüntü izi" funksiyasından istifadə edin
    4. Faylı ixrac edin (dxf)

Altıbucaqlı fonun əlavə edilməsi

  1. Dxf faylını Rhino -ya idxal edin
  2. "Çoxbucaqlı" funksiyasını seçin və "NumSides" seçimi üçün "6" yazın
  3. Radius dəyəri üçün "3.5" yazın
  4. 28 bərabər ölçülü altıbucaq çəkin
  5. Faylı 3dm formatında ixrac edin

Addım 2: Lazerlə kəsmə

Image
Image
Lazer kəsmə
Lazer kəsmə
Lazer kəsmə
Lazer kəsmə
Lazer kəsmə
Lazer kəsmə
  1. Əvvəllər tamamlanmış faylı xxx -ə idxal edin.
  2. Lazer kəsmə maşını istifadə edərək, əsas gövdəni taxta lövhədə və qitələri akril lövhələrdə çap edin (2 şəffaf və 1 yarı şəffaf) (videolar yuxarıda verilmişdir)

Addım 3: Cihazı qurun

Cihazı qurun
Cihazı qurun
Cihazı qurun
Cihazı qurun
Cihazı qurun
Cihazı qurun

Lazerlə kəsildikdən sonra lövhələr

  • Akril Qitələr

    1. Hər qitənin üç lövhəsini bir-birinə yapışdırmaq üçün ultrabənövşəyi şəfalı yapışqanlardan istifadə edin (orta təbəqə kimi yarı şəffaf).
    2. Yapışqanların bərkiməsini təmin etmək üçün yapışqan bölgələrə parlamaq üçün UV işığını istifadə edin
  • Taxta lövhə təməli

    1. Əsas taxta lövhəyə yapışmış kiçik torpaq sahələrini əl ilə çıxarın
    2. *Taxta lövhənin hər hansı bir hissəsi qırılıbsa, UV yapışqanlı yapışqanlardan istifadə edərək geri yapışdırın*

Baza Qurmaq (Bütün Cihazın Alt Vəqfi)

  1. Ölçüləri 13*9*5.7 düym (33*23*14.5 sm) olan uyğun ölçülü karton qutu tapın.
  2. Referans modeli olaraq taxta taxtadan istifadə edərək kontinental hissələri qutunun üst səthində izləyin
  3. Düymələrin alt hissəsini qutunun yuxarı səthində izləyin, hər bir düymə hər bir kontinental hissənin mərkəzindədir.
  4. İzləri izləyərək düymə hissələrini kəsmək üçün bir bıçaq istifadə edin
  5. İzlənilən kontinental hissələrdə düyməni əhatə edən qısa seqmentləri kəsmək üçün bir bıçaq istifadə edin
  6. Düymənin daha iki alt hissəsini qutunun sağ tərəfinə çəkin (izləri eyni hündürlükdə hizalamağa çalışın)
  7. LCD ekran lövhəsini qutunun sağ tərəfinə çəkin (əvvəlki addımdakı iki düymənin üstündə)
  8. 6 və 7 -ci addımdakı izləri izləyərək iki düymə hissəsini və LCD hissəsini kəsmək üçün bir bıçaq istifadə edin

Addım 4: Dövrləri qurun

Dövrləri qurun
Dövrləri qurun

Yuxarıdakı sxemlərə istinad edərək, dövrə qurun.

Qeyd:

  • RGB LED -lərin və düymələrin rezistorları fərqlidir, aydın görün!
  • Yuxarıdakı LCD Ekran Lövhəsində I2C modeli olmadığı üçün mükəmməl bağlanmamışdır. (I2C modelləri olan LCD Ekran Lövhələri yalnız dörd pinlə bağlanmalıdır)

    • GND -ləri ekran və Arduino lövhəsinə qoşun
    • Çörək lövhəsindəki pozitiv pinlərlə ekrandakı VCC -ni bağlayın
    • SDA'ları ekran və Arduino lövhəsinə bağlayın
    • SCL -ləri ekran və Arduino lövhəsinə qoşun

Addım 5: Kodu yükləyin

Bu layihənin kodunu burada və ya aşağıda tapa bilərsiniz.

Hər bir kodlaşdırma xəttində məqsədini və funksiyasını izah edən bir yan qeyd var.

Qeyd:

  • Bütün xüsusi D pinləri, sxeminizin sxeminə əsasən dəyişdirilə və tənzimlənə bilər
  • Bütün gecikmiş saniyələr fərqli dəyərlərə dəyişdirilə bilər, ancaq bunları SİLMƏYİN! (Bu gecikmiş saniyələr kodun daha məntiqli axmasına imkan verir. Onsuz kodun bəzi hissələri işləməyə bilər!)
  • 24 -cü sətirdə ("döngə üçün" tətbiqi), döngənin işləməsini istədiyiniz təkrar sayını təyin edə bilərsiniz (orijinal dəyər 5 -dir)
  • RGB LED -lərinin hər düymənin "basıldığı təqdirdə" və "basılmazsa" döngələrindəki rəng birləşməsi tənzimlənə və fərdiləşdirilə bilər. (Başlanğıcda, RGB LED -ləri basıldıqda yaşıl rəngdə, basılmadıqda qırmızı rəngdə parlayacaqdı. SAĞ və YAN cavab vermək üçün dəyərləri yaradıcı rənglərə dəyişə bilərsiniz)

#daxil edin

#daxil LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // LCD ünvanını 16 simvol və 2 sətirlik int _R üçün təyin edin; // int _G RGB LED -lərinin Qırmızı dəyərini ifadə edən R dəyişənini təqdim edin; // int _B RGB LED -lərinin Yaşıl dəyərini ifadə edən G dəyişənini təqdim edin; // int _SongNumber RGB LED -lərinin Mavi dəyərini ifadə edən B dəyişənini təqdim edin; // dəyişən SongNumber void setup () {pinMode (10, INPUT) təqdim edin; // D10-u xəritə dekorasiya düyməsi pinMode (9, INPUT) üçün giriş olaraq təyin edir; // pinMode (8, GİRİŞ) tapmaca oyunu düyməsi üçün D9-u giriş olaraq təyin edir; // D8 -i Avrasiya düyməsi pinMode (4, INPUT) üçün giriş olaraq təyin edir; // D4 -ü Şimali Amerika düyməsi pinMode (3, INPUT) üçün giriş olaraq təyin edir; // D3 -ü Cənubi Amerika düyməsi pinMode (2, INPUT) üçün giriş olaraq təyin edir; // D2 düyməsini Afrika düyməsi pinMode (1, INPUT) üçün giriş olaraq təyin edir; // D1 -i Okeaniya düyməsi üçün giriş olaraq təyin edir lcd_I2C_27.init (); // LCD ekran lcd_I2C_27.backlight (); // LCD ekran lövhəsinin arxa işığını yandırın} void loop () {if (digitalRead (10)) {// map-bəzək düyməsinə basıldıqda (int i = 0; i <5; ++ i) {// aşağıdakı döngəni 5 dəfə işlədin _R = təsadüfi (0, 1023); // R dəyişəninə 0 -dan 1023 -ə qədər təsadüfi bir dəyər verin _G = təsadüfi (0, 1023); // G dəyişəninə 0 -dan 1023 -ə qədər təsadüfi bir dəyər verin _B = təsadüfi (0, 1023); // B dəyişəninə 0 ilə 1023 analogWrite arasında təsadüfi bir dəyər verin (13, (_R /4)); // birinci qrup əvəzediciləri üçün RGB LED -lərinin R dəyəri və 0 -dan 255 -ə qədər analogWrite (12, (_G /4)) dəyişən dəyərini yazır; // birinci qrup əvəzedicilər üçün RGB LED -lərinin G dəyəri və 0 -dan 255 -ə qədər analogWrite (11, (_B /4)) dəyişən dəyərini yazır; // birinci qrup əvəzedicilər üçün RGB LED -lərinin B dəyəri və dəyişən dəyəri 0 -dan 255 analogWrite (7, (_R /4)) yazır; // ikinci qrup üçün RGB LED -lərinin R dəyəri əvəz edir və 0 -dan 255 -ə qədər analogWrite (6, (_G /4)) dəyişən dəyəri yazır; // ikinci qrup üçün RGB LED -lərinin G dəyəri əvəz edir və dəyişən dəyəri 0 -dan 255 analogWrite (5, (_B /4)) yazır; // ikinci qrup əvəzediciləri üçün RGB LED -lərinin B dəyəri və dəyişən dəyəri 0 ilə 255 gecikmə (3000) arasında yazır; // 3000 milisaniyə (3 saniyə) gözləyin} // R, G, B dəyişənlərinin dəyərləri döngədə təyin olunduğundan hər bir döngədə beş fərqli rəng birləşməsi olardı} if (digitalRead (9)) {// if tapmaca oyunu düyməsinə basılır _SongNumber = təsadüfi (1, 20); // SongNumber dəyişəninə 1 -dən 20 -ə qədər təsadüfi bir dəyər verin lcd_I2C_27.setCursor (0, 0); // imleci təyin edin, sayma 0 lcd_I2C_27.print (_SongNumber) ilə başlayır; // SongNumber dəyərini analogWrite LCD ekran lövhəsinə yazdırın (13, 0); // sıfırlayın və D13 dəyərini 0 analogWrite (12, 0) olaraq yazın; // sıfırlayın və D12 dəyərini 0 analogWrite (11, 0) olaraq yazın; // sıfırlayın və D11 -in dəyərini 0 analogWrite (7, 0) olaraq yazın; // sıfırlayın və D7 dəyərini 0 analogWrite (6, 0) olaraq yazın; // sıfırlayın və D6 dəyərini 0 analogWrite (5, 0) olaraq yazın; // sıfırla və D5 dəyərini 0 olaraq yaz dəyişən SongNumber 18-20 gecikmədir (60000); // oyunçuların xalq musiqisini dinləməsi üçün 60000 millisaniyə gözləyin (60 saniyə; 1 dəq) əgər (digitalRead (1)) {// Okeaniya düyməsinə analogWrite (13, 0) basılarsa; // analogD13 dəyərini 0 analogWrite olaraq yazın (12, 255); // analogD12 -nin dəyərini 255 analogWrite (11, 0) olaraq yazın; // analogD11 -in dəyərini 0 analogWrite (7, 0) olaraq yazın; // analogD7 -nin dəyərini 0 analogWrite olaraq yazın (6, 255); // analogWrite D6 255 analogWrite (5, 0) dəyərini yazın; // analogD5 -in dəyərini 0} olaraq yazın // bütün RGB LEDləri başqa yaşıl rəngdə parlayacaq {// Okeaniya düyməsinə basmasanız analogWrite (13, 255); // analogD13 dəyərini 255 analogWrite (12, 0) olaraq yazın; // analogD12 -nin dəyərini 0 analogWrite (11, 0) olaraq yazın; // analogD11 -in dəyərini 0 analogWrite olaraq yazın (7, 255); // analogD7 -nin dəyərini 255 analogWrite (6, 0) olaraq yazın; // analogD6 dəyərini 0 analogWrite (5, 0) olaraq yazın; // analogD5 -in dəyərini 0} olaraq yazın // bütün RGB LED -ləri qırmızı rəngdə parlayacaq} // SongNumber 18 -dən 20 -dək düzgün cavablar hamısı Okeaniya olduğundan, bu "əgər döngə" oyunçunun cavabının doğru olub -olmamasına daxil olur lcd_I2C_27.clear () deyil; // LCD ekran lövhəsinin gecikməsini silin (1000); // 1000 milisaniyə gözləyin (1 saniyə)}}

Addım 6: Cihazı bitirmək

  1. Karton qutunu açın və əvvəllər qurulmuş sxemlərə qoyun (bütün elementlər daxil olmaqla, məsələn: üç çörək taxtası, Arduino lövhəsi, portativ şarj cihazı)
  2. Qutunun üstündəki koda və izlənilən kontinental hissələrə istinad edərək, düymələri müvafiq mövqelərinin hər birinə daxil edin.

    *Hansı pin düyməsinin hansı qitə üçün olmasını təmin etmək üçün kodların arxasındakı yan qeydlərə müraciət edə bilərsiniz*

  3. İki "funksiya düyməsini" (D10-un xəritəsi və D9-un tapmaca oyunu) qutunun sağ tərəfindəki kəsik hissələrinin hər birinə doldurun.
  4. LCD ekran lövhəsini qutunun sağ tərəfindəki kəsilmiş hissəsinə quraşdırın
  5. Qutunu açın və bütün tellərin lövhələrə düzgün bir şəkildə bağlandığından əmin olun
  6. Taxta lövhənin təməlini iki tərəfli lent istifadə edərək qutunun yuxarı hissəsinə yapışdırın (düymələrin taxta lövhələrin kəsilmiş hissəsinə tam oturması üçün düzgün hizalandığınızdan əmin olun)
  7. Kiçik bölgə hissələrini doldurmaq üçün isti yapışqan tabancasından istifadə edin (əsas qitələr deyil)

Addım 7: BİTDİN !!!!

Tapmaca oyunu üçün test siyahısının linkinə daxil olun!

Tövsiyə: