Skrevet av Vegard G. Jervell, dedikert til Kjellerstyret i Høiskolens Chemikerforening. Hvis du leser dette vil jeg også rette en takk til Ole Tobias Lode fra Elektra for vanvittig hjelp med å lodde led-striper til klokka 0100 på natta og til kjellern-sjaepH Andrea Tonheim (HC) for at hun også sto på til klokka 0100 for at dette kunne komme opp og funke, uten dem hadde dette aldri vært mulig! Kos dere med awsm leds! ############################################################################################### NB NB NB! Det er mer info i mappen "LEDS_med_ekstra"! Du burde sjekke den først! ############################################################################################### Det er mappene kjellern_..._xxxxxx som har blitt kjørt og fungert på kjellern (xxxxxx er datoen de ble kjørt første gang, ... er det som skiller dem fra de andre kodene). De andre mappene er ymse forsøk på å lære seg arduino, leds, c++ og feilsøking. Koden bruker FastLED biblioteket, det er noen eksempler på det i libraries/FastLED/examples LED-stripsene drives av P9813 - LED-strip drivers. Det er planlagt å lage en ZyyrepHaest-knapp, men den har ikke blitt lagd enda. For å aktivere Zyyre-modus må man åpne kodefilen, sette variabelen "ZyyrepHaest" til "true" (liten "t") og laste opp koden. For å laste opp et program til arduinoen (eller endre noe i et program) gjør du følgende: 1) Last ned programmet "Arduino" (google) 2) Last ned .zip filen som heter "arduino" fra drive 3) Nå har det blitt opprettet en mappe på pc'en din som heter "Arduino" (sannsynligvis i Dokumenter). Legg innholdet i .zip-filen (alle mappene) inn i mappen som heter "Arduino". 4) Koble USB'en til arduinoen i pc'en (hvis du bare har USB-C suger det å være deg) 5) Åpne den filen du vil kjøre og trykk "Upload" (høyrepil oppe i venstre hjørne) 5) Hvis du får en feilmelding trykk på Tools => Port og se om det er en port hvor det står "Arduino/Genuino" eller noe sånt, velg den og prøv på nytt. 6) Hvis alt går bra men lysene oppfører seg rart kan det hende det er noe gæærnt med mikrokontrollerene, da kan jeg ikke gjøre så mye mer for deg fra der jeg er nå. Lykke til! Her følger en forklaring av hvordan koden funker og hva de forskjellige variablene gjør (se flytskjema for grafisk fremstilling): Volum leses inn fra minijacken som en analogt input, det gir en verdi mellom 0 og 1024. Det viser seg at de høyeste lesningene man får typisk ligger rundt 90. Det lages en liste (volume_reads) av de siste xx målingene, basert på denne lista blir volum filtrert på litt forskjellige måter (enten "gliding window" eller med lineærregresjon) dette er for at ikke lyset skal bli syykt glitchete pga. støy. Filtrering (avg_countsize og linreg_countsize): Gliding window funker ved at du har en liste med de siste xx målingene og tar snittet av denne for å få noe i nærheten av den nyeste målingen. Det funker helt brukbart. Lineærregresjon funker ved at du gjør en lineærregresjon av de siste xx målingene og evaluerer regresjonen i det siste punktet. Dette er en del hakk bedre. Max_vol, max_vol_counter og max_vol_decay_factor: For at lysstyrken ikke skal bli lav hvis noen har hatt høy lyd og skrur ned lyden kommer verdien til "max_vol" til å synke dersom den ikke har blitt overskrevet på en stund. Altså: hvis det går "max_vol_decay" målinger uten at max_vol har økt, kjøres max_vol = max_vol_decay_factor * max_vol, hvor max_vol_decay_factor er et tall som er mellom 0 og 1 (typisk rundt 0.9). Skalering (max_vol, min_lysstyrke og volumskalering): Led-lysene har en lysstyrke mellom 0 og 255, for at lyset skal bli bra hele tiden skaleres volumavlesningen fra et tall mellom 0 og max_vol til et tall mellom min_lysstyrke og 255. Denne skaleringen kan være lineær, kvadratisk eller hva du vil (styres med parameteren "volumskalering" For å se dette, lag funksjonen y = ((255 - b)/ m^p) * x^p + b i geogebra og varier m, p og b med sliders. Her er y = lysstyrke, x = volum, m = høyeste avleste volum, b = minste lysstyrke og p = volumskalering. Fargeendring (rolig_fargeendringstempo og musikk_fargeendringstempo) Fargen på lysene justeres gradvis. Jo høyere disse tallene er, jo saktere endres fargen. Hvis ZyyrepHaest = true, kommer fargene til å endres fortere når volumet er høyere.