Innholdsfortegnelse:

Godot -maskinen: 4 trinn (med bilder)
Godot -maskinen: 4 trinn (med bilder)

Video: Godot -maskinen: 4 trinn (med bilder)

Video: Godot -maskinen: 4 trinn (med bilder)
Video: ЛЁГКАЯ ОТДЫХАЮЩАЯ КОМЕДИЯ! ОЧЕНЬ СМЕШНОЙ ФИЛЬМ! "Мужчина в Моей Голове" РУССКИЕ КОМЕДИИ НОВИНКИ 2024, November
Anonim
Godot -maskinen
Godot -maskinen

Hva er en Godot -maskin?

Det er en del av den menneskelige opplevelsen at vi kan befinne oss i en tilstand av å vente på noe som til slutt kan skje etter lang ventetid, eller ikke i det hele tatt.

Godot-maskinen er et soldrevet stykke elektro- "kunst" som prøver å fange den desperate følelsen som følger med muligens meningsløs venting.

Navnet er fra Samuel Becketts berømte skuespill Waiting for Godot, der to menn venter på at en bestemt Godot kommer, som kan komme i morgen, dagen etter eller aldri.

Så hva gjør Godot -maskinen?

  1. 1. Gitt litt sol, begynner en Joule Thief -krets å lade en bank med kondensatorer.
  2. 2. Når Arduino Nano er ladet til omtrent 5V, får den strøm.
  3. 3. Arduino genererer et 20-biters sant tilfeldig tall, som vises på en 4-biters LED-stolpe.
  4. 4. Dette tallet sammenlignes med et annet tilfeldig tall, ukjent for alle, som ble lagret i eeprom første gang kretsen startet.
  5. 5. Hvis det er like, er ventetiden over, maskinen lagrer dette faktum i eeprom, og fra nå av aktiveres den grønne LED -en og piezo -piperen (hvis det er nok energi).
  6. 6. Hvis ikke like, håp, fortvilelse, gjenta.

… også, en gang i blant blir det genererte nummeret hørbart av piperen, så du glemmer faktisk ikke at du har en Godot -maskin.

Gitt at sannsynligheten for å treffe Godot -tallet er 1 over 2^20 eller omtrent en i en million, og maskinen ikke er veldig rask, spesielt om vinteren og høsten, kan det ta år å finne den. Godot -maskinen din kan til og med bli en del av arven din. Mens du venter på at det skal teste det neste nummeret, kan du fantasere om hvordan dine store oldebarn endelig kan se det komme til sin konklusjon. Kort sagt: det er den ideelle gaven for den kommende høytiden!

Trinn 1: Den skjematiske

Den skjematiske
Den skjematiske

Godot -maskinen består av:

-En Joule Thief energihøster (Q1) som lader 9x2200uF kondensatorer. For de som lider av helixafobi (en irrasjonell angst av induktorer, mens kondensatorer og motstander ikke utgjør et slikt problem), frykt ikke fordi det ikke er nødvendig med manuell vikling: koblingen opprettes ved å plassere standard koaksiale induktorer i hverandres nærhet som vist her i 2. bilde. Fantastisk triks!

-En diskret transistor -strømbryter (Q2, Q3, Q4), som slås på ved 5V1 omtrent og av på rundt 3.0V. Det kan være lurt å stille inn R2-R4 litt hvis du bruker forskjellige (generelle) transistortyper.

-En entropi -generator (Q6, Q7, Q8). Denne kretsen forsterker den elektroniske støyen som er tilstede i miljøet fra mikrovolt til voltnivå. Dette signalet blir deretter samplet for å frø en kaosbasert (les videre) tilfeldig tallgenerator. Et stykke gitarstreng fungerer som en antenne.

-En LED-bar med 4 lysdioder eller 4 røde separate lysdioder, en piezo-piper og en grønn LED.

Vær oppmerksom på at utgangen til strømbryteren (samler av Q4) er koblet til 5V -pinnen på Arduino Nano, IKKE til VIN -pinnen!

Trinn 2: Bygg Godot -maskinen

Bygging av Godot -maskinen
Bygging av Godot -maskinen
Bygging av Godot -maskinen
Bygging av Godot -maskinen
Bygging av Godot -maskinen
Bygging av Godot -maskinen

Jeg bygde kretsen på et stykke perfboard. Ikke noe spesielt der. 2V/200mA solcellepanel er en rest fra et annet prosjekt. Merket er Velleman. Det er lett å lirke den opp med en skarp kniv, for å bore hull for skruer etc. Kretskort og solcellepanel er skrudd på to stykker kryssfiner, som vist på bildet. Tanken er at solcellepanelet kan plasseres mot solen på et vindu i stillhet.

