Code format
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
.pio/
|
179
src/fooclock.ino
179
src/fooclock.ino
@@ -1,35 +1,32 @@
|
|||||||
#include <TimeLib.h>
|
#include <TimeLib.h>
|
||||||
#include <Ethernet.h>
|
#include <Ethernet.h>
|
||||||
#include <EthernetUdp.h>
|
|
||||||
#include <SPI.h>
|
#include <SPI.h>
|
||||||
#include <TimerOne.h>
|
#include <TimerOne.h>
|
||||||
|
|
||||||
#define A 0
|
#define _A 0
|
||||||
#define B 1
|
#define _B 1
|
||||||
#define C 2
|
#define _C 2
|
||||||
#define D 3
|
#define _E 4
|
||||||
#define E 4
|
#define _G 6
|
||||||
#define F 5
|
#define _H 7
|
||||||
#define G 6
|
#define _I 8
|
||||||
#define H 7
|
#define _J 9
|
||||||
#define I 8
|
#define _K 10
|
||||||
#define J 9
|
#define _L 11
|
||||||
#define K 10
|
#define _M 12
|
||||||
#define L 11
|
#define _N 13
|
||||||
#define M 12
|
#define _O 14
|
||||||
#define N 13
|
#define _P 15
|
||||||
#define O 14
|
#define _Q 16
|
||||||
#define P 15
|
#define _R 17
|
||||||
#define Q 16
|
#define _S 18
|
||||||
#define R 17
|
#define _T 19
|
||||||
#define S 18
|
#define _U 20
|
||||||
#define T 19
|
#define _V 21
|
||||||
#define U 20
|
#define _W 22
|
||||||
#define V 21
|
#define _X 23
|
||||||
#define W 22
|
#define _Y 24
|
||||||
#define X 23
|
#define _Z 25
|
||||||
#define Y 24
|
|
||||||
#define Z 25
|
|
||||||
|
|
||||||
#define UP 1
|
#define UP 1
|
||||||
#define DOWN 2
|
#define DOWN 2
|
||||||
@@ -39,12 +36,11 @@
|
|||||||
|
|
||||||
// ---------------------------------- Definition of Global Variables -------------------------- //
|
// ---------------------------------- Definition of Global Variables -------------------------- //
|
||||||
|
|
||||||
byte mac[] = {
|
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
|
||||||
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
|
|
||||||
// NTP Servers:
|
// NTP Servers:
|
||||||
IPAddress timeServer(132, 163, 4, 101); // time-a.timefreq.bldrdoc.gov
|
IPAddress timeServer(132, 163, 96, 1); // time-a.timefreq.bldrdoc.gov
|
||||||
// IPAddress timeServer(132, 163, 4, 102); // time-b.timefreq.bldrdoc.gov
|
// IPAddress timeServer(132, 163, 96, 2); // time-b.timefreq.bldrdoc.gov
|
||||||
// IPAddress timeServer(132, 163, 4, 103); // time-c.timefreq.bldrdoc.gov
|
// IPAddress timeServer(132, 163, 96, 3); // time-c.timefreq.bldrdoc.gov
|
||||||
|
|
||||||
|
|
||||||
//const int timeZone = 1; // Central European Time
|
//const int timeZone = 1; // Central European Time
|
||||||
@@ -62,9 +58,9 @@ bool second_changed = false;
|
|||||||
bool init_done = false;
|
bool init_done = false;
|
||||||
bool transition_active = false;
|
bool transition_active = false;
|
||||||
bool swipe_active = false;
|
bool swipe_active = false;
|
||||||
bool shrink_active = false; // Maybe we should move them to a single variable an set or unset bits inside the variable
|
bool shrink_active = false; // Maybe we should move them to a single variable and set or unset bits inside the variable
|
||||||
int cur_update = 0;
|
int cur_update = 0;
|
||||||
int shift_state = 0;
|
unsigned int shift_state = 0;
|
||||||
int update_counter = 0;
|
int update_counter = 0;
|
||||||
int spinner_pos = 0;
|
int spinner_pos = 0;
|
||||||
int animation = 0;
|
int animation = 0;
|
||||||
@@ -112,7 +108,6 @@ int digits[10] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
int letter[26] = {
|
int letter[26] = {
|
||||||
|
|
||||||
191, // A
|
191, // A
|
||||||
248, // b
|
248, // b
|
||||||
204, // C
|
204, // C
|
||||||
@@ -142,15 +137,14 @@ int letter [26] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
int frame[6] = {
|
int frame[6] = {
|
||||||
0,letter[T],letter[R],letter[A],letter[T],letter[S] // Display "Start" (write from right to left into the array)
|
0, letter[_T], letter[_R], letter[_A], letter[_T], letter[_S] // Display "Start" (write from right to left into the array)
|
||||||
};
|
};
|
||||||
int today[7] = {
|
int today[7] = {
|
||||||
184, 220, 200, 200, 240, 0, 0 // Display "Hello"
|
184, 220, 200, 200, 240, 0, 0 // Display "Hello"
|
||||||
};
|
};
|
||||||
|
|
||||||
// ----------------------------------- Setup Code ---------------------------------------------- //
|
// ----------------------------------- Setup Code ---------------------------------------------- //
|
||||||
void setup()
|
void setup() {
|
||||||
{
|
|
||||||
pinMode(OutputEnable, OUTPUT);
|
pinMode(OutputEnable, OUTPUT);
|
||||||
pinMode(latchPin, OUTPUT);
|
pinMode(latchPin, OUTPUT);
|
||||||
pinMode(clockPin, OUTPUT);
|
pinMode(clockPin, OUTPUT);
|
||||||
@@ -173,8 +167,7 @@ void setup()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------------- Main Loop ------------------------------------------------- //
|
// -------------------------------------- Main Loop ------------------------------------------------- //
|
||||||
void loop()
|
void loop() {
|
||||||
{
|
|
||||||
time_t timestamp = now();
|
time_t timestamp = now();
|
||||||
// Sync blinking with second change
|
// Sync blinking with second change
|
||||||
if (cur_time != timestamp && !second_changed) {
|
if (cur_time != timestamp && !second_changed) {
|
||||||
@@ -188,8 +181,7 @@ void loop()
|
|||||||
update_done = false;
|
update_done = false;
|
||||||
}
|
}
|
||||||
if (intervalpos < 10) {
|
if (intervalpos < 10) {
|
||||||
switch (animation)
|
switch (animation) {
|
||||||
{
|
|
||||||
case 0: transition(today);
|
case 0: transition(today);
|
||||||
break;
|
break;
|
||||||
case 1: combine(today);
|
case 1: combine(today);
|
||||||
@@ -210,8 +202,7 @@ void loop()
|
|||||||
// combine(today);
|
// combine(today);
|
||||||
// swipe(UP,today);
|
// swipe(UP,today);
|
||||||
// displayDate(timestamp);
|
// displayDate(timestamp);
|
||||||
}
|
} else if (intervalpos > 20 && intervalpos < 30) {
|
||||||
else if (intervalpos > 20 && intervalpos < 30){
|
|
||||||
displayBinaryTime(timestamp);
|
displayBinaryTime(timestamp);
|
||||||
} else {
|
} else {
|
||||||
displayTime(timestamp);
|
displayTime(timestamp);
|
||||||
@@ -225,7 +216,7 @@ void loop()
|
|||||||
shift_state = 0;
|
shift_state = 0;
|
||||||
updateDate(timestamp);
|
updateDate(timestamp);
|
||||||
|
|
||||||
animation = (int) (rand() % 6);
|
animation = rand() % 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blinkenfoo - comment to remove pulsating light
|
// Blinkenfoo - comment to remove pulsating light
|
||||||
@@ -238,19 +229,15 @@ void loop()
|
|||||||
if (update_counter == 900) {
|
if (update_counter == 900) {
|
||||||
second_changed = true;
|
second_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------- Interrupt Handler (Timer1) ------------------- //
|
// ---------------------- Interrupt Handler (Timer1) ------------------- //
|
||||||
void updateDisplay ()
|
void updateDisplay() {
|
||||||
{
|
|
||||||
// take the latchPin low so
|
// take the latchPin low so
|
||||||
// the LEDs don't flicker while you're sending in bits:
|
// the LEDs don't flicker while you're sending in bits:
|
||||||
digitalWrite(latchPin, LOW);
|
digitalWrite(latchPin, LOW);
|
||||||
|
|
||||||
for(int digitCount=5; digitCount>=0; digitCount--)
|
for (int digitCount = 5; digitCount >= 0; digitCount--) {
|
||||||
{
|
|
||||||
shiftOut(dataPin, clockPin, MSBFIRST, frame[digitCount]);
|
shiftOut(dataPin, clockPin, MSBFIRST, frame[digitCount]);
|
||||||
}
|
}
|
||||||
//take the latch pin high so the LEDs will light up again:
|
//take the latch pin high so the LEDs will light up again:
|
||||||
@@ -270,8 +257,7 @@ void updateDisplay ()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// -------------------------------- Date Functions ---------------------- //
|
// -------------------------------- Date Functions ---------------------- //
|
||||||
void updateDate(time_t t)
|
void updateDate(time_t t) {
|
||||||
{
|
|
||||||
today[0] = digits[(day(t) / 10)];
|
today[0] = digits[(day(t) / 10)];
|
||||||
today[1] = digits[(day(t) % 10)] + 1;
|
today[1] = digits[(day(t) % 10)] + 1;
|
||||||
|
|
||||||
@@ -282,8 +268,7 @@ void updateDate(time_t t)
|
|||||||
today[5] = digits[((year(t) - 2000) % 10)];
|
today[5] = digits[((year(t) - 2000) % 10)];
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayDate(time_t t)
|
void displayDate(time_t t) {
|
||||||
{
|
|
||||||
frame[5] = digits[(day(t) / 10)];
|
frame[5] = digits[(day(t) / 10)];
|
||||||
frame[4] = digits[(day(t) % 10)] + 1;
|
frame[4] = digits[(day(t) % 10)] + 1;
|
||||||
|
|
||||||
@@ -295,8 +280,7 @@ void displayDate(time_t t)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------- Time Functions -------------------- //
|
// ------------------------------- Time Functions -------------------- //
|
||||||
void displayTime(time_t t)
|
void displayTime(time_t t) {
|
||||||
{
|
|
||||||
frame[5] = digits[(hour(t) / 10)];
|
frame[5] = digits[(hour(t) / 10)];
|
||||||
frame[4] = digits[(hour(t) % 10)];
|
frame[4] = digits[(hour(t) % 10)];
|
||||||
|
|
||||||
@@ -307,12 +291,10 @@ void displayTime(time_t t)
|
|||||||
frame[0] = digits[(second(t) % 10)];
|
frame[0] = digits[(second(t) % 10)];
|
||||||
}
|
}
|
||||||
|
|
||||||
void displayBinaryTime(time_t t)
|
void displayBinaryTime(time_t t) {
|
||||||
{
|
|
||||||
int digit;
|
int digit;
|
||||||
|
|
||||||
for(int digitCount=5; digitCount>=0; digitCount--)
|
for (int digitCount = 5; digitCount >= 0; digitCount--) {
|
||||||
{
|
|
||||||
// digit zusammenbauen und dann invertieren
|
// digit zusammenbauen und dann invertieren
|
||||||
digit = 0;
|
digit = 0;
|
||||||
|
|
||||||
@@ -337,8 +319,7 @@ void dim(int direction, int lower_limit, int upper_limit){
|
|||||||
|
|
||||||
if (update_counter > range) {
|
if (update_counter > range) {
|
||||||
local_counter = update_counter - shift_start;
|
local_counter = update_counter - shift_start;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
local_counter = update_counter;
|
local_counter = update_counter;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -358,13 +339,20 @@ void dim(int direction, int lower_limit, int upper_limit){
|
|||||||
void spin(int digit) {
|
void spin(int digit) {
|
||||||
if (spinner_pos >= 6)spinner_pos = 0;
|
if (spinner_pos >= 6)spinner_pos = 0;
|
||||||
switch (spinner_pos) {
|
switch (spinner_pos) {
|
||||||
case 0: frame[digit] = 4; break;
|
case 0: frame[digit] = 4;
|
||||||
case 1: frame[digit] = 2; break;
|
break;
|
||||||
case 2: frame[digit] = 32; break;
|
case 1: frame[digit] = 2;
|
||||||
case 3: frame[digit] = 64; break;
|
break;
|
||||||
case 4: frame[digit] = 128; break;
|
case 2: frame[digit] = 32;
|
||||||
case 5: frame[digit] = 8; break;
|
break;
|
||||||
default: frame[digit] = 0; break;
|
case 3: frame[digit] = 64;
|
||||||
|
break;
|
||||||
|
case 4: frame[digit] = 128;
|
||||||
|
break;
|
||||||
|
case 5: frame[digit] = 8;
|
||||||
|
break;
|
||||||
|
default: frame[digit] = 0;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
spinner_pos++;
|
spinner_pos++;
|
||||||
};
|
};
|
||||||
@@ -379,14 +367,12 @@ void shrink(int direction, int* new_data){
|
|||||||
j = 0;
|
j = 0;
|
||||||
if (direction == UP) {
|
if (direction == UP) {
|
||||||
height = 2;
|
height = 2;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
height = 0;
|
height = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (height)
|
switch (height) {
|
||||||
{
|
|
||||||
case 0: bitmask = 0x44;
|
case 0: bitmask = 0x44;
|
||||||
break;
|
break;
|
||||||
case 1: bitmask = 0xAA;
|
case 1: bitmask = 0xAA;
|
||||||
@@ -405,27 +391,23 @@ void shrink(int direction, int* new_data){
|
|||||||
|
|
||||||
if (direction == DOWN) {
|
if (direction == DOWN) {
|
||||||
height++;
|
height++;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
height--;
|
height--;
|
||||||
}
|
}
|
||||||
Serial.print("Shrink.J = ");
|
Serial.print("Shrink.J = ");
|
||||||
Serial.println(j);
|
Serial.println(j);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
for (int digit = 0; digit < 6; digit++) {
|
for (int digit = 0; digit < 6; digit++) {
|
||||||
frame[5 - digit] |= new_data[digit] & bitmask;
|
frame[5 - digit] |= new_data[digit] & bitmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (direction == DOWN) {
|
if (direction == DOWN) {
|
||||||
height--;
|
height--;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
height++;
|
height++;
|
||||||
}
|
}
|
||||||
Serial.print("Shrink.J = ");
|
Serial.print("Shrink.J = ");
|
||||||
Serial.println(j);
|
Serial.println(j);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
j++;
|
j++;
|
||||||
@@ -471,27 +453,23 @@ void swipe(int direction, int* new_data){
|
|||||||
|
|
||||||
if (direction == DOWN) {
|
if (direction == DOWN) {
|
||||||
height++;
|
height++;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
height--;
|
height--;
|
||||||
}
|
}
|
||||||
Serial.print("Swipe. J = ");
|
Serial.print("Swipe. J = ");
|
||||||
Serial.println(j);
|
Serial.println(j);
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
for (int digit = 0; digit < 6; digit++) {
|
for (int digit = 0; digit < 6; digit++) {
|
||||||
frame[5 - digit] |= new_data[digit] & bitmask;
|
frame[5 - digit] |= new_data[digit] & bitmask;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (direction == DOWN) {
|
if (direction == DOWN) {
|
||||||
height--;
|
height--;
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
height++;
|
height++;
|
||||||
}
|
}
|
||||||
Serial.print("Swipe. J = ");
|
Serial.print("Swipe. J = ");
|
||||||
Serial.println(j);
|
Serial.println(j);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
j++;
|
j++;
|
||||||
@@ -517,11 +495,9 @@ void combine(int* a){
|
|||||||
|
|
||||||
if (j % 3 == 0) {
|
if (j % 3 == 0) {
|
||||||
frame[5 - i] |= a[i];
|
frame[5 - i] |= a[i];
|
||||||
}
|
} else if (j % 3 == 1) {
|
||||||
else if(j % 3 == 1){
|
|
||||||
frame[5 - i] &= ~current[i];
|
frame[5 - i] &= ~current[i];
|
||||||
}
|
} else {
|
||||||
else{
|
|
||||||
frame[5 - i] = a[i];
|
frame[5 - i] = a[i];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -533,9 +509,7 @@ void combine(int* a){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void shift_right(int neu) {
|
||||||
void shift_right(int neu)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 5; i++) {
|
for (int i = 0; i < 5; i++) {
|
||||||
frame[i] = frame[i + 1];
|
frame[i] = frame[i + 1];
|
||||||
}
|
}
|
||||||
@@ -543,8 +517,8 @@ void shift_right(int neu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void transition(int *a) {
|
void transition(int *a) {
|
||||||
time_t t = now();
|
if (update_counter % 150 == 0 && cur_update != update_counter && shift_state < sizeof(today) / 2) {
|
||||||
if (update_counter % 150 == 0 && cur_update != update_counter && shift_state < sizeof(today)/2){ //assuming the Array contains only ints,
|
//assuming the Array contains only ints,
|
||||||
//which have a sizeof 2 on this Arduino
|
//which have a sizeof 2 on this Arduino
|
||||||
Serial.println(sizeof(a));
|
Serial.println(sizeof(a));
|
||||||
cur_update = update_counter;
|
cur_update = update_counter;
|
||||||
@@ -554,10 +528,6 @@ void transition(int* a){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*-------- Alarm Clock code ---------*/
|
/*-------- Alarm Clock code ---------*/
|
||||||
const int AlarmClockPacketSize = 256;
|
const int AlarmClockPacketSize = 256;
|
||||||
byte AlarmBuffer[AlarmClockPacketSize];
|
byte AlarmBuffer[AlarmClockPacketSize];
|
||||||
@@ -584,8 +554,7 @@ int listenForAlarm(){
|
|||||||
const int NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message
|
const int NTP_PACKET_SIZE = 48; // NTP time is in the first 48 bytes of message
|
||||||
byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming & outgoing packets
|
byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming & outgoing packets
|
||||||
|
|
||||||
time_t getNtpTime()
|
time_t getNtpTime() {
|
||||||
{
|
|
||||||
while (Udp.parsePacket() > 0); // discard any previously received packets
|
while (Udp.parsePacket() > 0); // discard any previously received packets
|
||||||
//Serial.println("Transmit NTP Request");
|
//Serial.println("Transmit NTP Request");
|
||||||
sendNTPpacket(timeServer);
|
sendNTPpacket(timeServer);
|
||||||
@@ -609,8 +578,7 @@ time_t getNtpTime()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// send an NTP request to the time server at the given address
|
// send an NTP request to the time server at the given address
|
||||||
void sendNTPpacket(IPAddress &address)
|
void sendNTPpacket(IPAddress &address) {
|
||||||
{
|
|
||||||
// set all bytes in the buffer to 0
|
// set all bytes in the buffer to 0
|
||||||
memset(packetBuffer, 0, NTP_PACKET_SIZE);
|
memset(packetBuffer, 0, NTP_PACKET_SIZE);
|
||||||
// Initialize values needed to form NTP request
|
// Initialize values needed to form NTP request
|
||||||
@@ -630,4 +598,3 @@ void sendNTPpacket(IPAddress &address)
|
|||||||
Udp.write(packetBuffer, NTP_PACKET_SIZE);
|
Udp.write(packetBuffer, NTP_PACKET_SIZE);
|
||||||
Udp.endPacket();
|
Udp.endPacket();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user