Inhoudsopgave:

Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino - Ajarnpa
Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino - Ajarnpa

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

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Game - Arduino - Ajarnpa
Video: Why all world maps are wrong 2024, Juli-
Anonim
Image
Image
Ontwerp het bord
Ontwerp het bord

INVOERING

De volgende pagina leert je hoe je een Arduino-project kunt maken, dat twee hoofdfuncties heeft: eenvoudige decoratie met verlichting en een puzzelspel met volksmuziek, dat de gebieden geografie, geometrie, kaarten, Verenigde Naties en muziek in één omvat. Voortbouwend op de structuur van zeshoeken, beeldt het apparaat de wereldkaart af in de Azimuthal Equidistant Projection, de vorm van kaartprojectie die wordt gebruikt door de Verenigde Naties (en het symbool ervan).

Bij het activeren van de decoratiemodus gloeien de continenten van de kaart in verschillende kleuren, bepaald door willekeurige combinaties van RGB-waarden door het gebruik van RGB-LED's.

De spelmodus daarentegen vereist dat gebruikers de oorsprong van volksmuziekliedjes herkennen (geselecteerd door willekeurig getallen van 1 tot 20 te genereren) en het continentale bord van zijn/haar antwoord op de overeenkomstige positie op het houten hoofdbord in een set plaatsen tijd (vooraf ingesteld op 1 minuut).

_

BENODIGDHEDEN

Werkelijke materialen

  • 5 mm RGB-LED's * 20
  • Draden
  • Weerstanden *9
  • Arduino-bord *1 (elk type)
  • Broodplanken *3
  • Knoppen *7
  • Lcd-schermkaart I2C * 1
  • Kartonnen doos (13*9*5.7 inch; 33*23*14.5 cm)
  • Houten plank (37,5*29*0,8 cm)
  • Acrylplaten (transparant * 2, semi-transparant *1)
  • Draagbare oplader * 1

Gereedschap:

  • Blad * 1
  • UV-uithardende lijmen * 1
  • Dubbelzijdige tape * 1 rol
  • Heet Lijmpistool * 1

Machines:

Laser snij machine

Software:

  • Adobe Illustrator
  • Adobe Photoshop
  • Neushoorn 3D

Stap 1: Ontwerp het bord

U kunt het bijgevoegde bestand direct downloaden of de onderstaande stappen volgen.

De kaart schetsen

  1. Download een kaartoverzicht van Google

    1. Google "logo van de verenigde naties"
    2. Selecteer "gereedschap - maat - groot"
    3. Download je meest favoriete afbeelding (die gebruikt wordt door dit project: link) *Probeer niet degene te selecteren met ingewikkelde lijnen die overlappen met de continentale landen*
  2. Breng de gedownloade kaart over naar de printversie

    1. Kleur de ongewenste gebieden in wit met behulp van de penseelfunctie in Adobe Photoshop
    2. Exporteer het bestand (JPEG)
    3. Importeer het bestand in Adobe Illustrator en gebruik de functie "afbeelding traceren" om de kaart te traceren
    4. Exporteer het bestand (dxf)

De zeshoekige achtergrond toevoegen

  1. Importeer het dxf-bestand in Rhino
  2. Selecteer de functie "polygoon" en toets "6" in voor de optie "NumSides"
  3. Toets "3.5" in voor de straalwaarde
  4. Teken 28 even grote zeshoeken
  5. Exporteer het bestand in 3dm

Stap 2: lasersnijden