Trinn 3: Koden: Tilfeldige tall fra kaos?

Koden: Tilfeldige tall fra kaos?
Koden: Tilfeldige tall fra kaos?
Koden: Tilfeldige tall fra kaos?
Koden: Tilfeldige tall fra kaos?
Koden: Tilfeldige tall fra kaos?
Koden: Tilfeldige tall fra kaos?

Hvordan lages tilfeldige tall? Vel, de er laget med matematikk!

I stedet for å bruke Arduino random number generator -funksjonen random (), bestemte jeg meg for å skrive min egen Random Number Generator (RNG), bare for moro skyld.

Det er basert på det logistiske kartet, som er det enkleste eksempelet på deterministisk kaos. Slik fungerer det:

Anta at x er en reell verdi mellom 0 og 1, og bereg deretter: x*r*(1-x), hvor r = 3,9. Resultatet er ditt neste 'x'. Gjenta ad infinitum. Dette vil gi deg en rekke tall mellom 0 og 1, som på det første bildet, hvor denne prosessen startes for startverdien x = 0,1 (rød) og også x = 0,1001 (blå).

Nå er den kule delen: uansett hvor nært du velger to forskjellige innledende forhold, hvis de ikke er nøyaktig like, vil den resulterende serien med tall til slutt avvike. Dette kalles 'Sensitiv avhengighet av innledende forhold'.

Matematisk er kartligningen x*r*(1-x) en parabel. Som vist i den andre figuren, kan du grafisk bestemme x-serien ved å bruke det som er kjent som en spindelvevkonstruksjon: start fra x på den horisontale aksen, finn funksjonsverdien på y-aksen, og reflekter deretter mot en rett linje på 45 grader vinkel går gjennom opprinnelsen. Gjenta. Som vist for den røde og blå serien, divergerer de helt etter omtrent 30 iterasjoner, selv om de er i nærheten i utgangspunktet.

Nå, hvor kommer r -3.9 -tallet fra? Det viser seg at for lave verdier av r, får vi bare to alternerende x-verdier. Å øke r-parameteren vil da på et tidspunkt bytte til en oscillasjon mellom 4, 8, 16 verdier osv. Disse forgreningene eller forgreningene kommer stadig raskere etter hvert som r økes, i det som kalles en 'periodedoble rute til kaos'. Et plott med r på den horisontale aksen og mange x-iterater overlappet vertikalt vil resultere i det som er kjent som et bifurcation-plot (3. figur). For r = 3,9 er kartet fullt kaotisk.

Så hvis vi beregner mange x-oppdateringer og prøver fra dem, får vi et tilfeldig tall? Vel, nei, på dette tidspunktet ville det være en Pseudo Random Number generator (PRNG), siden hvis vi alltid starter fra samme startverdi (etter å ha kommet ut av reset), ville vi alltid få den samme sekvensen; aka deterministisk kaos. Det er her entropi-generatoren kommer inn, som frøer det logistiske kartet med et tall laget av elektrisk støy som finnes i miljøet.

Med ord gjør tilfeldig tallgenerator -koden dette:

- Mål spenningen fra entropi -generatoren på pinne A0. Behold bare de 4 minst signifikante bitene.

- Skift disse 4 bitene til en "seed" -verdi, gjenta 8 ganger for å få et 32-biters flytende punktfrø.

- Omskaler frøet mellom 0 og 1.

- Beregn gjennomsnittet av dette frøet og x, den nåværende tilstanden til det logistiske kartet.

- Fremskritt det logistiske kartet mange (64) trinn.

- Trekk ut en enkelt bit fra den logistiske karttilstanden x ved å sjekke noen ubetydelige desimaler.

- Skift den biten inn i det endelige resultatet.

- Gjenta alle trinnene over 20 ganger.

Merk: I koden er Serial.println og Serial.begin utkommentert. Fjern // for å sjekke de genererte tilfeldige tallene på den serielle skjermen.

For å være rettferdig har jeg ikke statistisk sjekket kvaliteten på tilfeldige tall (f.eks. NIST -testpakke), men de ser ut til å være OK.

Trinn 4: Beundre Godot -maskinen din

Beundre din Godot -maskin!
Beundre din Godot -maskin!

Nyt Godot -maskinen din, og del, kommenter og/eller spør om noe er uklart.

Mens du venter på at Godot -nummeret skal bli funnet, kan du stemme på denne Instructable i Made With Math -konkurransen! Takk!

Laget med Math Contest
Laget med Math Contest
Laget med Math Contest
Laget med Math Contest

Andreplass i konkurransen Made with Math

Anbefalt: