Steampunk Analog mätare månfas klocka (6 / 11 steg)

Steg 6: Prata med realtidsklocka (RTC)



Vad du vill göra här är att ansluta chronodot till lämplig kraftkälla och Arduino, ladda upp en bit kod till arduino och få prata med DS3231. Det finns en schematisk nedan som borde få dig uppkopplad direkt. Du behöver inte ansluta fyrkantsvåg PIN-koden nu för denna kod ska fungera. Vi kommer att använda det senare för att få mätarna tickar.
Kretsen och koden nedan arbetat rätt bort för mig.

Här är länken till DS3231 databladet:
http://datasheets.Maxim-IC.com/en/DS/DS3231.pdf

Jag hittade denna lilla program (skiss i Arduinish) på thew web och har kopplat det för dig. Det läser info från RTC och spottar ut det till seriell bildskärmen. (Mycket tack vare författaren, gfbarros). Här är den ursprungliga länken:
http://code.Google.com/p/GFB/source/browse/Arduino/DS3231/DS3231.pde

Om allt är bra, bör du se utdata i följetong monitor som det i bilden nedan.

DS3231 Kodstycke

#include < Wire.h >

#define DS3231_I2C_ADDRESS 104

byte sekunder, minuter, timmar, dag, datum, månad, år.
char veckodag [4].

byte tMSB, tLSB;
float temp3231;

void setup()
{
Wire.BEGIN();
Serial.BEGIN(9600);
Ställ in avstämningsregister till utgång fyrkantsvåg på stift 3 på 1Hz
Wire.beginTransmission(DS3231_I2C_ADDRESS); 104 är DS3231 enhetsadress
Wire.send(0x0E); //
Wire.send(B00000000);
Wire.endTransmission();
}

void loop()
{

watchConsole();

get3231Date();

Serial.Print(weekDay); Serial.Print (","); Serial.Print (månad, DEC). Serial.Print("/"); Serial.Print (datum, DEC); Serial.Print("/"); Serial.Print (år, DEC). Serial.Print ("-");
Serial.Print (timmar, DEC); Serial.Print(":"); Serial.Print (minuter, DEC); Serial.Print(":"); Serial.Print (sekunder, DEC);

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

Delay(1000);
}

Konvertera normala decimaltal till binary coded decimal
byte decToBcd(byte val)
{
tillbaka ((val/10 * 16) + (val % 10));
}