Image
Image
Laser snijden
Laser snijden
Laser snijden
Laser snijden
Laser snijden
Laser snijden
  1. Importeer het eerder ingevulde bestand naar xxx.
  2. Druk met behulp van de lasersnijmachine het hoofdgedeelte af op het houten bord en de continenten op de acrylplaten (2 transparant en 1 semi-transparant) (video's staan hierboven)

Stap 3: Bouw het apparaat

Bouw het apparaat
Bouw het apparaat
Bouw het apparaat
Bouw het apparaat
Bouw het apparaat
Bouw het apparaat

Planken na lasersnijden

  • Acryl Continenten

    1. Gebruik de UV-uithardende lijmen om de drie planken van elk continent aan elkaar te lijmen (met de semi-transparante als middelste laag)
    2. Gebruik het UV-licht om op de gelijmde gebieden te schijnen om de lijm te laten stollen
  • Houten plank stichting

    1. Verwijder handmatig de kleine landgebieden die vastzitten op het houten hoofdbord
    2. *Als een deel van de houten plank kapot is, gebruik dan de UV-uithardende lijm om ze terug te lijmen*

De basis bouwen (onderste fundering van het hele apparaat)

  1. Zoek een kartonnen doos van voldoende grootte, met afmetingen zo dicht als 13 * 9 * 5,7 inch (33 * 23 * 14,5 cm)
  2. Gebruik de houten plank als referentiemodel en trek de continentale delen over op het bovenoppervlak van de doos
  3. Trek het onderste deel van de knoppen over op het bovenoppervlak van de doos, met elke knop gecentreerd in elk getraceerd continentaal deel
  4. Gebruik een mes om de knopdelen af te snijden door de sporen te volgen
  5. Gebruik binnen de getraceerde continentale delen een mes om korte segmenten rond de knop af te snijden
  6. Trek nog twee onderste delen van de knop naar de rechterkant van de doos (probeer de sporen op dezelfde hoogte uit te lijnen)
  7. Trek het LCD-displaybord naar de rechterkant van de doos (boven de twee knoppen in de vorige stap)
  8. Gebruik een mes om de twee knopdelen en het LCD-deel af te snijden door de sporen in stap 6 en 7 te volgen

Stap 4: Bouw de circuits

Bouw de circuits
Bouw de circuits

Verwijzend naar de schema's hierboven, bouw het circuit.

Opmerking:

  • De weerstanden voor de RGB LED's en die van de knoppen zijn verschillend, KIJK DUIDELIJK!
  • Aangezien het LCD-displaybord hierboven niet het I2C-model heeft, is het niet perfect aangesloten. (LCD-displayborden met I2C-modellen hoeven slechts vier pinnen in te pluggen)

    • Sluit GND's aan op de displayer en het Arduino-bord
    • Verbind de VCC op de displayer met de positieve pinnen op het breadboard
    • Verbind de SDA's op de displayer en het Arduino-bord
    • Verbind de SCL's op de displayer en het Arduino-bord

Stap 5: Upload de code

De code voor dit project vindt u hier of hieronder.

Elke codeerregel heeft een kanttekening die het doel en de functie ervan uitlegt.

Opmerking:

  • Alle specifieke D-pinnen kunnen worden gewijzigd en aangepast op basis van de lay-out van uw circuit
  • Alle vertraagde seconden kunnen worden gewijzigd in verschillende waarden, maar VERWIJDER ze NIET! (Deze vertraagde seconden zorgen ervoor dat de code logischer verloopt. Zonder deze seconden werken sommige delen van de code mogelijk niet!)
  • Op regel 24 (de introductie van de "for-lus") kunt u het aantal herhalingen aangeven waarvoor u de lus wilt laten lopen (de oorspronkelijke waarde is 5)
  • De kleurencombinatie van de RGB-LED's in de lussen "indien ingedrukt" en "indien niet ingedrukt" van elke knop kunnen worden aangepast en aangepast. (Oorspronkelijk zouden de RGB-LED's groen schijnen als ze werden ingedrukt, terwijl ze rood zouden schijnen als ze niet werden ingedrukt. U kunt de waarden wijzigen om creatieve kleuren te hebben voor het beantwoorden van GOED en VERKEER)

#erbij betrekken

