DIY Apple klok (2 / 10 stap)

Stap 2: Prototyping en bestanden!


Deze stap is ook nodig als je gewoon wilt bouwen van het project niet. Ik ga om te praten over de werking van de code en de hardware.

Ik ga nu de code regel voor regel doorlopen :D

De ATtiny24, 44, 84 serie heeft slechts 1 externe interrupt (INT0) [pagina 48 van het gegevensblad]. Dit is de interrupt die we meest vertrouwd zijn met het gebruik op de Arduino. U kunt gewoon gebruik maken van deze interrupt door te zeggen "attachInterrupt()"

Terwijl het had alleen 1 interrupt, ik wilde twee knoppen op mijn klok: één knop om de tijd en een ander aan het verminderen van de tijd te verhogen. Terugkijkend op het gegevensblad, de ATtiny heeft twee Pin wijzigen onderbreken poorten: PCINT0 en PCINT1 [pagina 48].

Het verschil tussen Externe onderbreekt en Pin wijzigen onderbreekt is dat een externe Interrupt eigen ISR (interrupt service routine heeft). PCINTerrupts delen een ISR voor alle pinnen op één poort. Dit betekent dat met Pin wijzigen onderbreekt kunnen we elke pin worden van een interrupt, maar dan moeten we gaan door de moeite om te bepalen welke pin veroorzaakt de interrupt op de poort.

Hier zijn twee echt goede artikelen te lezen. Dit is hoe ik geleerd:

Elk van deze variabelen bepaalt welk nummer wordt weergegeven op elk van de vier cijfers op het display van de zeepbel.
Ik heb verklaard hen volatiele omdat ze zal worden veranderd in de interrupt routines.
Optie 0 betekent wanneer mij zwenking voort mijn klok, zal de telling beginnen om 00:00 (12:00 AM).

Fysieke pinnen, 8(A5), 9(A4) en 10(A3) zal worden gebruikt met de 74HC595 shift register.
Het shift register zal ons toelaten om controle segmenten a, b, c, d, e, f, g en dp met pinnen Q0 Q1, Q2, Q3, Q4, V5, V6 en Q7 respectievelijk.
Als u wilt weergeven van elk cijfer, zullen we worden multiplexing.

Het display van de zeepbel is gemeenschappelijke kathode. Dit betekent dat wanneer het cijfer is geaard of trok naar een digitale laag, het cijfer zal oplichten. We zullen gebruiken fysieke pinnen 13(A0), 12(A1), 11(A2) en 7(A6) om de weergave van elk cijfer op het display van de zeepbel te besturen.

Dit zijn de enige waarden die we gebruiken zullen om de debounce van de twee knoppen wanneer de interrupt wordt geactiveerd. Één druk op de knop kan worden geregistreerd als vijf zonder debouncing, en met behulp van de klok zou vervelend.
Voorbeelden/digitale/ontdendering uit de Arduino controleren als u wilt.

Arduino kan lange variabelen bevatten. Ik zal met behulp van lange variabelen currentMillis en lastMillis te lezen van millis(); Na 49 dagen krijgt de waarde van de millis() te groot voor de microcontroller en overloop terug naar 0.
Dit is een slechte zaak als ik currentMillis en lastMillis om de debounce te vergelijken en de waarde van currentMillis 0 wordt ben. Ik zal later een beetje meer uitleggen.

Initialiseren wat spullen. secTime is de seconden teller en tictoc bepaalt of de stip of niet per seconde worden weergegeven.

In de setup-functie, zal ik verklaren de shift register pinnen en multiplexing pinnen als uitgang

Het volgende is het initialiseren van de Pin wijzigen onderbreekt.
cli(); is een functie die we moeten bellen interrupts uitschakelen.

