Procedure om de drukknoppen in te lezen (bediening). |
-
BedieningOnze klok heeft 3 bedieningstoetsen:
Bij het verlaten van de instelmodus ALARM wordt de alarmtijd in de EEPROM opgeslagen. Omdat de arduino nano die we gebruiken te weinig in- en uitgangen heeft, gebruiken we een analoge ingang om de ingedrukte knop in te lezen. Men gebruikt een spanningsdeler bestaande uit twee weerstanden (één weerstand per drukknop en één belastingsweerstand). Een schakelvoorbeeld is te vinden op de pagina sturing van de verwarming met een arduino. Om fouten te vermijden wordt een input pas geldig beschouwd als die twee cycli stabiel blijft (minstens 1ms). We gebruiken enkel de opgaande flank, een toets blijvend ingedrukt houden heeft geen effekt. Er wordt een speciale manier van programmeren gebruikt: de toetsen worden ingelezen en de status aangepast, maar er gebeurt geen directe verwerking. Later in de lus worden de statussen gebruikt voor de verwerking (bijvoorbeeld het tonen van de alarmtijd of gewone tijd). Deze manier van programmeren is zeer efficient omdat er niet constant gereageerd moet worden op events. De events worden gewoon opgeslagen (als statuswijziging).
Aansturing displayDe aansturing van de nixie buizen wordt hier besproken. Men heeft 45 cathodes die aangestuurd moeten worden (tientallen uren: 3 + eenheden uren: 10 + tientallen minuten: 6 + eenheden minuten: 10 + tientallen seconden: 6 + eenheden seconden: 10). Met ons zeer beperkt aantal uitgangspoorten heeft men een tweetraps poort expander nodig.
De arduino uno heeft een real time klok nodig want het kristal is niet voorzien voor een nauwkeurige tijdsaanduiding (gewone processorkristal). De real time klok blijft lopen bij stroomonderbreking of reset. De software (listing) is hier te vinden. |
Publicités - Reklame