mirror of
https://github.com/dustinbrun/Binaeruhr-Arduino.git
synced 2025-12-30 06:03:23 +01:00
Upload 1
This commit is contained in:
179
software_binaeruhr/software_binaeruhr.ino
Normal file
179
software_binaeruhr/software_binaeruhr.ino
Normal file
@@ -0,0 +1,179 @@
|
||||
#include "src/DS3231.h" //http://www.rinkydinkelectronics.com/library.php?id=73
|
||||
|
||||
DS3231 rtc(SDA, SCL);
|
||||
|
||||
//Pins
|
||||
//Pins für Sekunden-Schieberegister
|
||||
const int clockPinS = 4;
|
||||
const int latchPinS = 3;
|
||||
const int dataPinS = 2;
|
||||
//Pins für Minuten-Schieberegister
|
||||
const int clockPinM = 7;
|
||||
const int latchPinM = 6;
|
||||
const int dataPinM = 5;
|
||||
//Pins für Stunden-Schieberegister
|
||||
const int clockPinH = 10;
|
||||
const int latchPinH = 9;
|
||||
const int dataPinH = 8;
|
||||
|
||||
const int tickled = 13;
|
||||
const int taster = 12;
|
||||
|
||||
//Variablen
|
||||
long prevMillis = 0;
|
||||
long interval = 500;
|
||||
Time t;
|
||||
int stunden;
|
||||
int minuten;
|
||||
int sekunden;
|
||||
int tag;
|
||||
int monat;
|
||||
int wochentag;
|
||||
int temp;
|
||||
int halbesekunde = 0;
|
||||
int modus = 1;
|
||||
int modustimer = 0;
|
||||
|
||||
void setup(){
|
||||
//Outputpins
|
||||
pinMode(clockPinS, OUTPUT);
|
||||
pinMode(dataPinS, OUTPUT);
|
||||
pinMode(latchPinS, OUTPUT);
|
||||
pinMode(clockPinM, OUTPUT);
|
||||
pinMode(dataPinM, OUTPUT);
|
||||
pinMode(latchPinM, OUTPUT);
|
||||
pinMode(clockPinH, OUTPUT);
|
||||
pinMode(dataPinH, OUTPUT);
|
||||
pinMode(latchPinH, OUTPUT);
|
||||
pinMode(tickled, OUTPUT);
|
||||
|
||||
//Inputpin
|
||||
pinMode(taster, INPUT_PULLUP);
|
||||
|
||||
//RTC
|
||||
rtc.begin();
|
||||
|
||||
// Nachfolgende Linien zur Zeiteinstellung unkommentieren
|
||||
//rtc.setDOW(2); // Wochentag einstellen -> 1=Montag, 2=Dienstag, ...
|
||||
//rtc.setTime(16, 58, 00); // Uhrzeit einstellen (Stunde, Minute, Sekunde)
|
||||
//rtc.setDate(02, 04, 2019); // Datum einstellen (Tag, Monat, Jahr)
|
||||
|
||||
|
||||
//für Debugging un-kommentieren
|
||||
//Serial.begin(9600);
|
||||
} //Ende von setup()
|
||||
|
||||
void loop(){
|
||||
/*if (digitalRead(addhour) == LOW){ //falls Minuten erhöht werden sollen
|
||||
delay(100);
|
||||
minutes += 1;
|
||||
if (minutes > 58){
|
||||
minutes = 0;
|
||||
}
|
||||
Serial.println("Minute++");
|
||||
while(digitalRead(2) == LOW){
|
||||
delay(10);
|
||||
}
|
||||
}*/
|
||||
|
||||
if (digitalRead(taster) == LOW){
|
||||
modus++;
|
||||
modustimer = 0;
|
||||
if (modus == 4){
|
||||
modus = 1;
|
||||
}
|
||||
while(digitalRead(taster) == LOW){}
|
||||
delay(100);
|
||||
}
|
||||
|
||||
if(modustimer >= 10){
|
||||
modus = 1;
|
||||
modustimer = 0;
|
||||
}
|
||||
|
||||
unsigned long currentMillis = millis();
|
||||
if (currentMillis - prevMillis > interval) {
|
||||
prevMillis = currentMillis;
|
||||
|
||||
if(halbesekunde == 1){
|
||||
if (modus == 1){
|
||||
t = rtc.getTime();
|
||||
stunden = t.hour, DEC;
|
||||
minuten = t.min, DEC;
|
||||
sekunden = t.sec, DEC;
|
||||
digitalWrite(tickled, HIGH);
|
||||
displayTime();
|
||||
}
|
||||
else if (modus == 2){
|
||||
t = rtc.getTime();
|
||||
tag = t.date, DEC;
|
||||
monat = t.mon, DEC;
|
||||
wochentag = t.dow, DEC;
|
||||
modustimer++;
|
||||
displayDate();
|
||||
}
|
||||
else if (modus == 3){
|
||||
temp = int(rtc.getTemp());
|
||||
modustimer++;
|
||||
displayTemp();
|
||||
}
|
||||
|
||||
//für Debugging un-kommentieren
|
||||
/*Serial.println("");
|
||||
Serial.println("Zeit:"); //für debugging
|
||||
Serial.print(String(stunden));
|
||||
Serial.print(":");
|
||||
Serial.print(String(minuten));
|
||||
Serial.print(":");
|
||||
Serial.print(String(sekunden));
|
||||
//*/
|
||||
|
||||
halbesekunde = 0;
|
||||
}
|
||||
else{
|
||||
digitalWrite(tickled, LOW);
|
||||
halbesekunde = 1;
|
||||
}
|
||||
}
|
||||
|
||||
} //Ende von loop()
|
||||
|
||||
|
||||
void displayTime(){ //Sendet die Zeit zu den Shiftregistern
|
||||
//Sekunden
|
||||
digitalWrite(latchPinS, LOW);
|
||||
shiftOut(dataPinS, clockPinS, MSBFIRST, sekunden);
|
||||
digitalWrite(latchPinS, HIGH);
|
||||
//Minuten
|
||||
digitalWrite(latchPinM, LOW);
|
||||
shiftOut(dataPinM, clockPinM, MSBFIRST, minuten);
|
||||
digitalWrite(latchPinM, HIGH);
|
||||
//Stunden
|
||||
digitalWrite(latchPinH, LOW);
|
||||
shiftOut(dataPinH, clockPinH, MSBFIRST, stunden);
|
||||
digitalWrite(latchPinH, HIGH);
|
||||
}
|
||||
|
||||
void displayDate(){ //Sendet Datum zu den Shiftregistern
|
||||
digitalWrite(latchPinS, LOW);
|
||||
shiftOut(dataPinS, clockPinS, MSBFIRST, wochentag);
|
||||
digitalWrite(latchPinS, HIGH);
|
||||
digitalWrite(latchPinM, LOW);
|
||||
shiftOut(dataPinM, clockPinM, MSBFIRST, monat);
|
||||
digitalWrite(latchPinM, HIGH);
|
||||
digitalWrite(latchPinH, LOW);
|
||||
shiftOut(dataPinH, clockPinH, MSBFIRST, tag);
|
||||
digitalWrite(latchPinH, HIGH);
|
||||
}
|
||||
|
||||
void displayTemp(){ //Sendet Temperatur zu den Shiftregistern
|
||||
digitalWrite(latchPinS, LOW);
|
||||
shiftOut(dataPinS, clockPinS, MSBFIRST, temp);
|
||||
digitalWrite(latchPinS, HIGH);
|
||||
digitalWrite(latchPinM, LOW);
|
||||
shiftOut(dataPinM, clockPinM, MSBFIRST, 0);
|
||||
digitalWrite(latchPinM, HIGH);
|
||||
digitalWrite(latchPinH, LOW);
|
||||
shiftOut(dataPinH, clockPinH, MSBFIRST, 0);
|
||||
digitalWrite(latchPinH, HIGH);
|
||||
}
|
||||
Reference in New Issue
Block a user