Stap 7: De code is de lijm
Ik gebruikte de laatste Arduino IDE 1.0 die ik briljant heeft geweest zeggen moet, vooral als je kunt nu het programma met behulp van de ISP-programmeur en niet zijn voor kopzorg zowat USB dongles of circuits. Een ding dat ik zou zeggen dat je moet nog steeds om te branden van de bootloader op uw lege ATmega328 chip anders foutopsporing wordt een beetje een uitdaging zoals de Arduino omgeving is niet correct is ingesteld!
De code die ik heb samengesteld is 8,346 bytes in grootte, zodat u de chip ATmega168 gebruiken kunt, hebt u een paar schoppen rond.
Bibliotheken:
Arduino.h - de standaard en zeer grote bibliotheek
DS1302.h - Real time klok bibliotheek
LCD4Bit_mod.h - bibliotheek verstrekt ter ondersteuning van de LCD/toetsenbord - zeer vergelijkbaar met de standaard bibliotheek
OneWire.h - biedt mededeling aan de temperatuursonde
Pinout toewijzing en globale variabelen:
Dit is waar u moet uw eigen zonsondergang en zonsopgang ingesteld afhankelijk van uw locatie. We hebben de besparingen van de zomer hier in het Verenigd Koninkrijk maar ik besloten te houden mijn systematiek op GMT, wat betekent dat als ik kijk naar de klok in de zomer opslaan periode is een uur achter zodat de zonsondergang en zonsopkomst tijden moeten dienovereenkomstig worden ingesteld.
Setup
- Hiermee stelt u de pinouts voor de motor
- Hiermee stelt u het display achtergrondverlichting die uitstaat op reset.
- De huidige MotorState is ingesteld op STOP
- De bovenste regel van het display is geïnitialiseerd met de koppen van de status.
- Op dit punt controleren we de temperatuur om te initialiseren van de min/min max instellingen en weer te geven.
In de code ziet u een commentaar uit routine 'set_time()' om in te stellen van de RTC. Dit moet commentaar voor de eerste keer programmeren zodat de klok kan worden ingesteld. Opmerking it out en reprogramme de ATmega328 weer op deze manier als de Raad van bestuur wordt teruggesteld of verdere wijzigingen in de code worden gemaakt de RTC altijd de juiste tijd heeft.
U moet experimenteren over het instellen van de RTC in sync met de tijd van de laptop. Ik heb ontdekt op een Mac-omgeving moet u toestaan van 40 seconden voor het compileren en uploaden om te controleren of de tijden waar ze precies gesynchroniseerd.
Loop
- De huidige tijd afdrukken
- Voor 0,5 seconde pauzeren, zodat de weergave kan worden gelezen.
- Afdrukken van de bedtijd die in totaal aantal minuten met de ' ^' symbool voor het.
- De minimumtemperatuur met 'v' symbool voor het afdrukken.
- Voor 0,5 seconde pauzeren, zodat de weergave kan worden gelezen.
- De wake-tijd die in totaal minuten met het symbool van de "v" voor het afdrukken.
- Afdrukken van de maximale temperatuur met de ' ^' symbool voor het.
- Voor 0,5 seconde pauzeren, zodat de weergave kan worden gelezen.
- De huidige tijd afdrukken
- Controleer de deur activering knop (aan/uit worden weergegeven, deur of open deur handmatig sluiten)
- De status van de Motor volgens activering knop wijzigen
- Check om te zien of het tijd wakker als dus Motor staat ingesteld op DoorUp
- Check om te zien of het bed tijd als dus Motor staat ingesteld op DoorDown
- Terwijl de Motor staat niet 'Stop' oproep door_change de deur dicht of open het en status weergeven op scherm
Ik stel u vertrouwd jezelf met de code en hopelijk u begrijpt het genoeg om uw eigen wijzigingen, dat wil zeggen geen temp sonde maar een LDR in plaats daarvan.
Zoals u van de code zien kunt die ik heb gemaakt een motor-toestandsvariabele waarbij acties zijn voltooid voordat de hoofdlus code terug op zichzelf gaat.