Étape 7: Le code est la colle
J’ai utilisé la dernière 1.0 de IDE Arduino qui je dois dire a été brillante autant que vous pouvez maintenant des programmes utilisant le programmateur ISP et n’ont pas à se soucier des dongles USB ou un circuit. Une chose je dirais que vous avez encore besoin de brûler le chargeur de démarrage sur votre puce ATmega328 vide sinon débogage devient un peu un défi que l’environnement Arduino n’a pas été configuré correctement!!!
Le code que j’ai compilé est taille 8 346 octets, donc vous pouvez utiliser la puce ATmega168 si vous avez quelques coups de pied autour.
Bibliothèques:
Arduino.h - la bibliothèque standard et très grande
DS1302.h - Bibliothèque d’horloge temps réel
LCD4Bit_mod.h - Bibliothèque de fournie à l’appui du LCD/clavier - très semblable à la bibliothèque Standard
OneWire.h - assure la communication avec la sonde de température
Allocation de brochage et Variables globales :
C’est où vous devez définir votre propre coucher et le lever du soleil selon votre situation. Nous avons des économies de l’été ici au Royaume-Uni, mais j’ai décidé de garder mon système sur GMT, ce qui signifie que quand je regarde l’horloge dans l’été de sauver le laps de temps, que c’est une heure de retard, donc les heures de coucher et le lever du soleil doivent être réglés en conséquence.
Setup()
- Définit la liste des broches du moteur
- Définit l’affichage rétro-éclairage qui est éteint sur reset.
- La MotorState actuelle a la valeur STOP
- La ligne supérieure de l’écran est initialisée avec les titres d’État.
- À ce stade, nous vérifions la température pour initialiser les paramètres max min/min et l’afficher.
Dans le code, vous remarquerez un commenté routine « set_time() » pour définir le CCF. Cela devrait être supprimé pour la première fois de programmation donc l’horloge peut être réglée. Commentaire d’it out et reprenez l’ATmega328 à nouveau de cette façon, si le jury est remis à zéro ou de nouvelles modifications au code sont apportées le CCF toujours a la bonne heure.
Vous devrez expérimenter sur la définition du CCF en synchronisation avec l’heure de l’ordinateur portable. J’ai découvert sur un environnement Mac, vous devez autoriser les 40 secondes pour la compilation et de téléchargement pour s’assurer que les fois où exactement synchronisés.
Loop()
- Imprimer l’heure actuelle
- Pause pendant 0,5 seconde donc l’affichage peut être lu.
- Imprimer l’heure du coucher qui est dans le nombre total de minutes avec le ' ^' symbole en face d’elle.
- Imprimer la température minimale avec le symbole « v » en face d’elle.
- Pause pendant 0,5 seconde donc l’affichage peut être lu.
- Imprimer l’heure de réveil qui est dans le nombre total de minutes avec le symbole « v » en face d’elle.
- Imprimer la température maximale avec le ' ^' symbole en face d’elle.
- Pause pendant 0,5 seconde donc l’affichage peut être lu.
- Imprimer l’heure actuelle
- Cochez le bouton d’activation de porte (affichage marche/arrêt, fermeture de porte ou ouvrir la porte manuelle)
- Modifier l’état du moteur selon le bouton d’activation
- Vérifier pour voir si c’est de se réveiller à temps si la valeur donc moteur État cela
- Vérifier pour voir si c’est le moment du coucher si la valeur alors état de moteur DoorDown
- Alors que le moteur d’État n’est pas « Stop » appel door_change de fermer la porte ou ouvrez-le et état d’affichage sur écran
Je voudrais suggérer vous familiariser vous-même avec le code et j’espère que vous comprendrez ce suffisant pour faire vos propres modifications, c'est-à-dire aucune sonde temp mais un LDR à la place.
Comme vous pouvez le voir dans le code, j’ai créé une variable d’État moteur qui assure les actions sont terminées avant le code de la boucle principale remonte sur lui-même.
CoopCtlv1_0.ino DS1302.cpp DS1302.h