Wekker met Tetris te bewijzen u bent wakker (2 / 16 stap)

Stap 2: Code - algemeen


De code is gekoppeld aan deze stap.  Het zip-bestand is gewoon de andere drie dossiers zipped omhoog.  De "v1" op het zip-bestand gewoon geeft aan versie 1 en is een gemakkelijke manier om te controleren of er een software-update.

Alle code, met uitzondering van de kleine availableMemory()-routine, kleine werd volledig van kras door mij geschreven.

Ik aanvankelijk dacht dat de Tetris-deel van de code zou ingewikkelder dan de tijdwaarneming deel. Ik kon niet zijn geweest meer mis. Schrijven van dat Tetris voor de Arduino was een taart lopen in vergelijking met een wekker met alle functies die wilde ik. Beschrijvingen van een aantal van de programmering problemen zijn in de volgende paar stappen.

Veel parameters zijn instelbaar in de code. Ze zijn allemaal op de top van het hoofdbestand en omvatten:
-Alle toewijzingen van de draad/pin
-Standaard-tijd en beide alarmen
-Constanten de frequentie van de zoemer definiëren (standaard 4 kHz)
-Tijd die het alarm wordt gedempt telkens wanneer een knop wordt ingedrukt (standaard 30 s)
-Standaard backlight helderheid 0-128 (standaard 128)

Veel parameters zijn instelbaar via de klok zelf:
-Of dikker of kleinere stukjes worden gebruikt
-Als 2 aangepaste tekens worden gebruikt voor de stukken en 6 voor het puin hieronder of 4 personen en 4 worden gebruikt.
-Lengte van de snooze in minuten (standaard 7 min)
-Lengte van de snooze in seconden (standaard 30 seconden voor een totaal van 7 min 30 sec)
-Aantal keren uitstellen kan worden getroffen voordat u moet wakker worden (standaard 2)
-Of het raken van de snooze is absoluut of relatief, als de snooze-tijd wordt toegevoegd aan de oorspronkelijke alarmtijd of de knop wordt geraakt
-Hoeveel regels van Tetris moeten worden weggewerkt worden verklaard wakker (standaard 4)
-De klok zijn u standaardinstellingen wilt herstellen
-Sla extras zoals am/pm, dag van de week en die alarm is ingesteld in- en uitschakelen
-De huidige softwareversie display
-Opslaan en herstellen EEPROM

Veel parameters worden opgeslagen in EEPROM te overleven als macht ooit verloren volledig is. Dit wordt elke dag om middernacht opgeslagen als een van de parameters hebt gewijzigd. Zij omvatten:
-Huidige tijd (inclusief de dag van de week), en beide alarmen
-Backlight waarde
-Tetris werkmodus (zie stap 3 voor de beschrijving)
-Snooze variabelen
-Of de extra's zijn in- of uitschakelen
-Hoeveel regels duurt het wissen in Tetris verklaar jezelf wakker

Tijd bijhouden is gemaakt eenvoudig dankzij de goede mensen van Arduino van uitstekende uitvoering van de millis() functie.  Die functie wordt uitgevoerd in een interrupt en is gemaakt om niet te missen een teek.  Alles wat ik heb te doen is regelmatig toevoegen de tijd die is verstreken sinds de laatste aanroep van millis() van de huidige tijd.  Makkelijk als pie.

Ik trek een interessante manoeuvre om te zorgen voor het probleem van de roll-over millis().  De functie millis() gebruikt een niet-ondertekende long-variabele en de 32 bits betekent het tot 4294967295 kan gaan.  Maar aangezien het het bijhouden van milliseconden dat betekent het zal rollen over elke 50 dagen of zo.  Dit is meestal geen probleem, maar aangezien dit project voortdurend loopt en is afhankelijk van de functie van dat millis() moeten we rekening dat overloop.  Wat ik doe is het controleren van de millis()-functie en wanneer het de halverwege nemen sommige actie overgaat.  Wanneer het uitkomt in de code (niets tijdkritisch gebeurt) aftrekken ik de helft van de totale waarde van de millis()-functie, zowel vanuit de functie zelf mijn eigen variabelen voor tijdwaarneming.  Op die manier het kan rollen rechts voorbij dit halverwege wijs en wanneer het veilig halfvol tijd van alles aftrekken en rol op.  Het is een beetje moeilijk uit te leggen, onderzoekt de code zou kunnen helpen, maar het werkt als een charme.

Gerelateerde Artikelen

Wekker met infrarood- en Bluetooth luidsprekers

Wekker met infrarood- en Bluetooth luidsprekers

INTRODUCTIEHallo, mijn naam is Ben Hur Gonçalves, ik ben een ingenieur van de mechatronic in Universidade de São Paulo, Brazilië in 2010 afstudeerde. Tegenwoordig werk ik met de werkelijke situatie, maar ik doe deze projecten met arduino in het weeke
Wekker met behulp van Atmega-328 en RTC

Wekker met behulp van Atmega-328 en RTC

