Steampunk analoge Gauge Moonphase klok (6 / 11 stap)

Stap 6: Praat met de Real Time Clock (RTC)


Wat u wilt doen hier is de chronodot sluit aan op een geschikte stroombron en aan de Arduino, een stukje code uploaden naar de arduino en get it in gesprek met de DS3231. Er is een schema hieronder die u vastgehaakt meteen moet krijgen. U hoeft niet om verbinding te maken met de pin van de blokgolf nu voor deze code werkt. We zullen het later gebruiken om de meters tikt.
Het circuit en de onderstaande code werkte meteen voor mij.

Hier is de link naar het gegevensblad van de DS3231:
http://datasheets.Maxim-IC.com/en/DS/DS3231.PDF

Ik vond dit kleine programma (schets in Arduinish) op thew web en het voor u hebt aangesloten. Het leest de info van de RTC en spuugt naar de seriële monitor. (Veel dankzij naar de verwekker; gfbarros). Hier is de originele link:
http://code.Google.com/p/GFB/source/browse/Arduino/DS3231/DS3231.pde

Als het goed is, ziet u uitvoer in de seriële monitor zoals die in de foto hieronder.

DS3231 Codefragment

#include < Wire.h >

#define DS3231_I2C_ADDRESS 104

byte seconden, minuten, uur, dag, datum, maand, jaar;
char weekdag [4];

byte tMSB, tLSB;
float temp3231;

VOID Setup
{
Wire.begin();
Serial.begin(9600);
besturingselement instellen inschrijven voor uitvoer blokgolf op pin 3 1 Hz
Wire.beginTransmission(DS3231_I2C_ADDRESS); 104 is DS3231 apparaatadres
Wire.send(0x0E); //
Wire.send(B00000000);
Wire.endTransmission();
}

void loop
{

watchConsole();


get3231Date();

Serial.Print(weekDay); Serial.Print (","); Serial.Print (maand, DEC); Serial.Print("/"); Serial.Print (datum, DEC); Serial.Print("/"); Serial.Print (jaar, DEC); Serial.Print ("-");
Serial.Print (uren, DEC); Serial.Print(":"); Serial.Print (minuten, DEC); Serial.Print(":"); Serial.Print (seconden, DEC);

Serial.Print ("temperatuur:"); Serial.println(get3231Temp());

delay(1000);
}

Normale decimale getallen omzetten in binary coded decimal
byte decToBcd(byte val)
{
retourneren ((val/10 * 16) + (val % 10));
}

VOID watchConsole()
{
Als (Serial.available()) {/ / zoeken char in seriële wachtrij en proces als gevonden
Als (Serial.read() == 84) {//If command = "T" instellen datum
set3231Date();
get3231Date();
Serial.println("");
}
}
}

VOID set3231Date()
{
T(SEC)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(Year)
T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99)
Voorbeeld: 02-Feb-09 @ 19:57:11 voor de 3e dag van de week -> T1157193020209

seconden (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48)); Gebruik van (byte) type gieten en ASCII-wiskunde om resultaat te bereiken.
minuten (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48));
uren (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48));
dag = (byte) (Serial.read() - 48);
datum (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48));
maand (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48));
jaar (byte) = ((Serial.read()-48) * 10 + (Serial.read() - 48));
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.send(0x00);
Wire.send(decToBcd(seconds));
Wire.send(decToBcd(minutes));
Wire.send(decToBcd(hours));
Wire.send(decToBcd(Day));
Wire.send(decToBcd(date));
Wire.send(decToBcd(month));
Wire.send(decToBcd(Year));
Wire.endTransmission();
}

VOID get3231Date()
{
verzoek tot het ontvangen van gegevens beginnen bij register 0
Wire.beginTransmission(DS3231_I2C_ADDRESS); 104 is DS3231 apparaatadres
Wire.send(0x00); Start op registreren 0
Wire.endTransmission();
Wire.requestFrom (DS3231_I2C_ADDRESS, 7); zeven bytes voor aanvragen

if(Wire.available()) {}
seconden = Wire.receive(); krijgen seconds
minuten = Wire.receive(); Ontvang minuten
uren = Wire.receive();   uren krijgen
dag = Wire.receive();
datum = Wire.receive();
maand = Wire.receive(); Temp maand
jaar = Wire.receive();

seconden = (((seconds & B11110000) >> 4) * 10 + (seconden & B00001111)); BCD converteren naar een decimaal getal
minuten = (((minutes & B11110000) >> 4) * 10 + (minuten & B00001111)); BCD converteren naar een decimaal getal
uren = (((hours & B00110000) >> 4) * 10 + (uren & B00001111)); BCD converteren naar een decimaal getal (neem aan 24-uurs modus)
dag = (dag & B00000111); 1-7
datum = (((date & B00110000) >> 4) * 10 + (datum & B00001111)); 1-31
maand = (((month & B00010000) >> 4) * 10 + (maand & B00001111)); msb7 is een overloop van de eeuw
jaar = (((year & B11110000) >> 4) * 10 + (jaar & B00001111));
}
else {}
Oh noes, geen gegevens!
}

schakelaar (dag) {}
Case 1:
strcpy (weekdag, "Sun");
breken;
Case 2:
strcpy (weekdag, "Ma");
breken;
Case 3:
strcpy (weekdag, "Di");
breken;
Case 4:
strcpy (weekdag, "wo");
breken;
Case 5:
strcpy (weekdag, "Do");
breken;
Case 6:
strcpy (weekdag, "VR");
breken;
Case 7:
strcpy (weekdag, "za");
breken;
}
}

