Functiebeschrijving
Ons project is een volledig functionele klok. Aan de voorzijde is er 60 LEDs, één voor elke seconde, en bovenop de klok hebben wij een segment LED-display die houdt van de minuten en uren geplaatst. Als een extra functie wij een potentiometer die is aangesloten op de LEDs hebt geïnstalleerd en wanneer u de potentiometer bepaalt u welke van de 60 LEDs die gaat aan het licht. Het belangrijkste doel met deze extra functie was om te kunnen zetten in een geheime code die zou dan lock-up het vak, zoals een brandkast.
Materiaallijst
• 60ste RGB LEDs Gedreven door het constant huidige LED drivers van HC595
• 4 x HC595 met 16 uitgangen elk
• 4 x 7 segment LED-display
• DS1307 real timerklok
• Foto weerstand (voor het aanpassen van helderheid)
• Potentiometer
• Schakelaar (aan/uit-knop)
Code:
Onder leiding van int latchPin = 2;
int klok = 4;
int dataPin = 2;
Knoppen
int ButtonPin = 13;
int analogPin = A0;
Klok int APin = 5;
int BPin = 6;
int CPin = 7;
int DPin = 8;
unsigned long previousTime = 0;
int uur = 11;
int minuut = 36;
int tweede = 0;
int HourTen = 0;
int MinuteTen = 0;
int Hourunit = 0;
int Hour1 = 0;
int Minuteunit = 0;
int minuut = 0;
int HourPin = 9;
int HourunitPin = 10;
int MinutePin = 11;
int MinuteunitPin = 12;
niet-ondertekende lange interval = 1000;
void setup () {}
pinMode (analogPin, INPUT);
pinMode (ButtonPin, INPUT_PULLUP);
onder leiding van Pins
pinMode (latchPin, OUTPUT);
pinMode (klok, uitvoer);
pinMode (dataPin, OUTPUT);
Klok Pins
pinMode (APin, uitvoer);
pinMode (BPin, uitvoer);
pinMode (CPin, uitvoer);
pinMode (DPin, uitvoer);
pinMode (HourPin, uitvoer);
pinMode (HourunitPin, uitvoer);
pinMode (MinutePin, uitvoer);
pinMode (MinuteunitPin, uitvoer);
Serial.begin(9600);
}
void loop () {}
unsigned long currentTime = millis();
Als (digitalRead(ButtonPin) == LOW) {}
int val = analogRead(analogPin);
Val = kaart (val, 0, 1023, 0, 60);
lightlednr(val);
}
else {}
Als ((currentTime-previousTime) > interval) {}
Tweede = tweede ++;
previousTime = currentTime;
Serial.Print(hour);
Serial.Print(":");
Serial.Print(Minute);
Serial.Print(":");
Serial.println(Second);
Serial.Print(bitRead(Digit,3));
Serial.Print(bitRead(Digit,2));
Serial.Print(bitRead(Digit,1));
Serial.println(bitRead(Digit,0));
}
Als (tweede == 60) {}
Tweede = 0;
Minute = minuut ++;
}
Als (minuut 60 ==) {}
Minuten = 0;
Uur = uur ++;
}
Als (uur == 24) {}
Uur = 0;
}
één seconde is verstreken
Minuteunit = minuut % 10;
MinuteTen = (minuut - Minuteunit) / 10;
Hourunit = uur % 10;
HourTen = (uur - Hourunit) / 10;
UpdateClock(); lightlednr(Second);
}
}
Serial.Print(hour);
Serial.Print(":");
Serial.Print(Minute);
Serial.Print(":");
Serial.println(Second);
VOID UpdateClock() {}
digitalWrite (HourPin, hoge);
showdigit (HourTen);
delay(5);
digitalWrite (HourPin, laag);
digitalWrite (HourunitPin, hoge);
showdigit (Hourunit);
delay(5);
digitalWrite (HourunitPin, laag);
digitalWrite (MinutePin, hoge);
showdigit (MinuteTen);
delay(5);
digitalWrite (MinutePin, laag);
digitalWrite (MinuteunitPin, hoge);
showdigit (Minuteunit);
delay(5);
digitalWrite (MinuteunitPin, laag);
}
VOID showdigit (int cijfer) {}
digitalWrite (APin, bitRead(digit,0));
digitalWrite (BPin, bitRead(digit,1));
digitalWrite (CPin, bitRead(digit,2));
digitalWrite (DPin, bitRead(digit,3));
Serial.Print(bitRead(Digit,3));
Serial.Print(bitRead(Digit,2));
Serial.Print(bitRead(Digit,1));
Serial.println(bitRead(Digit,0));
//
}
VOID lightlednr (byte lednr) {}
digitalWrite (latchPin, laag);
Serial.println (lednr, BIN);
byte shbyte = 0;
Als (lednr < 8) {}
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 16) {}
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 24) {}
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 32) {}
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 40) {shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 48) {shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 56) {}
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klok, MSBFIRST, 0);
}
else if (lednr < 64) {}
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, MSBFIRST, 0);
shiftOut (dataPin, klok, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
}
digitalWrite (latchPin, hoge);
}