The display is 6,9 inch big (150x90 mm) and it's designed to hang it on the wall.
If you print four big and one small piece as I did you can use it as an watch.
If you want to put two displays together you have to glue them together.
ELECTRONICS:
1x Arduino NANO
86x 5mm LED's (color of your choice)
Installation:
You can download the code in “Files” or copy it down below:
#include "SevSeg.h"
#include "RTClib.h"
SevSeg sevseg; //Instantiate a seven segment controller object
RTC_DS1307 rtc;
bool pnkt = false;
unsigned long secprev = 0;
unsigned long minprev = 0;
unsigned int pausen[12] = {475,525,580,635,700,755,805,855,905,965,1015,1065};
bool count = true;
int count2 = 100;
int bispause;
int BPS = 150;
void setup() {
Serial.begin(57600);
while (!Serial);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
byte numDigits = 4;
byte digitPins[] = {5, 4, 3, 2};
byte segmentPins[] = {6, 7, 8, 9, 10, 11, 12};
bool resistorsOnSegments = true; // 'false' means resistors are on digit pins
byte hardwareConfig = N_TRANSISTORS; // See README.md for options
bool updateWithDelays = false; // Default 'false' is Recommended
bool leadingZeros = false; // Use 'true' if you'd like to keep the leading zeros
bool disableDecPoint = true; // Use 'true' if your decimal point doesn't exist or isn't connected
pinMode(13, OUTPUT);
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); //RTC time adjust (Y, M, D, H, M, S)
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments,
updateWithDelays, leadingZeros, disableDecPoint);
sevseg.setBrightness(100);
amogus();
amogus();
amogus();
}
void loop() {
DateTime time = rtc.now();
if(time.second() != secprev) { //every second
count2++;
secprev = time.second();
if(count2 >= 20 && count2 < 30 && bispause < 100){
digitalWrite(13, LOW);
sevseg.setNumber(bispause);
}
else{
pnkt = !pnkt;
if(pnkt){
digitalWrite(13, HIGH);
}
else{
digitalWrite(13, LOW);
}
sevseg.setNumber(time.hour()*100+time.minute());
}
}
if(time.minute() != minprev){
minprev = time.minute();
bispause = 100;
for(int i = 0; i < sizeof(pausen); i++){
if(pausen[i] - time.hour()*60 - time.minute() > 0 && pausen[i] - time.hour()*60 - time.minute() < bispause){
bispause = pausen[i] - time.hour()*60 - time.minute();
}
if(pausen[i] == time.hour()*60 + time.minute()){
amogus();
}
}
count2 = 0;
}
sevseg.refreshDisplay(); // Must run repeatedly
}
void amogus(){
for(int i=6; i<=12; i++){
digitalWrite(i, HIGH);
}
digitalWrite(9, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
tone(13, 523); //C5
digitalWrite(2, HIGH);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 622); //Eb5
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 698); //F5
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 740); //Gb5
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 698); //F5
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 622); //Eb5
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 523); //C5
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
delay(3*BPS);
noTone(13);
delay(3*BPS);
tone(13, 466); //B4
digitalWrite(3, HIGH);
digitalWrite(2, LOW);
delay(BPS/2);
noTone(13);
delay(BPS/2);
tone(13, 587); //D5
digitalWrite(4, HIGH);
digitalWrite(3, LOW);
delay(BPS/2);
noTone(13);
delay(BPS/2);
tone(13, 523); //C5
digitalWrite(5, HIGH);
digitalWrite(4, LOW);
delay(3*BPS);
noTone(13);
delay(2*BPS);
noTone(13);
tone(13, 98); //G3
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(BPS);
noTone(13);
delay(BPS);
tone(13, 131); //C3
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
delay(2*BPS);
noTone(13);
delay(500);
}
The author marked this model as their own original creation.