float get3231Temp()
{
tijdelijke registers (11u - 12u) krijgen bijgewerkt automatisch elke 64s
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.send(0x11);
Wire.endTransmission();
Wire.requestFrom (DS3231_I2C_ADDRESS, 2);

if(Wire.available()) {}
tMSB = Wire.receive(); 2 de aanvulling int gedeelte
tLSB = Wire.receive(); breuk, deel

temp3231 = (tMSB & B01111111); 2's wiskunde op Tmsb
temp3231 += ((tLSB >> 6) * 0,25); alleen de zorg over bits 7 & 8
}
else {}
Oh noes, geen gegevens!
}

Return temp3231;
}

Gerelateerde Artikelen

Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Steampunk ESP8266 Internet verbonden klok met behulp van de Arduino IDE

Wat u krijgt wanneer een ring NeoPixel, een goedkope Arduino Wifi aan boord en een laser cutter in een stoom-Punk-Sedan lopen?Een modieuze Steampunk ontworpen Internet verbonden klok met behulp van de ESP8266 chip en de Arduino IDE natuurlijk!Hier is
STEAMPUNK stoom GAUGE, aangedreven door ARDUINO

STEAMPUNK stoom GAUGE, aangedreven door ARDUINO

dit is opgericht om één of ander-oogsuikergoed voor mijn keuken. Ik wilde iets unieks voor een speciale lege ruimte op mijn muur, en het toevoegen van beweging, BLINKIE lichten en interessante mechanische "guts" maakte het zelfs beter.Uiteindeli
Steampunk LED klok

Steampunk LED klok

Ik werd geïnspireerd om het maken van een steampunk klok een tijdje geleden na het doorbladeren van een heleboel Instructables op verschillende klokken. Het begon met een enigszins vaag idee van wat ik wilde bereiken en het echt geëvolueerd als ik he
Steampunk Table Clock

Steampunk Table Clock

Enige tijd geleden heb ik een steampunk-tabel hebt ontworpen klok dat ziet eruit als een miniatuur stoommachine maar ik niet kunnen voltooien van de bouw van het tot nu toe vanwege de complexe structuur en vele delen. Ik had ook geproduceerd sommige
Analoge Discovery PWM en digitale IO controle wel LabVIEW

Analoge Discovery PWM en digitale IO controle wel LabVIEW

Het doel van dit project is om je te leren hoe u kunt besturen van de ontdekking van de analoge met LabVIEW. Met name zal dit project aantonen hoe de controle van de Analog Discovery's digitale IO en PWM pinnen. Dit project richt zich voornamelijk op
Wandklok

Wandklok

Hi guys, vandaag zullen we leren sommige ontwerpen vaardigheden om awesome wand klokken. In dit project we InkScape gebruikt te ontwerpen onze Wandklok en een laser cutter machine zal gebruiken om te snijden.Opmerking: Dit project werd gemaakt door (
Touch scherm koffietafel DIY met 32-inch TV en low-cost CCD sensor

Touch scherm koffietafel DIY met 32-inch TV en low-cost CCD sensor

UPDATE 04/04/2016: Multipoint software + Emulating NES video/foto's + OPTION_7 punt en klik + snelheidstest optie videoUPDATE 24/03/2016: CCD sensor reverse Engineering + met behulp van 2 CCD sensoren Laser Gravure vectorbestanden + Retropie spelenHa
RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

RS485 Seriële communicatie tussen Arduino Mega en Arduino Nano met Visuino

Soms moeten we aansluiten Arduino boards Arduino boards ligt ver weg van elkaar. De RS485 is een zeer handige manier om te verbinden de planken met slechts 2 draden, en kan werken tot een afstand van 1200 m (4000 ft). Het maakt het ook mogelijk meerd
Model vliegen: Perfectioneren de Roll

Model vliegen: Perfectioneren de Roll

oorspronkelijk een artikel uit de RCM & E Magazine Peter Rondel praat ons door het uitvoeren van een spectaculaire roll met een model vliegtuig.Het broodje is een heel mooi manoeuvre die vele variaties heeft, en perfect standaardinteracties is een he
It's about time! horloge.

It's about time! horloge.

In den beginne was er het universum maar tijd niet had uitgevonden-niet genoeg tijd nog geweest. Dan het universum de uitvinder van de eerste mens (Homo Originalis) maar tijd nog steeds niet had uitgevonden. Evolutie begunstigde echter degenen die ni
COMPACT en robuust geautomatiseerde landbouw REMOTE

COMPACT en robuust geautomatiseerde landbouw REMOTE

Heya jongens... Deze hier is interessant en een van de cruciale projecten die we tot nu toe hebben gedaan. Het maakt gebruik van een breed scala en coolste van apparaten. We hebben opgeofferd vele een nachten slaap, bunked uur van klassen en gezwoegd
Expeditie licht

Expeditie licht

Hi all,Ik Toon u mijn zeer kleine expeditie licht.Ik gebruik hetzelfde circuit, zoals ik u in mijn Steampunk Plasma lamp met klok Gear weergeven.Als u wilt dat je kunt zeggen dat het is alleen een Mod maar ik denk dat het een volledig ander project.A
Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

Controle van uw Robot met behulp van een Wii Nunchuck (en een Arduino)

na het dragen van mezelf spelen van Wii Boksen, ik kreeg aan het denken zou het niet geweldig als ik zou kunnen dit gebruiken om te controleren mijn robot, (op zoek naar mijn linkerhand).Op zoek rond het internet vond ik een schare van mensen die soo
Eenvoudige LED-schakeling op de goedkope

Eenvoudige LED-schakeling op de goedkope

een kort overzicht video:Ik nodig had om 15 eenvoudige circuits met een licht, een batterij en een schakelaar die gemakkelijk kan worden gemonteerd en gedemonteerd meerdere keren voor een Cub Scout camp activiteit te maken. Het licht moet helder geno