void watchConsole()
{
om (Serial.available()) {/ / leta efter röding i följetong kö och processen om hittade
om (Serial.read() == 84) {//If kommando = "T" Ange 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)
Exempel: 02-Feb-09 @ 19:57:11 för 3: e dagen i veckan -> T1157193020209

sekunder = (byte) ((Serial.read()-48) * 10 + (Serial.read() - 48)); Användning av (byte) typ gjutning och ASCII-matematik för att uppnå resultat.
minuter = (byte) ((Serial.read()-48) * 10 + (Serial.read() - 48));
timmar = (byte) ((Serial.read()-48) * 10 + (Serial.read() - 48));
dag = (byte) (Serial.read() - 48);
datum = (byte) ((Serial.read()-48) * 10 + (Serial.read() - 48));
månad = (byte) ((Serial.read()-48) * 10 + (Serial.read() - 48));
år = (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()
{
skicka begäran om att ta emot data från register 0
Wire.beginTransmission(DS3231_I2C_ADDRESS); 104 är DS3231 enhetsadress
Wire.send(0x00); börja vid register 0
Wire.endTransmission();
Wire.requestFrom (DS3231_I2C_ADDRESS, 7); begära sju byte

IF(Wire.available()) {
sekunder = Wire.receive(); få sekunder
minuter = Wire.receive(); få minuter
timmar = Wire.receive(); få timmar
dag = Wire.receive();
datum = Wire.receive();
månad = Wire.receive(); Temp månad
år = Wire.receive();

sekunder = (((seconds & B11110000) >> 4) * 10 + (sekunder & B00001111)); konvertera BCD till decimal
minuter = (((minutes & B11110000) >> 4) * 10 + (minuter & B00001111)); konvertera BCD till decimal
timmar = (((hours & B00110000) >> 4) * 10 + (timmar & B00001111)); konvertera BCD till decimal (antar 24 timmarsvisning)
dag = (dag & B00000111); 1-7
datum = (((date & B00110000) >> 4) * 10 + (datum & B00001111)); 1-31
månad = (((month & B00010000) >> 4) * 10 + (månad & B00001111)); msb7 är talet overflow
år = (((year & B11110000) >> 4) * 10 + (år & B00001111));
}
annat {
Åh nej, inga data!
}

Växla (dag) {
fall 1:
strcpy (veckodag, "Sun");
bryta;
fall 2:
strcpy (veckodag, "Må");
bryta;
fall 3:
strcpy (veckodag, "Tis");
bryta;
fall 4:
strcpy (veckodag, "ons");
bryta;
fall 5:
strcpy (veckodag, "Tor");
bryta;
fall 6:
strcpy (veckodag, "Fr");
bryta;
fall 7:
strcpy (veckodag, "Sat");
bryta;
}
}

float get3231Temp()
{
Temp register (11h - 12h) få uppdateras automatiskt varje 64s
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.send(0x11);
Wire.endTransmission();
Wire.requestFrom (DS3231_I2C_ADDRESS, 2);

IF(Wire.available()) {
tMSB = Wire.receive(); 2: s komplettera int del
tLSB = Wire.receive(); bråk del

temp3231 = (tMSB & B01111111); gör 2: s matematik på Tmsb
temp3231 += ((tLSB >> 6) * 0,25); bara bryr sig om bitar 7 & 8
}
annat {
Åh nej, inga data!
}

återvända temp3231;
}

Se Steg
Relaterade Ämnen

Arduino skiss för retro analoga mätare grafik på en modern TFT-skärm

En annan skiss från min samling som kan vara av intresse...Visa små digitala siffror av temperatur och luftfuktighet etc på en liten skärm är inte alltid det bästa sättet att visa information. Gammal stil analoga mätarna är bättre i vissa situationer...

Trådlösa hem routern med utnyttjande av analoga mätare

jag växte upp i och runt båtar att göra ledningar vävstolar och styra paneler, och har en samling av mätare & ringer som skulle normalt finns ansluten till små marina dieselmotorer.Jag jobbar idag som designer bygga gränssnitt till nätverksutrustning...

Arduino Analog hård driva POV klocka

detta arbete baseras bort av två andra personer som gjorde ett utmärkt jobb med att bana väg för mitt projekt.Författare: vishnubobHans arbete var baserat off Ian Smiths version av samma typ av klocka.http://www.Ian.org/HD-Clock/Med hjälp av vishnubo...

Analoga VU-meter och klocka (Arduino Powered)

detta projekt tar tillbaka gammalt tiden analoga VU-Meter, med de extra funktionerna av en snygg snygg klocka! När du stänger av din musik svinga mätarna automatiskt in till klockläge. Bakom är det alla populära och lätt att använda Arduino.Detta är...

Omfattningen klocka: Analog klocka och temperaturgivare på oscilloskop

Scopeclock är en enkel att använda hårdvara till göra din X-Y kan analogt oscilloskop mer användbara. Med denna enkla för att använda maskinvara kan du konvertera dina analoga oscilloskop till en omfattning klocka. Detta projekt var jag och min vän M...

"Analog" Bicycle hastighetsmätare

I detta instructable jag ska visa hur man gör en enkel "analog" hastighetsmätare med en arduino nano, en servomotor och några fler extrakomponenter.Den analoga delen av projektet är bara i visningen av hastigheten, alla sensing, kalkyl och bearb...

Lägga till en digital mätare till din gamla analogical variabel PSU

min 20 år gamla variabel strömförsörjning börjar få några vagheten i mäta spänning med hans analogical mätare. Sedan bestämde jag mig att lägga till en digital mätare, som jag kan veta exakt den spänningsfrekvens. Eftersom dessa digitala mätare är my...

Steampunk Nätverkscenter

Hej allaJag är så glad att presentera min nyaste steampunk objekt efter så lång tid av frånvaro.Jag fick idén till detta projekt efter att ha sett Bird's nest av kablar bakom min nätverksutrustning.Organisera röran av kablar under (och på) mitt skriv...

Analog talar glöd i mörka 3D tryckt klockan

Klockan visar tiden med 4 analoga mätare. Jag har sett dessa typ av klockor i olika inkarnationer men jag såg aldrig en analog klocka i detta format som talade. Denna klocka meddelar tiden halv timmes mellanrum och spelar ett meddelande varje gång kl...

Cwik klocka v1.0 - An Arduino binär klocka

ÖversiktDetta är en guide till att bygga en Arduino-driv klocka som använder lysdioder för att Visa 24-timmarsformat (timmar och minuter) som binära siffror, en analog mätare att Visa sekunderna, en switch för att växla mellan tidsvisning och tidsins...

Connect 4 binär klocka

välkomna mina damer och herrar!Som entreprenör söker jag alltid stora projekt att dela. Jag själv och två andra klasskamrater nyligen sätta ihop ett projekt för våra Master of Engineering program i teknisk entreprenörskap, och vi är glada att dela vå...

Clockwork kolv (Steampunk)

göra din alldeles egna steampunk kolv ur en cigarrlåda, klocka delar och använt bullet skal! Återvinn din gamla klocka delar att göra en grej som driver sig själv!Steg 1: Klockan tarmar Först och främst, hitta en gammal klocka med lättillgängliga red...

GPS båt hastighetsmätare

När man tittar på GPS meningsbyggnad är sagt "Fart över marken, knop" och jag tänkte genast båt...Detta kan enkelt anpassas till varje annan användning även det driva hjulen jeep!Steg 1: Schematisk och kodAllt du egentligen behöver är en 1K resi...

Mad Professor steampunk lampa!

Efter att ha sett massor av bra ljusa idéer på denna webbplats som jag trodde jag skulle ge ett par en gå.Här en jag inte trodde riktigt motiverat en instructable så dess 'bara' ett bildspel.Låt mig veta om du vill ha en på detta ändå?Det är bara en...

Steampunk clock

Hejmitt första försök på steampunk design. Detta är en klocka som jag hittade på en loppis och juiced med olika bitar av metall och fixturer som om runt min butik. För ljuset använde jag en 12 volt transformator och 12 v glödlampor som är aktivt som...

DIY Analog Voltmeter

Hej, i detta instructable jag vill visa dig hur man gör en analog voltmeter med korrekta avläsningar. Arbetar på rektor för magnetisk kraft som genereras av elektricitet. Med denna smarta idé behöver du inte köpa en ny voltmeter när brutit. Bara ta m...

Bicycle hastighetsmätare med grafik LCD

Detta är en multi-funktion cykel dator jag har utformats med en 128 X 64 monokrom grafik LCD-skärmen.Detta har realtidsklocka samt en temperaturgivare. Uppmätta data kan antingen visas i helt digitala eller i två olika analoga visningslägen.Cykeldato...

CDV-717 civilförsvar strålningsmätare undersökning konverteras till en bärbar HIFI-förstärkare.

jag ändrade fallet av en CDV-717 undersökning instrument att hysa en TK2050 klass D 100 watt/kanal förstärkare och strömförsörjning.Jag behövde något robust att använda som min amp styrelser inhägnad för användning i mitt garage för att driva ett par...

Voltmeter klockan

Denna klocka talar tiden - timmar, minuter och sekunder med 3 analog Voltmätare. En PIC16F628A mikrokontroller används för att visa tiden genom att variera spänningen till varje voltmeter och ger också mycket grundläggande tidtagning. Mikrokontroller...