Skip to content

Commit e98f7d1

Browse files
committed
eggs
1 parent 1327c54 commit e98f7d1

File tree

2 files changed

+91
-1
lines changed

2 files changed

+91
-1
lines changed

certamen.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
See COPYING
33
*/
44

5-
#undef EASTER_EGGS
5+
#define EASTER_EGGS
66
#undef TEST_MODE
77
#define RANDOM_PRESS_FREQUENCY 0
88
#define CLEAR_FREQUENCY 0

eastereggs.ino

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
const char ae[] PROGMEM = "arma uirumque cano Troiae qui primus ab oris / "
2+
"Italiam fato profugus Lauiniaque uenit / "
3+
"litora multum ille et terris iactatus et alto / "
4+
"ui superum saeuae memorem Iunonis ob iram / "
5+
"multa quoque et bello passus dum conderet urbem / "
6+
"inferretque deos Latio genus unde Latinum / "
7+
"Albanique patres atque altae moenia Romae / "
8+
"Musa mihi causas memora quo numine laeso / "
9+
"quidue dolens regina deum tot uoluere casus / "
10+
"insignem pietate uirum tot adire labores / "
11+
"impulerit tantaene animis caelestibus irae / "
12+
"urbs antiqua fuit Tyrii tenuere coloni / "
13+
"Karthago Italiam contra Tiberinaque longe / "
14+
"ostia diues opum studiisque asperrima belli / "
15+
"quam Iuno fertur terris magis omnibus unam / "
16+
"posthabita coluisse Samo hic illius arma / "
17+
"hic currus fuit hoc regnum dea gentibus esse / "
18+
"si qua fata sinant iam tum tenditque fouetque / "
19+
"progeniem sed enim Troiano a sanguine duci / "
20+
"audierat Tyrias olim quae uerteret arces / "
21+
"hinc populum late regem belloque superbum / "
22+
"uenturum excidio Libyae sic uoluere Parcas / "
23+
"id metuens ueterisque memor Saturnia belli / "
24+
"prima quod ad Troiam pro caris gesserat Argis / "
25+
"necdum etiam causae irarum saeuique dolores ";
26+
27+
char lastClearState = 0;
28+
void checkClear() {
29+
if (! (*clearPort & clearMask) ) {
30+
if (lastClearState) {
31+
((void(*)(void))0)();
32+
}
33+
}
34+
else {
35+
lastClearState = 1;
36+
}
37+
}
38+
39+
char text[33] = "";
40+
void scrollingWrite(char c) {
41+
int l = strlen(text);
42+
if (l<32) {
43+
text[l] = c;
44+
text[l+1] = 0;
45+
}
46+
else {
47+
memmove(text,text+1,31);
48+
text[31] = c;
49+
}
50+
lcd.setCursor(0,0);
51+
int i;
52+
for (i=0;i<16 && text[i];i++) lcd.write(text[i]);
53+
if (i<16)
54+
return;
55+
lcd.setCursor(0,1);
56+
for (i=16;i<32 && text[i];i++) lcd.write(text[i]);
57+
}
58+
59+
void easterEgg2() {
60+
int i = 0;
61+
lcd.setCursor(0,0);
62+
while(1) {
63+
checkClear();
64+
char c = pgm_read_byte_near(ae+i);
65+
if (c==0)
66+
return;
67+
scrollingWrite(c);
68+
delay(150);
69+
i++;
70+
}
71+
}
72+
73+
void easterEgg1() {
74+
75+
}
76+
77+
void easterEggs() {
78+
lcd.clear();
79+
lcd.setCursor(0, 0);
80+
81+
if (1 == digitalRead(certamenMode)) {
82+
lcd.print("Easter Egg #2");
83+
delay(20);
84+
easterEgg2();
85+
}
86+
else {
87+
easterEgg1();
88+
}
89+
}
90+

0 commit comments

Comments
 (0)