Horloge LCD avec Date du calendrier hébraïque et un thermomètre (4 / 7 étapes)

Étape 4: Description Code

Remarque : quand je dis « l’horloge » je veux dire l’horloge ensemble comme un système. Quand je dis « real time clock », je veux dire seulement la puce de l’horloge.

Pour la date hébraïque, j’ai utilisé le code de domaine public suivants :

"Calculs calendaires '' par Nachum Dershowitz et Edward M. Reingold, logiciel---pratique et expérience, vol. 20, n ° 9 (septembre 1990), p. 899--928.

Code d’origine

Le code ci-dessus convertit entre la date grégorienne qui fournit de l’horloge temps réel à la date hébraïque. Il actualy contient également des conversions calendrier Julian, musulman et ISO, donc vous pouvez les utiliser si vous le souhaitez. Ou vous pouvez l’utiliser sans conversion du tout.

Parce que la conversion est très lente j’ai dû changer quelques lignes de code, afin qu’il ne démarre pas la recherche des toutes dernières années maintes et maintes. Avant le changement, conversion de la date a pris près de 4 secondes, et les secondes de l’horloge ont été irréguliers. Parce qu’il s’agit d’une horloge, le chiffre de l’année change une fois par an (bien sûr). Le code d’origine est plus générique, il est utilisé pour convertir des dates différentes, non liés. Mais dans une horloge comme je le disais, l’année est presque constante, donc j’ai changé le code donc au début il convertit une fois à l’aide de la méthode lente, mais dans les conversions suivantes, il utilise le passé rapprochement de conversion de l’année pour lancer la recherche.

Autres bibliothèques sont incluses dans le fichier zip.

Pour empêcher l’utilisation des variables globales, toutes les classes qui leur valeur doit être enregistrée et variables sont statiques. Aussi, les classes que leur temps d’instanciation est longue ont été définies comme static. Le problème avec cette méthode, c’est que votre fonction setup() ne peuvent pas accéder aux variables dans la fonction loop() afin d’avoir à redéfinir leur. Pour éviter cette redondance, on introduite la notion de machine d’État.

Le code est construit comme une machine à États. Chaque fois que la fonction de boucle est appelée, l’horloge est dans un certain état. Transition entre États sont élaborés selon des règles bien définies. Par exemple, lorsque l’horloge démarre, il pénètre dans INIT_STATE. Cet État est utilisé au lieu d’utiliser la fonction setup(), alors les variables loop() sont accessibles.

Après INIT_STATE l’horloge entre IDLE_STATE. Cet État est la position de départ pour tous les autre transition d’État. Le récepteur IR est vérifié chaque fois que l’horloge est en état de repos. Ce n’est pas optimal, car si l’horloge est dans un autre État, la télécommande ne répondra pas. Par exemple, le capteur de température est l’accès est relativement lent. Au cours de la lecture de la température, le récepteur IR sera inactif. Une meilleure façon consiste à utiliser les interruptions (comme je suis un newbie, je ne connaissais pas interruptions jusqu’au plus tard).

La température est lu dans READ_TEMP_STATE, et le temps est lu dans READ_TIME_STATE. Le taux de cette États est défini au début du programme. L’heure est lue chaque 120milliseconds et température est lu toutes les 2 secondes.

Une autre chose à noter est que la mise à jour de temps devrait être très synchrone. Toutes les actions de votre temps doivent avoir lieu après l’actualisation de la figure de secondes. Donc lecture de température se fait immédiatement après l’actualisation de l’époque. Il laisse l’horloge une seconde à faire d’autres choses, jusqu'à la prochaine mise à jour de temps. Si nous allons à READ_TEMP_STATE de IDLE_STATE, la lecture de la température pourrait survenir lorsque nous devons mettre à jour l’heure et la figure de seconde horloge ne changera pas dans un rythme constant. Dans ce cas, les secondes ne cocher à un regulat rythme et c’est inquiétant, que l’horloge semble très amature.

Liste des bibliothèques nécessaires :

  1. Bibliothèque de capteur DHT
  2. LCD-I2C
  3. IRremote Arduino
  4. Bibliothèque de DS1302 - incluse dans mon fichier zip et là : DS1302 OOP
  5. Bibliothèque de MP3 de voiture - incluse dans mon fichier zip
  6. bibliothèque de conversion temps - incluse dans mon fichier zip

Notez que la bibliothèque de DS1302 n’est pas le fichier d’origine, je l’ai changé pour une structure de classe.

Articles Liés

Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Horloge avec thermomètre en utilisant Arduino, i2c 16 x 2 lcd, capteur RTC DS1307 et DHT11.

Hello! Il a été un moment j'ai n'a pas posté quelque chose sur Instructables, mais maintenant que j'ai fait un projet simple que j'ai vu sur internet sous diverses formes. J'ai réussi à générer un code à l'aide d'autres codes que j'ai trouvé sur inte
Horloge engrenage avec commande de moteur pas à pas de bois

Horloge engrenage avec commande de moteur pas à pas de bois

Encore une autre horloge à engrenages en bois. Cette conception s'inspire Instructable de DickB1 (ci-contre en bas).Cependant, au lieu de conduire l'horloge avec un pendule magnétique pulsé, j'ai utilisé une petite commande de moteur.Tout d'abord, j'
Horloge engrenage - avec ChronoDot découpé au laser !

