Clock + possibility for safe/lock
Funktion beskrivning
Vårt projekt är en fullständiga fungerande klocka. På framsidan finns det 60 lysdioder, en för varje sekund, och på toppen av klockan har vi placerat ett segment LED-display som håller reda på minuter och timmar. Som en extra funktion har vi installerat en potentiometer som är ansluten till lamporna och när du vrider potentiometern kontrollerar du vilka av de 60 lysdioder som kommer att ljus. Det huvudsakliga syftet med denna extra funktion var att kunna sätta i en hemlig kod som sedan skulle låsa upp rutan som en strongbox.
Komponentlistan
• 60st RGB lysdioder drivs av HC595 konstant ström LED föraren
• 4 x HC595 med 16 utgångar vardera
• 4 x 7 segment LED display
• DS1307 Realtidsklocka
• Foto resistor (för att justera ljusstyrkan)
• Potentiometer
• Växla (på/av-knapp)
Kod:
Ledde int latchPin = 2;
int clock = 4;
int dataPin = 2;
Knappar
int ButtonPin = 13.
int analogPin = A0;
Klockan int APin = 5;
int BPin = 6;
int CPin = 7.
int DPin = 8.
osignerade långa previousTime = 0;
int timme = 11;
int minut = 36.
int näst = 0;
int HourTen = 0;
int MinuteTen = 0;
int Hourunit = 0;
int Hour1 = 0;
int Minuteunit = 0;
int minut = 0;
int HourPin = 9;
int HourunitPin = 10;
int MinutePin = 11;
int MinuteunitPin = 12;
osignerade långa intervall = 1000;
Ogiltiga inställningar () {
pinMode (analogPin, ingång);
pinMode (ButtonPin, INPUT_PULLUP);
ledde Pins
pinMode (latchPin, produktionen);
pinMode (klocka, OUTPUT);
pinMode (dataPin, produktionen);
Klockan Pins
pinMode (APin, OUTPUT);
pinMode (BPin, OUTPUT);
pinMode (CPin, OUTPUT);
pinMode (DPin, OUTPUT);
pinMode (HourPin, OUTPUT);
pinMode (HourunitPin, OUTPUT);
pinMode (MinutePin, OUTPUT);
pinMode (MinuteunitPin, OUTPUT);
Serial.BEGIN(9600);
}
Ogiltig loop () {
osignerade långa currentTime = millis();
om (digitalRead(ButtonPin) == låg) {
int val = analogRead(analogPin);
Val = karta (val, 0, 1023, 0, 60);
lightlednr(val);
}
annat {
om ((currentTime-previousTime) > intervall) {
För det andra = andra ++;
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));
}
om (det andra == 60) {
För det andra = 0;
Minut = minut ++;
}
om (minut == 60) {
Minut = 0;
Timme = timme ++;
}
om (timme == 24) {
Timme = 0;
}
en sekund har passerat
Minuteunit = minut % 10.
MinuteTen = (minut - Minuteunit) / 10;
Hourunit = timme % 10.
HourTen = (timme - Hourunit) / 10;
UpdateClock(); lightlednr(Second);
}
}
Serial.Print(Hour);
Serial.Print(":");
Serial.Print(Minute);
Serial.Print(":");
Serial.println(Second);
void UpdateClock() {
digitalWrite (HourPin, hög);
showdigit (HourTen);
Delay(5);
digitalWrite (HourPin, låg);
digitalWrite (HourunitPin, hög);
showdigit (Hourunit);
Delay(5);
digitalWrite (HourunitPin, låg);
digitalWrite (MinutePin, hög);
showdigit (MinuteTen);
Delay(5);
digitalWrite (MinutePin, låg);
digitalWrite (MinuteunitPin, hög);
showdigit (Minuteunit);
Delay(5);
digitalWrite (MinuteunitPin, låg);
}
void showdigit (int tecken) {
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, låg);
Serial.println (lednr, BIN);
byte shbyte = 0;
om (lednr < 8) {
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 16) {
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 24) {
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 32) {
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 40) {shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 48) {shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 56) {
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, klocka, MSBFIRST, 0);
}
annars om (lednr < 64) {
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, MSBFIRST, 0);
shiftOut (dataPin, klocka, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
}
digitalWrite (latchPin, hög);
}