Innehållsförteckning:
- Steg 1: Schemat
- Steg 2: Bygg Godot -maskinen
- Steg 3: Koden: slumpmässiga siffror från kaos?
- Steg 4: Förundras över din Godot -maskin
Video: Godot -maskinen: 4 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:44
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. Med tanke på lite solsken börjar en Joule Thief -krets ladda en bank med kondensatorer.
- 2. När Arduino Nano är laddad till cirka 5V, drivs den.
- 3. Arduino genererar ett 20-bitars sant slumpmässigt tal, som visas på en 4-bitars LED-stapel.
- 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. 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. 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
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
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?
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
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!
Tvåa i tävlingen Made with Math
Rekommenderad:
Ta fantastiska bilder med en iPhone: 9 steg (med bilder)
Ta fantastiska bilder med en iPhone: De flesta av oss har en smartphone med oss överallt nuförtiden, så det är viktigt att veta hur du använder din smartphone -kamera för att ta fantastiska bilder! Jag har bara haft en smartphone i ett par år, och jag har älskat att ha en bra kamera för att dokumentera saker jag
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: 7 steg (med bilder)
Hur: Installera Raspberry PI 4 Headless (VNC) med Rpi-imager och bilder: Jag planerar att använda denna Rapsberry PI i ett gäng roliga projekt tillbaka i min blogg. Kolla gärna in det. Jag ville börja använda mitt Raspberry PI men jag hade inte ett tangentbord eller en mus på min nya plats. Det var ett tag sedan jag installerade en hallon
Hur man digitaliserar bilder och filmnegativ med en DSLR: 12 steg (med bilder)
Hur man digitaliserar diabilder och filmnegativ med en DSLR: En mångsidig och stabil inställning för digitalisering av diabilder och negativ med en DSLR eller en kamera med ett makroalternativ. Denna instruerbara är en uppdatering av Hur man digitaliserar 35 mm negativ (uppladdad juli 2011) med flera förbättringar för att utöka dess
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter - Rc helikopter - RC -plan med Arduino: 5 steg (med bilder)
Trådlös fjärrkontroll med 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sändarmottagare för Quadcopter | Rc helikopter | Rc -plan med Arduino: Att driva en Rc -bil | Quadcopter | Drone | RC -plan | RC -båt, vi behöver alltid en mottagare och sändare, antag att för RC QUADCOPTER behöver vi en 6 -kanals sändare och mottagare och den typen av TX och RX är för dyr, så vi kommer att göra en på vår
Hur man tar isär en dator med enkla steg och bilder: 13 steg (med bilder)
Hur man tar isär en dator med enkla steg och bilder: Detta är en instruktion om hur man demonterar en dator. De flesta av de grundläggande komponenterna är modulära och lätt att ta bort. Det är dock viktigt att du är organiserad kring det. Detta hjälper dig att inte förlora delar, och även för att göra ommonteringen