Romerska siffran digitalklocka
Se den i aktion i quicktime-filmer kopplade!
Det finns många sätt att visa tiden i både analogt och digitalt, men aldrig sett mest är en digital romerska siffran klocka. Jag har skapat ett med hjälp av följande delar:
-PIC18F8F46K20 startpaket
-PICKit2 från Microchip.
-9 V strömförsörjning.
-MPLAB IDE 8,40 för att skriva och kompilera koden (gratis nedladdning från Microchip hemsida)
-RTC (realtidsklocka) exempel program med startpaket modifierats för detta instructable.
Hårdvara
Starter kit styrelsen har en liten OLED-skärm lämpar sig för att visa tiden i arabiska siffror som ell som romerska siffror.
Den romerska numrering system inkluderar inte en '0' så det gör klockan ser lite udda ibland som du kommer att se.
Den romerska numrering system är följande:
0 ingen nolla i romerska siffror så vi använda utrymmen
I 1
II 2
III 3
IV 4
V 5
VI 6
VII 7
VIII 8
IX 9
X 10
XI 11
XII 12
XIII 13
XIV 14
XV 15
XVI 16
XVII 17
XVIII 18
XIX 19
XX 20
XXI 21
XXII 22
XXIII 23
XXIV 24
XXV 25
XXVI 26
XXVII 27
XXVIII 28
XXIX 29
XXX 30
XXXI 31
XXXII 32
XXXIII 33
XXXIV 34
XXXV 35
XXXVI 36
XXXVII 37
XXXVIII 38
XXXIX 39
XL 40
XLI 41
XLII 42
XLIII 44
XLIV 44
XLV 45
XLVI 46
XLVII 47
XLVIII 48
XLIX 49
L 50
LI 51
LII 52
LIII 53
LIV 54
LV 55
LVI 56
LVII 57
LVIII 58
LIX 59
En förklaring av hur varje nummer bildas finns på:
http://en.wikipedia.org/wiki/Roman_numerals
Översikt
I programmering exemplen mikrochip levererar är exempelkod för en Real-Time-gång-klocka (RTC). Jag har anpassat här koden för att skapa en Romersk numerisk sträng baserat på det nummer som genereras av RTC koden. Eftersom timmarna är är endast 1 till 12 i de flesta utrymmen de romerska siffrorna kan ta upp 4. Minuter och sekunder båda gå från 1 till 59 och 38 har den mest romerska siffror tecken vid sju, så var och en av dessa strängar måste vara sju tecken långa minsta. Jag har använt ett kolon ":" som en avgränsare mellan timmar, minuter och sekunder i displayen samma som decimal klockan. Den totala strängen krävs därför 4(hrs)+1(colon)+7(mins)+1(colon)+7(secs) eller 20 tecken som passar in i en linje tvärs över den OLED-skärmen.
OLED-display
OLED-display är olika från och LCD i att varje pixel är en aktiv LED. Till skillnad från och LCD som kräver en separat ljuskälla antingen överföra genom eller reflektera bort av displayen varje OLED pixel avger sitt eget ljus. Om alla pixlar finns mycket lite ström används, och när du vrider på fler pixlar mer makt används, men denna makt är fortfarande mycket mindre än den typiska bakgrundsbelysningen LCD.
Klockan drift :
Det finns fyra knappar som är associerade med klockan den övre vänstra knappen ökas timmar, den övre högra knappen ökas minuter. Den nedre vänstra knappen synkroniserar klockan på noll andra genom att hålla den tills den gång referensen visar 00 sekunder och sedan omedelbart släppa den. Medan denna knapp hålls ner skärmen vändas om färger och klockan uppdateras inte.
Den nedre vänstra knappen Tillåt väljande visningsformat som nedan: antingen bara normala decimal digital klocka, romerska nummer digital klocka, eller båda samtidigt. Det håller du knappen ner displayen format kommer att gå igenom alla tre förändras en gång varje sekund.
Firmware:
Firmware är nästan identisk med den ursprungliga firmware levereras av mikrochip utom jag lagt till tabeller till teckensnitt. C för att skapa myfonts.c (tidigare fonts.c) att lägga till den romerska siffror och main.c blev rtcmain.c där jag ändrat koden för att lägga till vad behövdes för att visa de romerska siffrorna samt växla mellan displayen format. Jag ändrade också OLED. C att skapa dubbla höjd karaktärer från de ursprungliga teckensnitten som medföljer för att göra dem mer synliga.
Om du inte vill göra några ändringar sedan allt du behöver är att programmet filen RTC.hex till starter kit styrelsen och du kommer att ha en Romersk numerisk klocka.
Framtida utforskningar
Med tanke på små och relativt låg effekt av OLED-skärm bör det vara möjligt att göra detta till en roman armbandsur. Andra, större teckensnitt kunde skapas för att göra det mer lättläst med timmar, minuter och sekunder vardera på sin egen linje. Källkoden är smuttade nedan.