Kanske förklarade jag lite dåligt i mitt första inlägg vad det var jag ville ha hjälp med, men nu har jag i alla fall löst nästan alla problem och nu fungerar väckarklockan perfekt. Men sist i det här inlägget har jag i alla fall två precisa frågor som jag hoppas kunna få svar på.
Jag har även gjort ett användarinterface så att det går att ställa in larmtiden med sekundprecision och spara den i eeprom-minnet. När man sätter på strömmen på väckarklockan skickar den först ett kommando till GPSen så att den börjar skicka ut NMEA-GGA-meddelanden, och läser larmtiden från eeprom-et och sparar det i variabler. Det här gör att väckarklockan kommer ihåg larmtiden även om det blir ett strömavbrott.
När klockan larmar spelar den några toner. När man trycker på den stora knappen på ovansidan går klockan in i snoozemod. Då väntar den 7 minuter och sedan spelar den igen. Om man trycker på knappen ännu en gång innan den har spelat igen så stänger man av larmet i 24 timmar.
Jag kan också ställa in tiden genom att stega timmarna några steg uppåt respektive nedåt. Det här är mest för att kunna ställa in sommartid och vintertid. Jag vet att det går att göra det också automatiskt men jag har nöjt mig med den har lösningen.
Det går även att justera ljusstyrkan i displayen med knapparna på baksidan. Från en lysdiod som togglas varje sekund går det fyra optofibrar fram till displayen som blir kolon. Inne i den trånga lådan sitter en 7805 som matar både klockan och GPSen. Eftersom den blev lite varm var jag tvungen att sätta en kylfläns på utsidan.
När jag höll på att utveckla programmerat råkade jag ut för att mikroC klagade på ”routine too large” då hade jag använt ca. 35% av minnet i mikrokontrollen. Felet försvann först när jag lyckades göra programmet mindre. Vad berodde det på? Och hur kan man lösa det om man vill göra ett större program?
