BID = 906136
Jabo Neu hier

Beiträge: 29 Wohnort: Köln
|
Hallo,
ich bin gerade dabei mir eine große DigitalUhr zu basteln.
Ist auch alles soweit fertig, jedoch habe ich noch einige Probleme mit dem Programm.
Ich benutze einen Arduino um die Uhr zu steuern. Klappt auch soweit außer, dass
- beim Drücken des Kopfes um die Stunden bzw Minuten einzustellen,es viel zu schnell geht und man es dann nicht genau einstellen kann
- die Uhr geht am Tag 3 Minuten nach (liegt bestimmt an den ganzen If-Abfragen, die ja auch ''Zeit'' brauchen)
Hab in der Schule etwas Java gelernt jedoch wohl nicht gut genug um die Probleme zu lösen. Hoffe ihr könntet mir ein paar Tipps geben.
Wäre euch sehr dankbar!
Grüße,
Jannis
Hier das Programm (Ich habe den Kopf mal weggelassen) :
void loop() {
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
sek++;
if (sek>=60){
Serial.print("+Minute");
mint++;
sek=0;
}
if (mint>=60){
Serial.print("+Std");
std1++;
mint=0;
}
if (std1>=24){
Serial.print("+Tag");
std1=0;
}
set();
if(on){
digitalWrite(50, LOW); // Die zwei Lampen in der Mitte, die blinken sollen
digitalWrite(51, LOW);
on=false;
}else {
digitalWrite(50, HIGH);
digitalWrite(51, HIGH);
on=true;
}
}
if (digitalRead(52)==HIGH){ // Kopf zum verstellen der Minute
minute();
}
if (digitalRead(53)==HIGH){ // Stundenknopf
stunde();
}
}
void minute(){
mint++;
if (mint>=60){
std1++;
mint=0;
}
if (std1>=24){
std1=0;
}
set();
}
void stunde(){
std1++;
if (std1>=24){
std1=0;
}
set();
}
void set(){
int stddd = std1;
if(stddd>=10)
stddd/=10;
else if(stddd<10)
stddd=0;
set(7,(stddd));
set(0,(std1%10));
int mintt = mint;
if(mintt>=10)
mintt= mintt/10;
else if(mintt<10)
mintt=0;
Serial.println("SET");
Serial.println(mintt);
Serial.println("SET");
set(14,(mintt));
set(21,(mint%10));
}
void set(int x, int zahl){
if(zahl==0){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite(( 5+x), LOW);
digitalWrite((4+x), HIGH);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
Serial.println("NULL");
}
else if (zahl==1){
digitalWrite((1+x), LOW);
digitalWrite((2+x), LOW);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), LOW);
digitalWrite((4+x), LOW);
digitalWrite((6+x), LOW);
digitalWrite((7+x), HIGH);
Serial.println("EINS");
}
else if (zahl==2){
digitalWrite((1+x), LOW);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), HIGH);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), LOW);
}
else if (zahl==3){
digitalWrite((1+x), LOW);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), LOW);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
}
else if (zahl==4){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), LOW);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), LOW);
digitalWrite((6+x), LOW);
digitalWrite((7+x), HIGH);
}
else if (zahl==5){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), LOW);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), LOW);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
}
else if (zahl==6){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), LOW);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), HIGH);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
}
else if (zahl==7){
digitalWrite((1+x), LOW);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), LOW);
digitalWrite((4+x), LOW);
digitalWrite((6+x), LOW);
digitalWrite((7+x), HIGH);
}
else if (zahl==8){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), HIGH);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
}
else if (zahl==9){
digitalWrite((1+x), HIGH);
digitalWrite((2+x), HIGH);
digitalWrite((3+x), HIGH);
digitalWrite((5+x), HIGH);
digitalWrite((4+x), LOW);
digitalWrite((6+x), HIGH);
digitalWrite((7+x), HIGH);
}
}
|