GIMSK is de Algemene onderbreken masker te registreren, een register over de ATtiny. Check out pagina 51 van het gegevensblad om te kijken naar wat elke bit van het GIMSK-register doet.
0b00110000 draait op de 4e en 5e bits in het register, die PCIE0 en PCIE1 inschakelen. PCIE0 ingeschakeld Pin wijzigen onderbreekt voor de poort die pinnen 0 tot en met 7 heeft. PCIE1 ingeschakeld Pin wijzigen onderbreekt voor het deel dat pinnen 8 tot en met 11 heeft.

PCMSK0 is de Pin masker van het inschakelen van de verandering voor de pinnen 0 tot en met 7. Dit is geactiveerd vanuit de PCIE0. Ik wil om een interrupt op PCINT7 of op de ATtiny44 A7.
Om dit te doen ik activeren bit 7: 0b10000000 [pagina 53]

PCMSK1 is hetzelfde als PCMSK0 met uitzondering van pinnen 8 tot en met 11. Dit is geactiveerd vanuit de PCIE1. Ik wil een interrupt op PCINT10 inschakelen, of 8 pin.
Om dit te doen, mij in staat stellen de 2de bit: 0b00000100 [pagina 52]

Sei(); Hiermee schakelt u de interrupts.

display () is een functie die ik in de volgende stap uitleggen zal. Het is net wat je denkt dat het doet.

De beugel van code schakelt in principe de stip op het display 2 ooit tweede te simuleren tics en inhoudsopgaven.
Kortom, elke 1000 milliseconden, de code controleert of de tictoc 1 of 0 is. Als er 0, het Hiermee schakelt u de stip en tictoc ingesteld op 1. Als er 1, de stip uitgeschakeld en tictoc weer ingesteld op 0.
de + 10 en -10 zal zinvol later
In deze beugel zit ook een toename voor secTime, die telt hoeveel seconden zijn verstreken.

Als secTime 60 bereikt, verhogen we dig4 (minuten)

De volgende als lussen in feite bepalen wanneer het cijfer overloopt en moet opnieuw worden ingesteld. Bijvoorbeeld, als we 9 op dig4 hebben, het volgende moet 0 en dig2 moet worden verhoogd met 1.

Als dig1 (uur tientallen) is 2 en dig2 (uur degenen) is 4, wij herstellen de klok 00.

{ISR(PCINT0_vect)} is de interrupt routine die wordt uitgevoerd wanneer PCINT0 wordt geactiveerd door pin A7.
Deze functie wordt in principe ingesteld secTime op 0 en verlaagt dig4 door 1.
De volgende als lussen in principe omgaan met overloop.
De hele functie wordt omsloten door een debouncing als lus.

{ISR(PCINT1_vect)} is de interrupt routine die wordt uitgevoerd wanneer PCINT1 wordt geactiveerd door pin 8.
Dit doet in principe hetzelfde als de andere interrupt behalve toename in plaats van decrement.

Dit is wat gaande is in de schets van de WATCHG.ino. Om te verblijven georganiseerd, maakte ik een andere sketch ShiftDatas.ino te houden sommige variabelen en functies. In de volgende stap gaan we over die.

Gerelateerde Artikelen

DIY TiX klok

DIY TiX klok

hier is mijn instructable voor een DIY TiX klok.  Hij wordt aangedreven door een AVR microcontroller.  Het display is opgebouwd met behulp van een stukje reflector raster u vinden die betrekking hebben op office lichten, sommige gerookte perspex, een
DIY Apple Remote (Slideshow voor de instructable)

DIY Apple Remote (Slideshow voor de instructable)

hier zijn enkele van de voltooide foto's voor mijn instructable: DIY Apple Remote Shield voor de Arduino. Veel plezier! Ik hoop dat het u bevalt!
Eenvoudige user-instelbare DIY Nixie Klok

Eenvoudige user-instelbare DIY Nixie Klok

Als eerste instructable van het jaar beheerd ik eindelijk mijn eeuwenlange nixie klok om project te voltooien.Nixies zijn ventiel neonbuizen, waar tien kathoden vorm van cijfers hebben en worden verlicht door plasma als hoogspanning door hen stroomt.
DIY digitale klok

DIY digitale klok

Hebben u ooit echt verveeld en enkele leuke DIY-project te doen nodig? Nou, heb je ooit gedacht over het maken van een super, geweldig, digitale klok die u kunt eigenlijk tijd met vertellen? Goed dan u moet echt volgt awesome. Veel plezier!Stap 1: ba
DIY aardappel klok

DIY aardappel klok

Hallo iedereen! Welkom op mijn Instructables! Deze keer ik zal u tonen hoe te maken van aardappel Clock.The klok gebruik aardappel energie geen gebruik van de batterij. Hoop dat je deze Instructables, Enjoy!Stap 1: Wat je nodig hebt: Dit zijn wat je
DIY beton:: Klok

DIY beton:: Klok

dit Instructable zal u tonen hoe te werpen een vezelversterkte concrete klok in een doos van melamine, met behulp van een schuim-knock-out naar de uitsparing van het mechanisme en de wijzers.Over glasvezel gewapend beton: CHENG D-FRC is een glasvezel
DIY Apple Remote Shield voor de Arduino

DIY Apple Remote Shield voor de Arduino

heb je ooit wilde een apple remote maken? Of misschien wilt hebben tot uw creaties arduino zitten kundig voor controle iTunes op uw Mac, uw iPod of op uw Apple TV? Nu u kunt!Een tijdje terug was ik bezig met een project dat welk mij wilden voor zitte
DIY wereld klok en weer bot (Arduino + ESP8266)

DIY wereld klok en weer bot (Arduino + ESP8266)

Halloin deze instuctable leert u hoe te maken van de wereld klok weer bot met behulp van Arduino Mega en ESP8266 (AT-modus).Kenmerken:• persoonlijke bot met LCD-scherm als mond, potentiometer (potmeter) als neus en groene LEDs als ogen• kiezen stad/l
DIY decoratieve klok

DIY decoratieve klok

ik houd niet van weg te gooien eventuele uitval supawood of MDF, die ik heb liggen, en omdat ik zozeer voor projecten op Home-Dzine.co.za gebruiken. Er is altijd gegarandeerd worden van tal van kladjes.Kleine projecten zijn geweldig voor het gebruik
DIY Apple Watch VLC-controller met ESP8266, Arduino

DIY Apple Watch VLC-controller met ESP8266, Arduino

Haar een zelfgemaakte project om mijn eigen media controller app te maken.Mijn laptop aangesloten op tv, en im te lui, dus markeerde een VLC control app.Ja im weet het, er is een officiële VLC app in de store, betere functie, maar dit is mijn :)En im
DIY Deadpool klok

DIY Deadpool klok

dit is een 2 tot 3 uur durende project voor creatieve mensen die wilt accessorize hun liefde voor Deadpool.Stap 1: Verzamel uw materialen -U zult...• 1 blikje zwarte verf• 1 blikje rode verf• Een beetje witte verf• A klok gevormd stuk hout• Wijzers•
$4 DIY nieuwigheid klok

$4 DIY nieuwigheid klok

Super makkelijk en cool project.Stap 1: materialen Alles wat u nodig hebt:1.3 dollar Walmart klok ($3 wanneer ik heb de mijne)2. schaar3.pen, potlood4.Picture, pakket, wat u wilt op uw klok (ongeveer 10 "x 10")5. tape of lijmStap 2: Open de klok
DIY jodium klok reactie

DIY jodium klok reactie

alles wat u nodig hebt om dit werk te maken, kunt u vinden op uw lokale supercenter.
Maak een ontzagwekkende klok uit Sugru + twijgen

Maak een ontzagwekkende klok uit Sugru + twijgen

In de aanloop tot de kerstvakantie dit jaar we delen een geniaal idee per dag, gedurende 24 dagen! (zoiets als een adventkalender) Van ideeën om het huis klaar, tot maken van geweldige geschenken en planning van leuke activiteiten voor de pauze, deze