Innehållsförteckning:

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

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

Video: Godot -maskinen: 4 steg (med bilder)
Video: Женщина подала на развод сразу после того, как увидела это фото... 2024, Juli
Anonim
Godot -maskinen
Godot -maskinen

Vad är en Godot -maskin?

Det är en del av den mänskliga upplevelsen att vi kan befinna oss i ett tillstånd av att vänta på något som så småningom kan hända efter en lång väntan, eller inte alls.

Godot-maskinen är ett soldrivet stycke elektro- "konst" som försöker fånga den desperata känslan som åtföljer möjligen meningslös väntan.

Namnet är från Samuel Becketts berömda pjäs Waiting for Godot, där två män väntar på att en viss Godot kommer, som kan komma imorgon, dagen efter eller aldrig.

Så vad gör Godot -maskinen?

  1. 1. Med tanke på lite solsken börjar en Joule Thief -krets ladda en bank med kondensatorer.
  2. 2. När Arduino Nano är laddad till cirka 5V, drivs den.
  3. 3. Arduino genererar ett 20-bitars sant slumpmässigt tal, som visas på en 4-bitars LED-stapel.
  4. 4. Detta nummer jämförs med ett annat slumpmässigt tal, okänt för alla, som lagrades i eeprom första gången kretsen startades.
  5. 5. Om lika är väntetiden över, maskinen lagrar detta faktum i eeprom och från och med nu aktiveras den gröna lysdioden och piezopipet (om det finns tillräckligt med energi).
  6. 6. Om inte lika, hoppas, förtvivlan, upprepa.

… också, då och då görs det genererade numret hörbart av piparen, så du glömmer faktiskt inte att du har en Godot -maskin.

Med tanke på att sannolikheten att träffa Godot -talet är 1 över 2^20 eller ungefär en på en miljon, och maskinen inte är särskilt snabb, särskilt på vintern och hösten, kan det ta år att hitta den. Din Godot -maskin kan till och med bli en del av ditt arv. I väntan på att det ska testa nästa nummer kan du fantisera om hur dina avlägsna barnbarnsbarn äntligen kan se det komma till sin slutsats. Kort sagt: det är den perfekta presenten för den kommande semesterperioden!

Steg 1: Schemat

Den schematiska
Den schematiska

Godot -maskinen består av:

-En Joule Thief energiskördare (Q1) som laddar 9x2200uF kondensatorer. För dem som lider av helixafobi (en irrationell ångest hos induktorer, medan kondensatorer och motstånd inte utgör något sådant problem), rädda inte eftersom ingen manuell lindning krävs: kopplingen skapas genom att placera standard koaxiala induktorer i varandras närhet som visas här i 2: a bilden. Fantastiskt knep!

-En diskret transistorströmbrytare (Q2, Q3, Q4), som slås på vid 5V1 ungefär och av vid cirka 3.0V. Du kanske vill ställa in R2-R4 lite om du använder olika transistortyper (för allmänna ändamål).

-En entropi -generator (Q6, Q7, Q8). Denna krets förstärker det elektroniska bruset som finns i miljön från mikrovolts till voltnivåer. Den signalen samplas sedan för att utsäde en kaosbaserad (läs vidare) slumptalsgenerator. En bit gitarrsträng fungerar som en antenn.

-En LED-bar med 4 lysdioder eller 4 röda separata lysdioder, en piezo-pip och en grön lysdiod.

Observera att utgången från strömbrytaren (kollektor Q4) är ansluten till 5V -stiftet på Arduino Nano, INTE till VIN -stiftet!

Steg 2: Bygg Godot -maskinen

Bygga Godot -maskinen
Bygga Godot -maskinen
Bygga Godot -maskinen
Bygga Godot -maskinen
Bygga Godot -maskinen
Bygga Godot -maskinen

Jag byggde kretsen på en bit perfboard. Inget speciellt där. Solpanelen 2V/200mA är en rest från ett annat projekt. Märket är Velleman. Det är lätt att bända upp den med en vass kniv, borra hål för skruvar etc. Kretskort och solpanel skruvas fast på två bitar av plywood, som visas på bilden. Tanken är att solpanelen kan placeras mot solen på ett fönster fortfarande.

Steg 3: Koden: slumpmässiga siffror från kaos?

Koden: slumpmässiga siffror från kaos?
Koden: slumpmässiga siffror från kaos?
Koden: slumpmässiga siffror från kaos?
Koden: slumpmässiga siffror från kaos?
Koden: slumpmässiga siffror från kaos?
Koden: slumpmässiga siffror från kaos?

Hur görs slumpmässiga nummer? Tja, de är gjorda med matematik!

Istället för att använda Arduino random number generator -funktionen random () bestämde jag mig för att skriva min egen Random Number Generator (RNG), bara för skojs skull.

Den bygger på den logistiska kartan, som är det enklaste exemplet på deterministiskt kaos. Så här fungerar det:

Antag att x är något verkligt värde mellan 0 och 1, beräkna sedan: x*r*(1-x), där r = 3,9. Resultatet är ditt nästa 'x'. Upprepa ad infinitum. Detta ger dig en serie siffror mellan 0 och 1, som på den första bilden, där denna process startas för det initiala värdet x = 0,1 (rött) och även x = 0,1001 (blått).

Nu är den coola delen: oavsett hur nära du väljer två olika inledande förhållanden, om de inte är exakt lika kommer den resulterande serien med tal så småningom att avvika. Detta kallas "Känsligt beroende av initiala förhållanden".

Matematiskt är kartaekvationen x*r*(1-x) en parabel. Som visas i den andra figuren kan du grafiskt bestämma x-serien med hjälp av en så kallad spindelvävskonstruktion: börja från x på den horisontella axeln, hitta funktionsvärdet på y-axeln och reflektera sedan mot en rak linje vid 45 graders vinkel genom ursprunget. Upprepa. Som visas för den röda och blå serien, även om de är nära inledningsvis, skiljer de sig helt efter cirka 30 iterationer.

Nu, var kommer numret 'r = 3.9' ifrån? Det visar sig att för låga värden på r får vi bara två alternerande x-värden. Ökning av r-parametern kommer då vid något tillfälle att växla till en oscillation mellan 4, 8, 16 värden etc. Dessa förgreningar eller förgreningar kommer allt snabbare när r ökas, i vad som kallas en 'perioddubblande väg till kaos'. En tomt med r på den horisontella axeln och många x-iterater som överlappar vertikalt kommer att resultera i det som kallas en bifurkationsdiagram (3: e figuren). För r = 3,9 är kartan helt kaotisk.

Så om vi beräknar många x-uppdateringar och prov från dem får vi ett slumpmässigt tal? Tja nej, vid denna tidpunkt skulle det vara en Pseudo Random Number generator (PRNG), eftersom om vi alltid utgår från samma initialvärde (efter att ha kommit ur återställningen), skulle vi alltid få samma sekvens; aka deterministiskt kaos. Det är här entropi-generatorn kommer in, som fröar den logistiska kartan med ett nummer som skapas av elektriskt brus som finns i miljön.

Med ord gör slumptalsgeneratorkoden detta:

- Mät spänningen från entropgeneratorn på stift A0. Behåll bara de fyra minst betydande bitarna.

- Ändra dessa 4 bitar till ett 'seed' -värde, upprepa 8 gånger för att få en 32-bitars floating point seed.

- Skala fröet mellan 0 och 1.

- Beräkna genomsnittet av detta frö och x, det aktuella tillståndet för den logistiska kartan.

- Avancera den logistiska kartan många (64) steg.

- Extrahera en enda bit från det logistiska kartläget x genom att kontrollera några obetydliga decimaler.

- Flytta in den biten i slutresultatet.

- Upprepa alla steg ovan 20 gånger.

Obs! I koden utfärdas Serial.println och Serial.begin. Ta bort // för att kontrollera de genererade slumptalen på den seriella bildskärmen.

För att vara rättvis har jag inte statistiskt sett kontrollerat kvaliteten på slumpmässiga nummer (t.ex. NIST -testpaket) men de verkar vara OK.

Steg 4: Förundras över din Godot -maskin

Förundras över din Godot -maskin!
Förundras över din Godot -maskin!

Njut av din Godot -maskin och dela, kommentera och/eller fråga om något är oklart.

Medan du väntar på att Godot -numret ska hittas, vänligen rösta på denna Instructable i Made With Math -tävlingen! Tack!

Gjord med Math Contest
Gjord med Math Contest
Gjord med Math Contest
Gjord med Math Contest

Tvåa i tävlingen Made with Math

Rekommenderad: