Innholdsfortegnelse:

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

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

Video: Azimuthal Projection 3D Map Decoration X Folk Music Puzzle Puzzle - Arduino: 7 Steps
Video: Why all world maps are wrong 2024, Desember
Anonim
Image
Image
Design styret
Design styret

INTRODUKSJON

Den følgende siden vil lære deg hvordan du lager et Arduino-prosjekt, som har to hovedfunksjoner-vanlig dekorasjon med belysning og folkemusikkoppgavespill, som inneholder feltene geografi, geometri, kart, FN og musikk samlet i ett. Basert på strukturen til sekskanter viser enheten verdenskartet i Azimuthal Equidistant Projection, som er formen for kartprojeksjon som brukes av FN (og dets symbol).

Når du aktiverer dekorasjonsmodusen, vil kontinentene på kartet lyse i forskjellige farger bestemt av tilfeldige kombinasjoner av RGB -verdier ved bruk av RGB -lysdioder.

Spillmodus, derimot, krever at brukerne gjenkjenner opprinnelsen til folkemusikksanger (valgt ved å tilfeldig generere tall fra 1 til 20) og sette svarets kontinentale brett i sin tilsvarende posisjon på hovedplaten i et sett tid (forhåndsinnstilt i 1 minutt).

_

LEVERANSER

Faktiske materialer

  • 5 mm RGB -lysdioder *20
  • Ledninger
  • Motstander *9
  • Arduino Board *1 (hvilken som helst type)
  • Brødbrett *3
  • Knapper *7
  • LCD -skjermkort I2C *1
  • Pappeske (13*9*5,7 tommer; 33*23*14,5 cm)
  • Treplate (37,5*29*0,8 cm)
  • Akrylplater (gjennomsiktig * 2, halvgjennomsiktig * 1)
  • Bærbar lader *1

Verktøy:

  • Blad *1
  • UV Cure Lim *1
  • Dobbeltsidig tape *1 rull
  • Varmlimpistol *1

Maskiner:

Laserskjæremaskin

Programvare:

  • Adobe Illustrator
  • Adobe Photoshop
  • Neshorn 3D

Trinn 1: Design brettet

Du kan laste ned den vedlagte filen direkte eller følge trinnene nedenfor.

Skisserer kartet

  1. Last ned kartoversikt fra Google

    1. Google "forente nasjoner -logo"
    2. Velg "verktøy - størrelse - stor"
    3. Last ned ditt mest favorittbilde (det som ble brukt av dette prosjektet: lenke) *Prøv å ikke velge dem med kompliserte linjer som overlapper kontinentale landområder *
  2. Overfør det nedlastede kartet til utskriftsversjonen

    1. Farg de uønskede områdene til hvitt ved å bruke penselfunksjonen i Adobe Photoshop
    2. Eksporter filen (JPEG)
    3. Importer filen til Adobe Illustrator og bruk funksjonen "bildesporing" for å spore kartet
    4. Eksporter filen (dxf)

Legger til sekskantbakgrunnen

  1. Importer dxf -filen til Rhino
  2. Velg "polygon" -funksjonen og tast inn "6" for alternativet "NumSides"
  3. Tast inn "3.5" for radiusverdien
  4. Tegn 28 like store sekskanter
  5. Eksporter filen i 3dm

Trinn 2: Laserskjæring

Image
Image
Laserskjæring
Laserskjæring
Laserskjæring
Laserskjæring
Laserskjæring
Laserskjæring
  1. Importer den tidligere fullførte filen til xxx.
  2. Bruk laserskjæremaskinen til å skrive ut hoveddelen på treplaten og kontinentene på akrylplatene (2 gjennomsiktige og 1 halvtransparente) (videoer er gitt ovenfor)

Trinn 3: Bygg enheten

Bygg enheten
Bygg enheten
Bygg enheten
Bygg enheten
Bygg enheten
Bygg enheten

Tavler etter laserskjæring

  • Akryl kontinenter

    1. Bruk UV-herdbare lim for å lime hvert kontinent sine tre brett sammen (med halvtransparent som mellomlag)
    2. Bruk UV -lyset til å skinne på de limte områdene for å la limene størkne
  • Wooden Board Foundation

    1. Fjern de små landområdene som sitter fast på hovedplaten, manuelt
    2. *Hvis noen deler av treplaten er ødelagt, bruk UV -herdbare lim for å lime dem tilbake*

Bygg basen (bunnfundament for hele enheten)

  1. Finn en pappeske av passende størrelse, med dimensjoner så nær som 13*9*5,7 tommer (33*23*14,5 cm)
  2. Ved å bruke treplaten som referansemodell, kan du spore de kontinentale delene på boksens øvre overflate
  3. Spor den nedre delen av knappene på boksens øvre overflate, med hver knapp sentrert i hver spores kontinentale del
  4. Bruk et blad til å kutte av knappdelene ved å følge sporene
  5. Innenfor de spores kontinentale delene, bruk et blad for å kutte korte segmenter rundt knappen
  6. Spor ytterligere to nedre deler av knappen på høyre side av esken (prøv å justere sporene med samme høyde)
  7. Spor LCD -skjermkortet på høyre side av esken (over de to knappene i forrige trinn)
  8. Bruk et blad til å kutte av de to knappdelene og LCD -delen ved å følge sporene i trinn 6 og 7

Trinn 4: Bygg kretsene

Bygg kretsene
Bygg kretsene

Med henvisning til skjemaene ovenfor, bygg kretsen.

Merk:

  • Motstandene for RGB -lysdiodene og knappene er forskjellige, SE KLART!
  • Siden LCD -skjermkortet ovenfor ikke har I2C -modellen, er det ikke perfekt tilkoblet. (LCD -skjermkort med I2C -modeller trenger bare å koble til fire pinner)

    • Koble GND -er på displayet og Arduino -kortet
    • Koble VCC på displayet med de positive pinnene på brødbrettet
    • Koble SDA -ene på displayet og Arduino -kortet
    • Koble SCL -ene på displayet og Arduino -kortet

Trinn 5: Last opp koden

Koden for dette prosjektet finner du her eller nedenfor.

Hver kodelinje har et sidebeskjed som forklarer formålet og funksjonen.

Merk:

  • Alle de spesifikke D -pinnene kan endres og justeres basert på kretsens oppsett
  • Alle forsinkede sekunder kan endres til forskjellige verdier, men IKKE SLETT dem! (Disse forsinkede sekundene tillater at koden flyter mer logisk. Uten dem kan det hende at noen deler av koden ikke fungerer!)
  • På linje 24 (introduksjonen av "for loop") kan du angi antall repetisjoner du vil at loopen skal kjøres for (den opprinnelige verdien er 5)
  • RGB -lysdiodenes fargekombinasjon i hver knapps “hvis den trykkes” og “hvis den ikke trykkes” kan justeres og tilpasses. (Opprinnelig ville RGB -lysdiodene skinne i grønt hvis de ble trykket mens de ville skinne i rødt hvis de ikke ble trykket på. Du kan endre verdiene til å ha kreative farger for å svare RETT og FEIL)

#inkludere