Horloge engrenage - avec ChronoDot découpé au laser !

Cet été, mon hackerspace LVL1 (à Louisville, Ky) a obtenu un http://fslaser.com/40w-deluxe-hobby-laser-engraver-and-cutterimpressionnant laser cutter.  LVL1 est une communauté incroyable de gens créatifs qui aiment construire des choses.  Vous pouvez
Arduino LCD Thermomètre / thermostat avec sonde de température TMP36GZ ajouté 2 relais de chanel, ajouté RTC ds1307, ajouté un case.based sur le Guide WWC.

Arduino LCD Thermomètre / thermostat avec sonde de température TMP36GZ ajouté 2 relais de chanel, ajouté RTC ds1307, ajouté un case.based sur le Guide WWC.

HY mon premier guid basé sur le guide de la CME.3 octobre 2013 ajouté cas (étape 13)23 septembre 2013 ajouté RTC (realtimeclock) Ds1307 (étape 11)13 septembre 2013 ajouté 2 relais de chanel pour éteindre l'ampoule de chauffage. (étape 8)1 Arduino Uno
Faites-vous une horloge faite maison avec thermomètre utilisant ATMEGA128

Faites-vous une horloge faite maison avec thermomètre utilisant ATMEGA128

dans cette étape par étape que je tiens à partager mon expérience avec minuterie ATMEGA128 et interrompre l'utilisation DS1307 et NTC pour afficher la maison horloge et thermomètre.Il affiche l'heure, minute, seconde, jour de la semaine, jour, mois,
Récupération d’un écran LCD avec un télécopieur

Récupération d’un écran LCD avec un télécopieur

J'ai acquis une vieille machine de fax qui ressemblait à une source mûre des pièces, comme les steppers, capteurs IR, microrupteurs et choses.  Il s'est avéré que, il a été.  Il a également eu une belle recherche 2 x 16 caractères LCD.  Cependant, ap
Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Comment interfacer 16 X 2 LCD avec microcontrôleur 8051 ?

Il s'agit d'un schéma de circuit de interface 16 X 2 LCD avec AT89C51 qui est une famille de microcontrôleurs 8051. Nous utilisons des écrans LCD pour l'affichage des messages d'erreur, etc.. Ici, nous fournissons les informations de l'écran et égale
Comment utiliser Nokia 5110 LCD avec Arduino ?

Comment utiliser Nokia 5110 LCD avec Arduino ?

Aujourd'hui, je vais vous montrer comment utiliser l'affichage du Nokia 5110 avec cartes Arduino avec ces étapes faciles.La nécessité liste :1. Arduino UNO (avec câble)2. Nokia 5110 LCD (avec câbles minuscules)Étape 1: Les connexionsSuivre les connex
Arduino LCD thermomètre avec sonde de température LM35

Arduino LCD thermomètre avec sonde de température LM35

: mise à jour du PIN 13 : Merci à cybersbpour les captures.Le Fritzing schématique montre à l'aide de broches 12 et 13. Cela ne résout pas. Doit utiliser les broches figurant dans le code, les bornes 11 et 12.C'est comme le titre l'indique, un Arduin
Interface LCD avec Intel Galileo

Interface LCD avec Intel Galileo

TITRE : INTERFAÇAGE LCD AVEC INTELGALILEOINTRODUCTION :Ce projet vise à interfacer un écran LCD avec un Intel Galileo. L'écran LCD affiche une déclaration Bienvenue. Ceci est facilité par le code du programme qui est téléchargé vers la Galilée d'Inte
Thermomètre intérieur avec écran LCD et de lecture de « Analogique » avec NeoPixels

Thermomètre intérieur avec écran LCD et de lecture de « Analogique » avec NeoPixels

Salut! Ce Instructable est un projet Arduino rapide, intermédiaire qui prend une température lecture à partir d'un TMP36, il lit sur un écran LCD et donne une lecture de « Analogique » sur un bâton de neopixel qui change de couleur et le nombre de lu
Réparer un écran LCD avec rétro-éclairage questions

Réparer un écran LCD avec rétro-éclairage questions

ce Instructable vous montrera comment démonter un moniteur pour réparation, ainsi que la réparation elle-même. Dans ce Instructable, je vais travailler avec un moniteur HP F1703 qui a mis au point des joints de soudure froide et a causé un problème o
Arduino - compteur de température du Nokia 5110 LCD avec le DS18B20

Arduino - compteur de température du Nokia 5110 LCD avec le DS18B20

Salut tout le monde! J'ai fait un mètre de la température avec un Nokia 5110 LCD.J'ai ajouté la fréquentation et j'ai fait une Image pour l'arrière-plan de l'écran LCD avec une icône arrondie de frontière et de la température quiest ajouté à la bibli
Retiré de la libellule et l’horloge fleurie (avec détail épique)

Retiré de la libellule et l’horloge fleurie (avec détail épique)

utilisant le laser pour obtenir beaucoup de détails artistiques. Fait à techshop !Étape 1: objet Tout d'abord, j'ai décidé que je voulais faire une horloge fantaisie, après autour de quelques idées sur cette image, j'ai décidé de lancer. C'est un jap