Berlin klockan (4 / 4 steg)
Steg 4: Steg "sist", koden.
#include < LedControl.h >
#include < Wire.h >
CONST int DS1307 = 0x68;
A5 = SCL, A4 = SDA
CONST char * dagar [] = {"Söndag", "Monday", "Tisdag", "Onsdag", "Torsdag", "Fredag", "Lördag"};
CONST char * månader [] = {"Januari", "Februari", "Mars", "April", "kan", "Juni", "Juli", "Augusti", "September", "Oktober", "November", "December"};
byte näst = 0; byte minut = 0; byte timme = 0; byte vardag = 0;
byte monthday = 0;
byte månad = 0;
byte år = 0;
byte lastMinute = 0;
byte lastSecond = 0;
int Led = 13.
byte nul = B0000000;
byte een = B01000000;
byte twee = B01100000;
byte drie = B01110000;
byte vier = B01111000;
byte vijf = B01111100;
byte zes = B01111110;
byte zeven = B01111111;
byte acht = B11111111;
byte negen = B01000000;
byte tien = B01100000;
byte elf = B01110000; Jag
NT en = 0; int b = 0; int c = 0;
int vijfMinTwee = 0;
int uitgang = låg;
/ * pin 12 är ansluten att DataIn stift 11 är ansluten till CLK pin 10 är ansluten till belastning * /
LedControl lc = LedControl(12,11,10,1);
osignerade långa fördröjningstid = 100;
void setup() {
Wire.BEGIN(); Serial.BEGIN(9600);
pinMode (Led, OUTPUT);
LC.Shutdown(0,false);
/ * Ställa in ljusstyrkan ett medium värden * /
lc.setIntensity(0,8);
/ * och rensa displayen * /
lc.clearDisplay(0);
}
void loop() {
readTime();
digitalWrite(Led,uitgang);
om (andra! = lastSecond) {
om (uitgang == låg) uitgang = hög;
annat uitgang = låg;
digitalWrite (Led, uitgang);
lastSecond = andra.
}
om (minut! = lastMinute) {printTime(); lastMinute = minut.
}
}
byte bcdToDec(byte val) {
tillbaka ((val/16 * 10) + (val % 16));
}
void printTime() {
char buffer [3].
långa minuten = minut.
långa uren = timme;
int vijfmin = minuten /5;
int eenminuut = minuten-(vijfmin * 5);
int vijfuren = uren/5;
int eenuren = uren - (vijfuren * 5);
en = vijfmin;
Digitaal();
vijfmin = b;
vijfMinTwee = c;
en = eenminuut;
Digitaal();
eenminuut = b;
en = vijfuren;
Digitaal();
vijfuren = b;
en = eenuren;
Digitaal();
eenuren = b;
lc.setRow(0,4,vijfuren);
lc.setRow(0,3,eenuren);
lc.setRow(0,1,vijfmin);
lc.setRow(0,2,vijfMinTwee);
lc.setRow(0,0,eenminuut);
}
void readTime() {
Wire.beginTransmission(DS1307);
Wire.write(byte(0));
Wire.endTransmission();
Wire.requestFrom (DS1307, 7);
för det andra = bcdToDec(Wire.read());
minut = bcdToDec(Wire.read());
timme = bcdToDec(Wire.read());
veckodag = bcdToDec(Wire.read());
monthday = bcdToDec(Wire.read());
månad = bcdToDec(Wire.read());
år = bcdToDec(Wire.read()); }
void digitaal() {
Växla (a) {
fall 0:
b = null; c = null;
bryta;
fall 1:
b = een; c = null;
bryta;
fall 2:
b = twee; c = null;
bryta;
fall 3:
b = drie; c = null;
bryta;
fall 4:
b = vier; c = null;
bryta;
fall 5:
b = vijf; c = null;
bryta;
fall 6:
b = zes; c = null;
bryta;
fall 7:
b = zeven; c = null;
bryta;
mål 8:
b = acht; c = null;
bryta;
mål 9:
b = acht; c = negen;
bryta;
mål 10:
b = acht; c = tien;
bryta;
mål 11:
b = acht; c = elf;
bryta;
}
}
Ganska enkelt, tror jag.
En annan fördel från denna skiss: nu du lära dig hur du räknar på nederländska... Från 0 till 11... ;-)
Hoppas du njuta av denna!
Marc.