Hi iedereen! Dit is mijn eerste instructable! Na het lezen van honderden instructables, besloten heb ik om mezelf.Klok is een van de meest essentiële dingen van huis houden. Er zijn verschillende soorten klokken zoals goede oude klokken van de slinge
Hoe maak je een K'nex zonne-wekker met gebouwd in kleine elektronica lader en lockbox.

Hoe maak je een K'nex zonne-wekker met gebouwd in kleine elektronica lader en lockbox.

Here it is. De eerste knex zonne-wekker. Dit heeft me genomen meer dan een maand om te ontwerpen, bouwen, herbouwen, perfect, en instructies. In feite ik liep uit onderdelen en had om verschillende dingen uit elkaar om het af te nemen.Hoe dan ook wer
Wekker met Evive

Wekker met Evive

Wij willen een gecombineerde analoge en digitale wekker. Real Time Clock is essentieel voor de klok tijd te houden zelfs als deze is uitgeschakeld. Maar meestal micro-controller borden zoals Arduino of Raspberry Pi hoeft niet een real timerklok. Noch
Wekker met bedrading (of Arduino)

Wekker met bedrading (of Arduino)

Dit is een wekker gebouwd op de bedrading van de microcontroller en aangepast voor Colombia (het feestdagen rekening en toont alle teksten in het Spaans). De wekker geeft uur, datum, Maanstand, aangepaste berichten per dag, evenals de pictogrammen aa
LED Sunrise wekker met aanpasbare lied Alarm

LED Sunrise wekker met aanpasbare lied Alarm

Mijn motivatieDeze winter mijn vriendin had een heleboel problemen in de ochtend wakker en leek te lijden aan SAD (Seasonal Affective Disorder). Ik eens merken hoe moeilijker het is om wakker in de winter, aangezien de zon nog niet is komen. Symptome
AlarMe: De escalerende wekker met Pi en Arduino

AlarMe: De escalerende wekker met Pi en Arduino

Hier is de verwerking code die ik ontworpen en gebruikt.Voor stormloop op jezelf, Processing installeren op uw computer, download het zip-bestand en de schets zelf uitvoeren. Gebruik de instructies in-code toevoegen aan uw eigen geluidsbestanden of g
DS3231 OLED wekker met 2-knops menu-instelling en temperatuurdisplay

DS3231 OLED wekker met 2-knops menu-instelling en temperatuurdisplay

UPDATE: V1.1 voor klok pakketten geupload voor compatibiliteit met de nieuwste IDEs.Video op:: http://youtu.be/ikNw1iLE9vgAlarm demo video: http://youtu.be/jlZBCuQeswADit is een OLED wekker die ik gebouwd met behulp van een Arduino Micro, een klein O
Draadloze aangedreven bling verspreid met glasvezel sideglow: Project, u bent de

Draadloze aangedreven bling verspreid met glasvezel sideglow: Project, u bent de

Project jij degene bent. een Wireless aangedreven fiber optic kant gloed diffuus blingIk heb dit idee van het maken van nieuwheid sieraden voor mijn juffrouw, een draagbare elektronica van een soort met draadloos opladen.Op een schijnbare willekeurig
Een flipperkast 1970 's omzetten in een atoom synced wekker met behulp van een gps en een arduino

Een flipperkast 1970 's omzetten in een atoom synced wekker met behulp van een gps en een arduino

Een van de meest voorkomende problemen van pinball verzamelaars is waar we de volgende keer. De gedachte kwam bij me op een dag - wat als ik opnieuw kon purpose de flipperkast? Ik kon vervolgens vervangen door een bestaand apparaat de pin, en mijn pr
Aangepaste wekker met Kladblok

Aangepaste wekker met Kladblok

Genieten van het maken van uw eigen Alarm Volg gewoon de stappenStap 1: Hoe maak je wekkervoor Alarm om te werken u moeten hebben een mp3 genaamd AlarmType Whats hieronder In Kladblokuitschakelen: belangrijkstekleur 0ftitel wekkerCLSECHO gelieve uw n
Montage "Verstandig klok 2" (Arduino gebaseerde wekker met veel extra functies)

Montage "Verstandig klok 2" (Arduino gebaseerde wekker met veel extra functies)

deze tutorial toont hoe de kit te monteren voor Wise klok 2, een open bronproject (hardware en software).Een complete Verstandig klok 2 kit kan hier worden gekocht.Kortom is dit wat Wise klok 2 kan doen (met de huidige opensource software release):-w
Arduino wekker met menselijke detectie

Arduino wekker met menselijke detectie

Dit is een Arduino project op basis van een wekker tha detecteren kan als iemand op bed of niet, deze zijn mogelijk door een resistieve sensor onder het bevochtigingswater die detecteren kan als iemand over het bevochtigingswater is geplaatst of niet
Arduino Real Time wekker met temperatuur en LED-verlichting. Afstandsbediening

Arduino Real Time wekker met temperatuur en LED-verlichting. Afstandsbediening

Arduino Klok, met batterij back-up (real-time clock), tijd, datum, Alarm, temperatuur, LCD output, IR externe input, slaapstand, LED-verlichting (10 X) rood en blauw multi-mode.Stap 1: Stap 1: onderdelenlijstArduino Klok, met batterij back-up (real-t