LCD klok met Hebreeuwse kalenderdatum en een Thermometer (4 / 7 stap)

Stap 4: Code Beschrijving


Opmerking: als ik zeg "de klok" bedoel ik de gehele klok als een systeem. Als ik zeg "real timerklok", bedoel ik alleen de klok chip.

Voor de Hebreeuwse datum gebruikte ik de volgende code van het publieke domein:

"Kalendrische berekeningen '' van Nachum Dershowitz en Edward M. Reingold, Software---praktijk & ervaring, vol. 20, no. 9 (September 1990), pp. 899--928.

Oorspronkelijke code

De bovenstaande code converteert tussen de Gregoriaanse datum dat de real-time klok levert Hebreeuwse toe. Het daadwerkelijk bevat ook Julian, moslim en ISO kalender conversies, zodat u deze als je wilt gebruiken kunt. Of u kunt het zonder conversie helemaal.

Omdat de conversie erg traag is moest ik veranderen enkele coderegels geplaatst, zodat het niet beginnen met het zoeken van alle van de afgelopen jaren over en over. Vóór de verandering, datum conversie duurde bijna 4 seconden en de klok seconden waren jaggy. Want het is een klok die de figuur van het jaar eens in een jaar verandert (natuurlijk). De oorspronkelijke code is algemener, het wordt gebruikt om verschillende, niet-gerelateerde datums converteren. Maar in een klok zoals ik al zei, het jaar is vrijwel constant, dus ik de code veranderde dus in het begin zet het eens met de langzame methode, maar in de volgende conversies het het verleden gebruikt jaar conversie aanpassing aan te beginnen met zoeken.

Andere bibliotheken zijn opgenomen in het zip-bestand.

Om te voorkomen dat het gebruik van globale variabelen, zijn alle variabelen en klassen die hun waarde moet worden opgeslagen statisch. Tevens werden klassen dat hun instantiëren lang is gedefinieerd als statische. Het probleem met deze methode is dat uw Setup-functie geen toegang de variabelen in de loop functie tot dus je moet ze opnieuw te definiëren. Voorkom dit redundantie en is het begrip van de machine staat ingevoerd.

De code is gebouwd als een statusmachine. Telkens wanneer de lus-functie wordt aangeroepen, wordt de klok is in een bepaalde toestand. Overgang tussen staten zijn gemaakt volgens de gedefinieerde regels. Bijvoorbeeld, wanneer de klok begint, voert het INIT_STATE. Deze toestand wordt gebruikt in plaats van met de Setup-functie, zodat de loop variabelen kunnen worden benaderd.

Nadat INIT_STATE de klok in IDLE_STATE. Deze stand is de beginpositie voor alle andere staat overgang. De IR ontvanger wordt gecontroleerd telkens wanneer de klok in idle toestand is. Dit is niet optimaal, omdat als de klok in een andere staat is, de afstandsbediening zal niet reageren. Temperatuursensor is bijvoorbeeld toegang is relatief traag. Tijdens de temperatuurmeting zullen de IR ontvanger inactief. Een betere manier is het gebruik van interrupts (zoals ik een newbie ben, ik wist niet over interrupts pas later).

De temperatuur wordt gelezen in READ_TEMP_STATE, en de tijd in READ_TIME_STATE wordt gelezen. Het tarief van deze Staten is gedefinieerd in het begin van het programma. Tijd is het lezen van elke 120milliseconds en temperatuur is het lezen van elke 2 seconden.

Een ander ding om op te merken is dat de tijd-update zeer synchroon moet. Alle tijdrovend acties moeten plaatsvinden nadat de seconden figuur werd bijgewerkt. Temperatuurmeting gebeurt dus onmiddellijk nadat de tijd is bijgewerkt. Het laat de klok een tweede andere om dingen te doen, tot de volgende update van de tijd. Als we naar de READ_TEMP_STATE van IDLE_STATE, optreden de temperatuur lezing wanneer we moeten de tijd bijwerken en de klok seconden figuur niet in een constante snelheid veranderen zal. In een dergelijk geval de seconden geen tik op een VOO tempo en het is verontrustend, dat de klok kijkt zeer anker.

Lijst van de vereiste library:

  1. DHT sensor bibliotheek
  2. LCD-I2C
  3. Arduino IRremote
  4. DS1302 bibliotheek - opgenomen in mijn zip-bestand, en hier: DS1302 OOP
  5. Auto MP3-bibliotheek - opgenomen in mijn zip-bestand
  6. de bibliotheek van de documentomzetting van het tijd - opgenomen in mijn zip-bestand

Merk op dat de DS1302-bibliotheek is niet het oorspronkelijke bestand, mij gewijzigde op voor een klassenstructuur.

Gerelateerde Artikelen

Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

Volledige digitale klok met aanwezigheid Sensor (RTC - Alarm - PIR - temperatuur - vochtigheid - dauwpunt)