#include LiquidCrystal_I2C lcd_I2C_27 (0x27, 16, 2); // angi LCD -adressen for 16 tegn og 2 linjers display int _R; // introdusere variabel R, som står for den røde verdien av RGB -lysdiodene int _G; // introdusere variabel G, som står for den grønne verdien av RGB -lysdiodene int _B; // introdusere variabel B, som står for den blå verdien av RGB -lysdiodene int _SongNumber; // introdusere variabel SongNumber void -oppsett () {pinMode (10, INPUT); // setter D10 som inngang for kartdekorasjonsknappen pinMode (9, INPUT); // setter D9 som inngang for puslespillknappen pinMode (8, INPUT); // setter D8 som inngang for Eurasia -knappen pinMode (4, INPUT); // setter D4 som inngang for Nord -Amerika -knappen pinMode (3, INPUT); // setter D3 som inngang for Sør -Amerika -knappen pinMode (2, INPUT); // setter D2 som inngang for Afrika -knappen pinMode (1, INPUT); // setter D1 som inngang for Oseania -knappen lcd_I2C_27.init (); // initialiser LCD -skjermkortet lcd_I2C_27.backlight (); // slå på bakgrunnsbelysningen på LCD-skjermkortet} void loop () {if (digitalRead (10)) {// hvis kartdekorasjonsknappen trykkes for (int i = 0; i <5; ++ i) {// kjør følgende sløyfe i 5 ganger _R = tilfeldig (0, 1023); // gi variabel R en tilfeldig verdi fra 0 til 1023 _G = tilfeldig (0, 1023); // gi variabel G en tilfeldig verdi fra 0 til 1023 _B = tilfeldig (0, 1023); // gi variabel B en tilfeldig verdi fra 0 til 1023 analogWrite (13, (_R /4)); // R -verdien til RGB -lysdiodene for den første gruppen erstatter og skriver variabelverdien fra 0 til 255 analogWrite (12, (_G /4)); // G -verdien til RGB -lysdiodene for den første gruppen erstatter og skriver variabelverdien fra 0 til 255 analogWrite (11, (_B /4)); // B -verdien til RGB -lysdiodene for den første gruppen erstatter og skriver variabelverdien fra 0 til 255 analogWrite (7, (_R /4)); // R -verdien til RGB -lysdiodene for den andre gruppen erstatter og skriver variabelverdien fra 0 til 255 analogWrite (6, (_G /4)); // G -verdien til RGB -lysdiodene for den andre gruppen erstatter og skriver variabelverdien fra 0 til 255 analogWrite (5, (_B /4)); // B -verdien til RGB -lysdiodene for den andre gruppen erstatter og skriver variabelverdien fra 0 til 255 forsinkelse (3000); // vent i 3000 millisekunder (3 sekunder)} // siden verdiene til variabelen R, G, B er bestemt i sløyfen, ville det være fem forskjellige fargekombinasjoner per sløyfe} if (digitalRead (9)) {// if puslespillknappen trykkes _SongNumber = tilfeldig (1, 20); // gi variabelen SongNumber en tilfeldig verdi fra 1 til 20 lcd_I2C_27.setCursor (0, 0); // sett markøren, tellingen begynner med 0 lcd_I2C_27.print (_SongNumber); // skriv ut verdien av SongNumber til LCD -skjermkortet analogWrite (13, 0); // tilbakestill og skriv verdien av D13 som 0 analogWrite (12, 0); // tilbakestill og skriv verdien av D12 som 0 analogWrite (11, 0); // tilbakestill og skriv verdien av D11 som 0 analogWrite (7, 0); // tilbakestill og skriv verdien av D7 som 0 analogWrite (6, 0); // tilbakestill og skriv verdien av D6 som 0 analogWrite (5, 0); // tilbakestill og skriv verdien av D5 som 0 hvis (_SongNumber> = 1 && _SongNumber = 4 && _SongNumber = 7 && _SongNumber = 11 && _SongNumber = 15 && _SongNumber = 18 && _SongNumber <= 20) {// hvis verdien av variabel SongNumber er fra 18 til 20 forsinkelse (60000); // vent i 60000 millisekunder på at spillerne skal lytte til folkemusikken (60 sekunder; 1 min) hvis (digitalRead (1)) {// hvis du trykker på Oceania -knappen analogWrite (13, 0); // analogWrite verdien av D13 som 0 analogWrite (12, 255); // analogWrite verdien av D12 som 255 analogWrite (11, 0); // analogWrite verdien av D11 som 0 analogWrite (7, 0); // analogWrite verdien av D7 som 0 analogWrite (6, 255); // analogWrite verdien av D6 255 analogWrite (5, 0); // analogWrite verdien av D5 som 0} // alle RGB -lysdiodene lyser i grønn farge ellers {// hvis du ikke trykker på Oceania -knappen analogWrite (13, 255); // analogWrite verdien av D13 som 255 analogWrite (12, 0); // analogWrite verdien av D12 som 0 analogWrite (11, 0); // analogWrite verdien av D11 som 0 analogWrite (7, 255); // analogWrite verdien av D7 som 255 analogWrite (6, 0); // analogWrite verdien av D6 som 0 analogWrite (5, 0); // analog Skriv verdien av D5 som 0} // alle RGB -lysdiodene lyser i rød farge} // siden de riktige svarene for SongNumber 18 til 20 alle er Oceania, får denne "if loop" tilgang til om spillerens svar er riktig eller ikke lcd_I2C_27.clear (); // tøm forsinkelsen på LCD -skjermkortet (1000); // vent i 1000 millisekunder (1 sekund)}}

Trinn 6: Fullfør enheten

  1. Åpne pappkassen og sett i de tidligere konstruerte kretsene (inkludert alle elementer, for eksempel: tre brødbrett, Arduino -brettet, den bærbare laderen)
  2. Med henvisning til koden og de spores kontinentale delene på toppen av esken, stopper du knappene i hver av de tilsvarende posisjonene

    *Du kan referere til sidemerkene bak kodene for å sikre hvilken pin -knapp som er for hvilket kontinent*

  3. Stopp de to "funksjonsknappene" (map-deco av D10 og puslespillet D9) i hver av kuttdelene på høyre side av esken
  4. Installer LCD -skjermkortet i den kuttede delen på høyre side av esken
  5. Åpne esken og kontroller at alle ledningene er ordentlig koblet til brettene
  6. Fest treplatefundamentet til den øvre delen av esken ved å bruke dobbeltsidig tape (sørg for å justere riktig slik at knappene kan passe rett inn i den kappede delen av treplatene)
  7. Bruk varm limpistol for å fylle ut delene i den lille regionen (ikke hovedkontinentene)

Trinn 7: FERDIG !!!!

For puslespillet, gå til lenken for testing av spillelisten!

Anbefalt: