Ett Morrow projekt (15 / 16 steg)
Steg 15: Pergramin... porgammin... pregram... KODNING
Den faktiska koden är också otroligt rörigt saker.
Den viktigaste frågan är att jag försökte simulera analog-era elektronik. Det finns alla typer av sekvenser där man vill tona upp ett ljus, eller flash två gånger sedan paus, eller så något annat som kräver avancerade timing.
Och flera "delay()" samtal kommer inte göra det. Speciellt eftersom VFD behöver uppdateras kontinuerligt i ordning att faktiskt Visa ord och siffror. (Plus, det finns en nivå av interaktion - som användaren behöver för att kunna slå knapparna eller växlarna när som helst--som utesluter den programvara som sitter i en sluten slinga eller delay() för flera klockcykler).
Svaret är en primitiv form av RTOS--realtidsoperativsystem. I essentials, jag hade räknare körs konstant i bakgrunden, således kunde cykla genom hela main () öglan kontinuerligt. Händelser skulle ske när olika räknarvärden nåddes, och flaggor var utlöst.
Som det presenteras för användaren, har CBR fem inställningar;
UTANFÖR
Testläge
VIDARE
PÅ (tyst larm)
Behandla
"Behandla" i inställningen var kapacitans sensorn aktiv. Om användaren borstad behandling porten (faktiskt, en blå LED i en tjusig kromad ram jag hittade på AllElectronics) skulle en vibration motor köra kort, ljuset skulle flash, och displayen skulle ändras för att läsa antalet doser kvar innan påfyllning skulle vara nödvändigt.
I inställningen "Test", skulle att trycka på knappen allrengöringsmedel flash alla lampor två gånger medan du spelar en kort "kvittra." Om användaren lämnade den i "Test" för cirka femton sekunder, fyller det automatiskt vad visades som "Självtest." Det skulle visa olika slumpmässigt genererade tal med kryptiska alfa prefix, och sedan avsluta i ungefär två minuter med blinkande "Test bra."
(Eller, snarare, genom att visa något i stil med "7E57 g00d"--Detta var en sju-segment display, trots allt!)
Pengar har inställningen ON/tyst. I spelet, i världen, detta innebar att enheten aktivt sniffning för kemiska, biologiska eller radiologiska hot som var större än en förinställda tröskelvärdet, då skulle det låta ett larm (och nuvarande grundläggande information om vilken typ av hotet). Det skulle även föreslå att hotet var en som de sex doserna av inbyggda motgift skulle vara lämpliga.
För prop, om du håller nere knappen allrengöringsmedel, det skulle komma in en "simulerade hot" läge där det skulle gå igenom alla stadier av avge ett larm och som anger vad hade utlöst det.
Vid den här tiden jag började bli lite fånigt, och listan över möjliga simulerade CB hot visas var följande:
SARIN, KOLERA, TULARMIA, TYFUS, SMALLPOX, NOVICHOK,
BUFOTOXN, RICIN, EBOLA, BOLUNIN, MARBURG, ARSINE,
FOSGEN, KLOR, BROM, CYANID, MJÄLTBRANDSBAKTERIER,
SPECTROX, C DEIMOS, IOCANE
Vad gjorde listan och vad inte var styrs så mycket av vad skulle passa på 8 tecken och ser ut som ett mänskligt språk när de visas i en 7-segment display, som det var av något antingen logiska eller ens historiska. Radiologiska hot listan var liknande, inklusive gammastrålar och Carolinium (för dig HG Wells fans).
I spelet, mindre vredet är tänkt för att justera displayen känsligheten för radiologiska hot monitor, varför det är markerad i milliseiverts per timme (ungefärlig!). Och, ja, REM skulle ha varit mer period, men "mSv" såg svalare och passform i rymden bättre.