This clock do have really big digits ![]()
schematic isn't big deal. 6x 74HC595 shift registers, a lot of small transistors and resistors. Timebase is a RTC module with DS3231. This module I adjust 2 times per year on breadboard.
The digits are self adhesive LED-stripes with 120 LED per meter. You can cut this stripe each 2,5 cm. My segments are 12,5 cm long (hours and minutes) seconds 7,5cm. A big digit is 26 cm. My board is a rack board from DIY-market with 30 x 120 cm
You can scale up this digits so big, as you want and it's much easier as handle with some dozen 5mm LEDs ![]()
The stripe is really bright. Next step was a phototransistor to dimm the display per PWM with the output enable pins from shift registers.
/* based on LucidTronix 4 Digit sketch
* modifyed by Ger@ld 1/2014
* Daisy Chained Shift Registers
* 6x 74HC595 connected to 7-Segment LED display
* with DS3231 Real time clock chip
* Tutorial at:
* http://www.lucidtronix.com/tutorials/52
* September 2013
*/
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
int dataPin = 10;
int latchPin = 8;
int clockPin = 9;
int fotPin = 3;Â Â // select the input pin for phototransistor; GND to E phototransistor C to input + 1M --> +5V
int dimPin = 6;Â Â // select the pin to drive Output Enable from shift registers (pin 13)
int fotVal = 0;Â Â // variable to store the value coming from the sensor
byte dec_digits[] = {0b10111111,0b00000110,0b11011011,0b01001111,0b11100110,0b01101101,0b11111101,0b00000111,0b11111111,0b01101111 };
void setup() {
 //set pins to output so you can control the shift register
 pinMode(latchPin, OUTPUT);
 pinMode(clockPin, OUTPUT);
 pinMode(dataPin, OUTPUT);
 pinMode(dimPin, OUTPUT); // declare the Dim_Pin as an OUTPUT
Â
 Wire.begin();
 RTC.begin();
 if (! RTC.isrunning()) {
  RTC.adjust(DateTime(__DATE__, __TIME__));
 }
}
void loop() {
 DateTime now = RTC.now();
 int thehour = now.hour();
 // switch between 24 hour clock and 12 hour clock
// if (thehour > 12 ) thehour -= 12;
 int hour_tens = thehour / 10;
 int hour_ones = thehour % 10;
 int minute_tens = now.minute() / 10;
 int minute_ones = now.minute() % 10;
 int second_tens = now.second() / 10;
 int second_ones = now.second() % 10;
 digitalWrite(latchPin, LOW);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[second_ones]);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[second_tens]);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[minute_ones]);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[minute_tens]);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[hour_ones]);
 shiftOut(dataPin, clockPin, MSBFIRST, dec_digits[hour_tens]);
 //take the latch pin high so the LEDs will light up:
 digitalWrite(latchPin, HIGH);
 {
 fotVal = analogRead(fotPin);      // read the value from the sensor
 fotVal = map(fotVal, 0, 1023, 0, 254); // scale it to use it with the LED - map to 254, cause 255 is complete off
 Â
 analogWrite(dimPin, fotVal);      // set brightness
}
 // pause before next value:
 delay(100);
}
A better description from my project is on german board:
http://forum.arduino.cc/index.php?topic=207948.0
Gerald