HoiIk heb al enkele digitale klokken projecten gedaan met Arduino met inbegrip van LED en LCD schermen, maar deze is specialer omdat ik hebben een nieuwe functie ingevoerd met een bewegingssensor (PIR).Zie VIDEOBelangrijkste kenmerkenPIR (aanwezighei
DIY TV LCD-scherm met Arduino en Smart Remote

DIY TV LCD-scherm met Arduino en Smart Remote

In de volgende volgende stappen, u maakt een DIY "TV" met code voor een smart remote afstandsbediening,, en eigenlijk video's afspelen en de slimme afstandsbediening zelfs mogelijk verbinding te maken met de werkelijke moederbord.Materialen:Foli
LCD controle met LinkIt één bord

LCD controle met LinkIt één bord

Vandaag, zullen we kijken naar manieren om te communiceren met de buitenwereld, met behulp van uw LinkIt een ontwikkeling boord. In deze handleiding leert u hoe u een 16 door 2 LCD-module met behulp van alleen een potentiometer, wat draadjes en de Li
Externe Wi-Fi DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD vertoning met twee ESP8266 en Visuino

Externe Wi-Fi DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD vertoning met twee ESP8266 en Visuino

ESP8266 modules zijn grote low-cost stand alone controllers met gebouwd in Wi-Fi, en ik maakte al een eenvoudige Blink instructable met ESP8266 NodeMCU module.Het voordeel van de ESP8266 over Arduino en andere controllers is de ingebouwde Wi-Fi. In d
Arduino Nano: DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD-scherm met Visuino

Arduino Nano: DHT11 temperatuur een vochtigheid I2C 2 X 16 LCD-scherm met Visuino

Ik heb al twee Instructables gemaakt over het gebruik van DTH11/DTH21/DTH22 en AM2301 temperatuur en vochtigheid sensoren met Arduino en je kunt ze vinden hier en hier. Ik maakte ook Instructable op I2C LCD karakterdisplay, en één over het gebruik va
Maak een nauwkeurige Arduino Klok met behulp van slechts één draad - geen externe hardware nodig!

Maak een nauwkeurige Arduino Klok met behulp van slechts één draad - geen externe hardware nodig!

Hoe te maken van een Arduino Klok - zonder externe oscillatoren of klok chips:(meer van mijn projecten op onze website onderzoek - Klik arduino logo boven aan de introductiepagina)U moet:Een Arduino board (zowat elke smaak zal prima werken) en softwa
Hoe maak je een Thermometer met behulp van de Arduino en LM35

Hoe maak je een Thermometer met behulp van de Arduino en LM35

vandaag ga ik u tonen hoe te maken van een Thermometer met Arduino en LM35 temperatuursensor, LCD Display, op een breadboard samen met draden aangesloten. Het zal temperatuur weergegeven in Celsius en Fahrenheit.Andro RootStap 1: Vereisten:- Dit is d
Maak foto's met gepolariseerd licht van een LCD

Maak foto's met gepolariseerd licht van een LCD

toen ik begon te schrijven dit instructable realiseerde ik me dat er niet eenvoudig uit te leggen wat er gebeurt in mijn experimenten. Dus kortom, is gepolariseerd licht licht waar de elektromagnetische golven zijn ingetogen of beperkt tot bepaalde r
Arduino Klok met een dc-motor (één naald)

Arduino Klok met een dc-motor (één naald)

Hi,Ik probeerde te maken van een klok met arduino met één motor, maar het was niet mogelijk met de standaard methode zoals moet er ten minste twee naaldenUren en minuten, dus ik probeerde iets nieuws. In deze klok zijn er zes divisies in een uur in p
Herstellen van een LCD-monitor met achtergrondverlichting kwesties

Herstellen van een LCD-monitor met achtergrondverlichting kwesties

dit Instructable zal u tonen hoe te demonteren een monitor voor reparatie, evenals de reparatie zelf. In dit Instructable, zal ik werken met een HP F1703-monitor die koude-soldeer gewrichten heeft ontwikkeld en heeft geleid tot een probleem waar de a
Maak een ontzagwekkende klok met Lolly stokjes!

Maak een ontzagwekkende klok met Lolly stokjes!

Laat maken van een echt cool klok met kralen en lolly stokjes! Vergeet ook niet om het controleren van mijn video aan het eind van deze hardnekkige!Wat je nodig hebt-Quarts klok beweging kitLolly stokjes - 44 +Pony kralen van gekozen kleur - 84 +CDFl
Ter vervanging van een LCD-achtergrondverlichting met zonlicht via glasvezelkabels

Ter vervanging van een LCD-achtergrondverlichting met zonlicht via glasvezelkabels

een uur lang test. Niet slecht. Dit zou een aanvulling op de reguliere LED achtergrondverlichting in beeldschermen mogelijk zijn. Een constante intensiteit monitor zou moeten aanpassen van de LEDs te conpensate voor de inconsistentie van de sunlights
2cm hoogte 7 segmenten 6 cijfers AVR klok met 4 cijfers thermometer

2cm hoogte 7 segmenten 6 cijfers AVR klok met 4 cijfers thermometer

Dit project is uit te leggen hoe maak jezelf een 6 cijfers 7 segmenten klok met AVR microcontrollerStap 1: De onderdelen voor dit project voorbereiden We moeten een onderdelen voor dit project voorbereiden6 x 7 segmenten gemeenschappelijk Anode6 x PN
Toevoegen Bluetooth aan een LCD-display met ingang voor seriële

Toevoegen Bluetooth aan een LCD-display met ingang voor seriële

LCD-schermen met seriële input kunnen worden opgewaardeerd tot Bluetooth met behulp van een Bluetooth-seriële poort JY-MCU. Een goede reden om dit te doen is zodat de weergave kan worden gebruikt met een Android telefoon of tablet. Een eenvoudige And