Descripción de la función
Nuestro proyecto es un reloj funcional completo. En la parte delantera hay 60 LEDs, uno para cada segundo, y en la parte superior del reloj que hemos colocado un segmento LED pantalla que mantiene un registro de los minutos y horas. Como una característica extra que hemos instalado un potenciómetro conectado a los LEDs y al girar el potenciómetro control que de los 60 LEDs que va a la luz. El objetivo principal con esta función adicional debía ser capaz de poner en un código secreto que luego se cierre la caja, como una caja fuerte.
Lista de componentes
• 60st LEDs RGB por controladores de LED de corriente constante de HC595
• 4 salidas de x HC595 con 16 cada uno
• 4 x 7 segmentos LED para la indicación
• DS1307 reloj tiempo real
• Fotorresistencia (para el ajuste de brillo)
• Potenciómetro
• Interruptor (en la tecla/Off)
Código:
LED int latchPin = 2;
int reloj = 4;
int dataPin = 2;
Botones
int ButtonPin = 13;
int analogPin = A0;
Reloj int APin = 5;
int BPin = 6;
int CPin = 7;
Trabajo de int = 8;
previousTime largo sin signo = 0;
int hora = 11;
int minutos = 36;
int segundo = 0;
int HourTen = 0;
int MinuteTen = 0;
int Hourunit = 0;
int Hour1 = 0;
int Minuteunit = 0;
int minutos = 0;
int HourPin = 9;
int HourunitPin = 10;
int MinutePin = 11;
int MinuteunitPin = 12;
intervalo largo sin signo = 1000;
void setup () {}
pinMode (analogPin, entrada);
pinMode (ButtonPin, INPUT_PULLUP);
Pernos de LED
pinMode (latchPin, salida);
pinMode (reloj, salida);
pinMode (dataPin, salida);
Pasadores reloj
pinMode (APin, salida);
pinMode (BPin, salida);
pinMode (CPin, salida);
pinMode (trabajo, salida);
pinMode (HourPin, salida);
pinMode (HourunitPin, salida);
pinMode (MinutePin, salida);
pinMode (MinuteunitPin, salida);
Serial.Begin(9600);
}
void loop () {}
currentTime larga sin signo = millis();
Si (digitalRead(ButtonPin) == LOW) {}
int val = analogRead(analogPin);
Val = mapa (val, 0, 1023, 0, 60);
lightlednr(Val);
}
Else {}
Si ((currentTime-previousTime) > intervalo) {}
En segundo lugar = segundo ++;
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));
}
Si (segundo == 60) {}
Segundo = 0;
Minutos = minutos ++;
}
Si (minutos == 60) {}
Minuto = 0;
Hora = hora ++;
}
Si (horas == 24) {}
Hora = 0;
}
ha pasado un segundo
Minuteunit = minuto % 10;
MinuteTen = (minuto - Minuteunit) / 10;
Hourunit = hora % 10;
HourTen = (hora - Hourunit) / 10;
UpdateClock(); lightlednr(Second);
}
}
Serial.Print(hour);
Serial.Print(":");
Serial.Print(minute);
Serial.Print(":");
Serial.println(Second);
void UpdateClock() {}
digitalWrite (HourPin, alto);
showdigit (HourTen);
Delay(5);
digitalWrite (HourPin, bajo);
digitalWrite (HourunitPin, alto);
showdigit (Hourunit);
Delay(5);
digitalWrite (HourunitPin, bajo);
digitalWrite (MinutePin, alto);
showdigit (MinuteTen);
Delay(5);
digitalWrite (MinutePin, bajo);
digitalWrite (MinuteunitPin, alto);
showdigit (Minuteunit);
Delay(5);
digitalWrite (MinuteunitPin, bajo);
}
void showdigit (int dígitos) {}
digitalWrite (APin, bitRead(digit,0));
digitalWrite (BPin, bitRead(digit,1));
digitalWrite (CPin, bitRead(digit,2));
digitalWrite (trabajo, 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 (lednr bytes) {}
digitalWrite (latchPin, bajo);
Serial.println (lednr, BIN);
byte shbyte = 0;
Si (lednr < 8) {}
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 16) {}
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 24) {}
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 32) {}
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 40) {shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 48) {shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 56) {}
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
shiftOut (dataPin, reloj, MSBFIRST, 0);
}
else if (lednr < 64) {}
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, MSBFIRST, 0);
shiftOut (dataPin, reloj, LSBFIRST, bitWrite (shbyte, (lednr % 8), 1));
}
digitalWrite (latchPin, HIGH);
}