#include LiquidCrystal_I2C lcd_I2C_27(0x27, 16, 2); // stel het LCD-adres in voor een display van 16 tekens en 2 regels int _R; //introduceer variabele R, die staat voor de rode waarde van de RGB-LED's int _G; //introduceer variabele G, die staat voor de groene waarde van de RGB-leds int _B; //introduceer variabele B, die staat voor de blauwe waarde van de RGB-LED's int _SongNumber; // introduceer variabele SongNumber void setup () { pinMode (10, INPUT); // stelt D10 in als invoer voor de kaartversieringsknop pinMode (9, INPUT); // stelt D9 in als invoer voor de puzzelspelknop pinMode (8, INPUT); // stelt D8 in als invoer voor de Eurasia-knop pinMode (4, INPUT); // stelt D4 in als invoer voor de Noord-Amerikaanse knop pinMode (3, INPUT); // stelt D3 in als invoer voor de pinMode (2, INPUT) van de Zuid-Amerikaanse knop; // stelt D2 in als invoer voor de Afrika-knop pinMode (1, INPUT); // stelt D1 in als invoer voor de Oceania-knop lcd_I2C_27.init (); // initialiseer het LCD-schermbord lcd_I2C_27.backlight(); // zet de achtergrondverlichting van het LCD-scherm aan } void loop () { if (digitalRead (10)) { // als de kaartdecoratie-knop wordt ingedrukt voor (int i = 0; i <5; ++i) { // voer de volgende lus 5 keer uit _R = willekeurig (0, 1023); // geef variabele R een willekeurige waarde van 0 tot 1023 _G = willekeurig (0, 1023); // geef variabele G een willekeurige waarde van 0 tot 1023 _B = willekeurig (0, 1023); // geef variabele B een willekeurige waarde van 0 tot 1023 analogWrite (13, (_R / 4)); // de R-waarde van de RGB-LED's voor de eerste groep vervangt en schrijft de variabele waarde van 0 tot 255 analogWrite(12, (_G / 4)); //de G-waarde van de RGB-LED's voor de eerste groep vervangt en schrijft de variabele waarde van 0 tot 255 analogWrite (11, (_B / 4)); //de B-waarde van de RGB-LED's voor de eerste groep vervangt en schrijft de variabele waarde van 0 tot 255 analogWrite(7, (_R / 4)); //de R-waarde van de RGB-LED's voor de tweede groep vervangt en schrijft de variabele waarde van 0 tot 255 analogWrite(6, (_G / 4)); //de G-waarde van de RGB-LED's voor de tweede groep vervangt en schrijft de variabele waarde van 0 tot 255 analogWrite(5, (_B / 4)); // de B-waarde van de RGB-LED's voor de tweede groep vervangt en schrijft de variabele waarde van 0 tot 255 vertraging (3000); // wacht 3000 milliseconden (3 seconden) } // aangezien de waarden van variabele R, G, B in de lus worden bepaald, zouden er vijf verschillende kleurencombinaties per lus zijn } if (digitalRead (9)) { //if de puzzelspelknop is ingedrukt _SongNumber = random(1, 20); // geef variabele SongNumber een willekeurige waarde van 1 tot 20 lcd_I2C_27.setCursor (0, 0); // zet de cursor, het tellen begint met 0 lcd_I2C_27.print(_SongNumber); // druk de waarde van SongNumber af op het LCD-display board analogWrite (13, 0); // reset en schrijf de waarde van D13 als 0 analogWrite (12, 0); // reset en schrijf de waarde van D12 als 0 analogWrite (11, 0); // reset en schrijf de waarde van D11 als 0 analogWrite (7, 0); // reset en schrijf de waarde van D7 als 0 analogWrite (6, 0); // reset en schrijf de waarde van D6 als 0 analogWrite (5, 0); // reset en schrijf de waarde van D5 als 0 if (_SongNumber>= 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) {//if de waarde van variabele SongNumber is van 18 tot 20 vertraging (60000); // wacht 60000 milliseconden voor spelers om naar de volksmuziek te luisteren (60 seconden; 1 min) if (digitalRead(1)) { //if de Oceania-knop wordt ingedrukt analogWrite(13, 0); //analogWrite de waarde van D13 als 0 analogWrite (12, 255); //analogWrite de waarde van D12 als 255 analogWrite (11, 0); //analogWrite de waarde van D11 als 0 analogWrite (7, 0); //analogWrite de waarde van D7 als 0 analogWrite (6, 255); //analogWrite de waarde van D6 255 analogWrite (5, 0); //analogWrite de waarde van D5 als 0} // alle RGB-LED's zouden anders groen schijnen { // als de Oceania-knop niet wordt ingedrukt analogWrite (13, 255); //analogWrite de waarde van D13 als 255 analogWrite (12, 0); //analogWrite de waarde van D12 als 0 analogWrite (11, 0); //analogWrite de waarde van D11 als 0 analogWrite (7, 255); //analogWrite de waarde van D7 als 255 analogWrite (6, 0); //analogWrite de waarde van D6 als 0 analogWrite (5, 0); //analogSchrijf de waarde van D5 als 0 } // alle RGB-LED's zouden in rode kleur schijnen } // aangezien de juiste antwoorden voor SongNumber 18 tot 20 allemaal Oceanië zijn, geeft deze "if-lus" aan of het antwoord van de speler correct is of niet lcd_I2C_27.clear(); // wis de vertraging van het LCD-displaybord (1000); // wacht 1000 milliseconden (1 seconde) } }

Stap 6: Het apparaat afmaken

  1. Open de kartonnen doos en plaats de eerder geconstrueerde circuits (inclusief alle elementen, bijvoorbeeld: drie breadboards, het Arduino-bord, de draagbare oplader)
  2. Verwijzend naar de code en de getraceerde continentale delen op de bovenkant van de doos, stop de knoppen in elk van hun corresponderende posities

    *U kunt de kanttekeningen achter de codes raadplegen om er zeker van te zijn welke pinknop voor welk continent is*

  3. Stop de twee "functieknoppen" (kaartdeco van D10 en puzzelspel van D9) in elk van de uitgesneden delen aan de rechterkant van de doos
  4. Installeer het LCD-displaybord in het uitgesneden gedeelte aan de rechterkant van de doos
  5. Open de doos en zorg ervoor dat alle draden goed op de borden zijn aangesloten
  6. Plak de houten plankfundering op het bovenste deel van de doos met dubbelzijdig plakband (zorg ervoor dat u goed uitlijnt zodat de knoppen precies in het uitgesneden deel van de houten planken passen)
  7. Gebruik een heet lijmpistool om de kleine regiodelen in te vullen (niet de belangrijkste continenten)

Stap 7: KLAAR!!!!

Ga voor het puzzelspel naar de link voor de testplaylist!

Aanbevolen: