Stap 3: De tijd houder
Zo verhuisd ben ik naar de real-time klok stukje van de puzzel. Op dit punt die het is de moeite waard bespreken waarom is er een RTC in het circuit. Een aanpak voor het oplossen van mijn probleem zou Stuur een raw teller van de Arduino en dan doen al het zware werk op het ontvangende einde. Echter bij nader inzien vond ik het idee dat ik kon gebruiken de reservebatterij RAM op het DS1307 als een winkel voor mijn teller en dat mijn "pakket" van gegevens zou kunnen te zenden van de tijd die de telling juist was. Dit lijkt misschien een vreemde beslissing, maar ik denk dat op de lange termijn het zal goed dienen mij.
De DS1307 is een i2c-apparaat en er zijn een aantal artikelen op het apparaat op het internet (evenals aansluiting op een Arduino), dus ik ga niet te concentreren op de ins en outs van het apparaat. In plaats daarvan zal ik illustreren een valkuil die ik tegenkwam en het uiteindelijke ontwerp ging ik voor.
Mijn eerste idee was dat de DS1307 RAM worden de opslag voor de teller en die tijdens de interrupt routine zou ik lezen en vervolgens bijwerken de teller behandeling. Echter, ontdekte ik dat terwijl de Arduino draad bibliotheek werkelijk nuttig is zal het niet in een interrupt routine werken (dat is eerlijk genoeg).
Mijn tweede benadering, die werkte, was om een teller in de Arduino RAM handhaven en, na een geconfigureerde vertraging in de hoofdlus, schrijf dan de waarde DS1307 ooilammeren.
Het circuit diagram toont de aansluitingen voor de DS1307 en hoe ik verslaafd aan de Arduino (merk op dat de Futurlec van Mini bestuur, die ik reeds gebruikte de vereiste pull-up weerstanden heeft en dus ze worden niet in het diagram weergegeven).
Dus nu had ik de tweede bouwsteen in plaats. Ik had een middel van het vastleggen van een datum en tijd en de waarde van een teller bijgewerkt door een interrupt routine.