Hendrik Langer
10 years ago
5 changed files with 425 additions and 0 deletions
@ -0,0 +1,376 @@ |
|||||
|
/*
|
||||
|
* Description: Clock |
||||
|
* Author: h3ndrik |
||||
|
* License: AGPLv3+ |
||||
|
*/ |
||||
|
|
||||
|
#include <stdio.h> |
||||
|
#include <stdlib.h> |
||||
|
#include "../random/prng.h" |
||||
|
#include "../config.h" |
||||
|
#include "../pixel.h" |
||||
|
#include "../util.h" |
||||
|
|
||||
|
#ifndef COLOR_DEFAULT |
||||
|
#define COLOR_DEFAULT 3 |
||||
|
#endif |
||||
|
#ifndef COLOR_OFF |
||||
|
#define COLOR_OFF 0 |
||||
|
#endif |
||||
|
|
||||
|
uint8_t hours = 10; |
||||
|
uint8_t minutes = 25; |
||||
|
uint8_t seconds = 45; |
||||
|
|
||||
|
uint8_t oldhours = 0; |
||||
|
uint8_t oldminutes = 0; |
||||
|
|
||||
|
uint8_t time_update(void) |
||||
|
{ |
||||
|
|
||||
|
|
||||
|
|
||||
|
//send request
|
||||
|
//time_request();
|
||||
|
minutes += seconds / 60; |
||||
|
seconds = seconds % 60; |
||||
|
hours += minutes / 60; |
||||
|
minutes = minutes % 60; |
||||
|
|
||||
|
return 1; |
||||
|
} |
||||
|
|
||||
|
void set_funk(void) |
||||
|
{ |
||||
|
setpixel((pixel){ 7, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 6, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 5, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 4, 3},COLOR_DEFAULT); |
||||
|
} |
||||
|
|
||||
|
void set_esistuhr(void) |
||||
|
{ |
||||
|
setpixel((pixel){10, 0},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 9, 0},COLOR_DEFAULT); |
||||
|
|
||||
|
setpixel((pixel){ 7, 0},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 6, 0},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 5, 0},COLOR_DEFAULT); |
||||
|
|
||||
|
setpixel((pixel){ 2, 9},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 1, 9},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 0, 9},COLOR_DEFAULT); |
||||
|
} |
||||
|
|
||||
|
void set_nach(void) |
||||
|
{ |
||||
|
setpixel((pixel){ 3, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 2, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 1, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 0, 3},COLOR_DEFAULT); |
||||
|
} |
||||
|
|
||||
|
void set_vor(void) |
||||
|
{ |
||||
|
setpixel((pixel){10, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 9, 3},COLOR_DEFAULT); |
||||
|
setpixel((pixel){ 8, 3},COLOR_DEFAULT); |
||||
|
} |
||||
|
|
||||
|
void set_hour(uint8_t hour, unsigned char value) |
||||
|
{ |
||||
|
switch (hours) { |
||||
|
case 0: |
||||
|
//set_hour(11, COLOR_OFF);
|
||||
|
setpixel((pixel){ 4, 8},value); |
||||
|
setpixel((pixel){ 3, 8},value); |
||||
|
setpixel((pixel){ 2, 8},value); |
||||
|
setpixel((pixel){ 1, 8},value); |
||||
|
setpixel((pixel){ 0, 8},value); |
||||
|
break; |
||||
|
case 1: |
||||
|
//set_hour(0, COLOR_OFF);
|
||||
|
setpixel((pixel){10, 5},value); |
||||
|
setpixel((pixel){ 9, 5},value); |
||||
|
setpixel((pixel){ 8, 5},value); |
||||
|
setpixel((pixel){ 7, 5},value); |
||||
|
break; |
||||
|
case 2: |
||||
|
//set_hour(1, COLOR_OFF);
|
||||
|
setpixel((pixel){ 3, 5},value); |
||||
|
setpixel((pixel){ 2, 5},value); |
||||
|
setpixel((pixel){ 1, 5},value); |
||||
|
setpixel((pixel){ 0, 5},value); |
||||
|
break; |
||||
|
case 3: |
||||
|
//set_hour(2, COLOR_OFF);
|
||||
|
setpixel((pixel){10, 6},value); |
||||
|
setpixel((pixel){ 9, 6},value); |
||||
|
setpixel((pixel){ 8, 6},value); |
||||
|
setpixel((pixel){ 7, 6},value); |
||||
|
break; |
||||
|
case 4: |
||||
|
//set_hour(3, COLOR_OFF);
|
||||
|
setpixel((pixel){ 3, 6},value); |
||||
|
setpixel((pixel){ 2, 6},value); |
||||
|
setpixel((pixel){ 1, 6},value); |
||||
|
setpixel((pixel){ 0, 6},value); |
||||
|
break; |
||||
|
case 5: |
||||
|
//set_hour(4, COLOR_OFF);
|
||||
|
setpixel((pixel){ 3, 4},value); |
||||
|
setpixel((pixel){ 2, 4},value); |
||||
|
setpixel((pixel){ 1, 4},value); |
||||
|
setpixel((pixel){ 0, 4},value); |
||||
|
break; |
||||
|
case 6: |
||||
|
//set_hour(5, COLOR_OFF);
|
||||
|
setpixel((pixel){10, 7},value); |
||||
|
setpixel((pixel){ 9, 7},value); |
||||
|
setpixel((pixel){ 8, 7},value); |
||||
|
setpixel((pixel){ 7, 7},value); |
||||
|
setpixel((pixel){ 6, 7},value); |
||||
|
break; |
||||
|
case 7: |
||||
|
//set_hour(6, COLOR_OFF);
|
||||
|
setpixel((pixel){10, 8},value); |
||||
|
setpixel((pixel){ 9, 8},value); |
||||
|
setpixel((pixel){ 8, 8},value); |
||||
|
setpixel((pixel){ 7, 8},value); |
||||
|
setpixel((pixel){ 6, 8},value); |
||||
|
setpixel((pixel){ 5, 8},value); |
||||
|
break; |
||||
|
case 8: |
||||
|
//set_hour(7, COLOR_OFF);
|
||||
|
setpixel((pixel){ 3, 7},value); |
||||
|
setpixel((pixel){ 2, 7},value); |
||||
|
setpixel((pixel){ 1, 7},value); |
||||
|
setpixel((pixel){ 0, 7},value); |
||||
|
break; |
||||
|
case 9: |
||||
|
//set_hour(8, COLOR_OFF);
|
||||
|
setpixel((pixel){ 7, 9},value); |
||||
|
setpixel((pixel){ 6, 9},value); |
||||
|
setpixel((pixel){ 5, 9},value); |
||||
|
setpixel((pixel){ 4, 9},value); |
||||
|
break; |
||||
|
case 10: |
||||
|
//set_hour(9, COLOR_OFF);
|
||||
|
setpixel((pixel){10, 9},value); |
||||
|
setpixel((pixel){ 9, 9},value); |
||||
|
setpixel((pixel){ 8, 9},value); |
||||
|
setpixel((pixel){ 7, 9},value); |
||||
|
break; |
||||
|
case 11: |
||||
|
//set_hour(10, COLOR_OFF);
|
||||
|
setpixel((pixel){ 5, 4},value); |
||||
|
setpixel((pixel){ 4, 4},value); |
||||
|
setpixel((pixel){ 3, 4},value); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void set_minute(uint8_t minute, unsigned char value) |
||||
|
{ |
||||
|
switch (minutes) { |
||||
|
case 0: |
||||
|
case 1: |
||||
|
case 2: |
||||
|
case 3: |
||||
|
case 4: |
||||
|
break; |
||||
|
case 5: |
||||
|
case 6: |
||||
|
case 7: |
||||
|
case 8: |
||||
|
case 9: |
||||
|
//set_minute(0, COLOR_OFF);
|
||||
|
/* fünf */ |
||||
|
setpixel((pixel){ 3, 0},value); |
||||
|
setpixel((pixel){ 2, 0},value); |
||||
|
setpixel((pixel){ 1, 0},value); |
||||
|
setpixel((pixel){ 0, 0},value); |
||||
|
set_nach(); |
||||
|
break; |
||||
|
case 10: |
||||
|
case 11: |
||||
|
case 12: |
||||
|
case 13: |
||||
|
case 14: |
||||
|
//set_minute(5, COLOR_OFF);
|
||||
|
/* zehn */ |
||||
|
setpixel((pixel){10, 1},value); |
||||
|
setpixel((pixel){ 9, 1},value); |
||||
|
setpixel((pixel){ 8, 1},value); |
||||
|
setpixel((pixel){ 7, 1},value); |
||||
|
set_nach(); |
||||
|
break; |
||||
|
case 15: |
||||
|
case 16: |
||||
|
case 17: |
||||
|
case 18: |
||||
|
case 19: |
||||
|
//set_minute(10, COLOR_OFF);
|
||||
|
/* viertel */ |
||||
|
setpixel((pixel){ 6, 2},value); |
||||
|
setpixel((pixel){ 5, 2},value); |
||||
|
setpixel((pixel){ 4, 2},value); |
||||
|
setpixel((pixel){ 3, 2},value); |
||||
|
setpixel((pixel){ 2, 2},value); |
||||
|
setpixel((pixel){ 1, 2},value); |
||||
|
setpixel((pixel){ 0, 2},value); |
||||
|
set_nach(); |
||||
|
break; |
||||
|
case 20: |
||||
|
case 21: |
||||
|
case 22: |
||||
|
case 23: |
||||
|
case 24: |
||||
|
//set_minute(15, COLOR_OFF);
|
||||
|
/* zwanzig */ |
||||
|
setpixel((pixel){ 6, 1},value); |
||||
|
setpixel((pixel){ 5, 1},value); |
||||
|
setpixel((pixel){ 4, 1},value); |
||||
|
setpixel((pixel){ 3, 1},value); |
||||
|
setpixel((pixel){ 2, 1},value); |
||||
|
setpixel((pixel){ 1, 1},value); |
||||
|
setpixel((pixel){ 0, 1},value); |
||||
|
set_nach(); |
||||
|
break; |
||||
|
case 25: |
||||
|
case 26: |
||||
|
case 27: |
||||
|
case 28: |
||||
|
case 29: |
||||
|
//set_minute(20, COLOR_OFF);
|
||||
|
/* fünf */ |
||||
|
setpixel((pixel){ 3, 0},value); |
||||
|
setpixel((pixel){ 2, 0},value); |
||||
|
setpixel((pixel){ 1, 0},value); |
||||
|
setpixel((pixel){ 0, 0},value); |
||||
|
set_vor(); |
||||
|
/* halb */ |
||||
|
setpixel((pixel){10, 4},value); |
||||
|
setpixel((pixel){ 9, 4},value); |
||||
|
setpixel((pixel){ 8, 4},value); |
||||
|
setpixel((pixel){ 7, 4},value); |
||||
|
break; |
||||
|
case 30: |
||||
|
case 31: |
||||
|
case 32: |
||||
|
case 33: |
||||
|
case 34: |
||||
|
//set_minute(25, COLOR_OFF);
|
||||
|
/* halb */ |
||||
|
setpixel((pixel){10, 4},value); |
||||
|
setpixel((pixel){ 9, 4},value); |
||||
|
setpixel((pixel){ 8, 4},value); |
||||
|
setpixel((pixel){ 7, 4},value); |
||||
|
set_nach(); |
||||
|
break; |
||||
|
case 35: |
||||
|
case 36: |
||||
|
case 37: |
||||
|
case 38: |
||||
|
case 39: |
||||
|
//set_minute(30, COLOR_OFF);
|
||||
|
/* fünf */ |
||||
|
setpixel((pixel){ 3, 0},value); |
||||
|
setpixel((pixel){ 2, 0},value); |
||||
|
setpixel((pixel){ 1, 0},value); |
||||
|
setpixel((pixel){ 0, 0},value); |
||||
|
set_nach(); |
||||
|
/* halb */ |
||||
|
setpixel((pixel){10, 4},value); |
||||
|
setpixel((pixel){ 9, 4},value); |
||||
|
setpixel((pixel){ 8, 4},value); |
||||
|
setpixel((pixel){ 7, 4},value); |
||||
|
break; |
||||
|
case 40: |
||||
|
case 41: |
||||
|
case 42: |
||||
|
case 43: |
||||
|
case 44: |
||||
|
//set_minute(35, COLOR_OFF);
|
||||
|
/* zwanzig */ |
||||
|
setpixel((pixel){ 6, 1},value); |
||||
|
setpixel((pixel){ 5, 1},value); |
||||
|
setpixel((pixel){ 4, 1},value); |
||||
|
setpixel((pixel){ 3, 1},value); |
||||
|
setpixel((pixel){ 2, 1},value); |
||||
|
setpixel((pixel){ 1, 1},value); |
||||
|
setpixel((pixel){ 0, 1},value); |
||||
|
set_vor(); |
||||
|
break; |
||||
|
case 45: |
||||
|
case 46: |
||||
|
case 47: |
||||
|
case 48: |
||||
|
case 49: |
||||
|
//set_minute(40, COLOR_OFF);
|
||||
|
/* viertel */ |
||||
|
setpixel((pixel){ 6, 2},value); |
||||
|
setpixel((pixel){ 5, 2},value); |
||||
|
setpixel((pixel){ 4, 2},value); |
||||
|
setpixel((pixel){ 3, 2},value); |
||||
|
setpixel((pixel){ 2, 2},value); |
||||
|
setpixel((pixel){ 1, 2},value); |
||||
|
setpixel((pixel){ 0, 2},value); |
||||
|
set_vor(); |
||||
|
break; |
||||
|
case 50: |
||||
|
case 51: |
||||
|
case 52: |
||||
|
case 53: |
||||
|
case 54: |
||||
|
//set_minute(45, COLOR_OFF);
|
||||
|
/* zehn */ |
||||
|
setpixel((pixel){10, 1},value); |
||||
|
setpixel((pixel){ 9, 1},value); |
||||
|
setpixel((pixel){ 8, 1},value); |
||||
|
setpixel((pixel){ 7, 1},value); |
||||
|
set_vor(); |
||||
|
break; |
||||
|
case 55: |
||||
|
case 56: |
||||
|
case 57: |
||||
|
case 58: |
||||
|
case 59: |
||||
|
//set_minute(50, COLOR_OFF);
|
||||
|
/* fünf */ |
||||
|
setpixel((pixel){ 3, 0},value); |
||||
|
setpixel((pixel){ 2, 0},value); |
||||
|
setpixel((pixel){ 1, 0},value); |
||||
|
setpixel((pixel){ 0, 0},value); |
||||
|
set_vor(); |
||||
|
break; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void wordclock(void) |
||||
|
{ |
||||
|
while (1) { |
||||
|
|
||||
|
if(time_update() == 0) |
||||
|
{ |
||||
|
set_funk(); |
||||
|
return; |
||||
|
} |
||||
|
|
||||
|
if (oldminutes != minutes) { |
||||
|
clear_screen(COLOR_OFF); |
||||
|
set_minute(minutes, COLOR_DEFAULT); |
||||
|
oldminutes = minutes; |
||||
|
|
||||
|
if (oldhours != hours) { |
||||
|
set_hour(hours, COLOR_DEFAULT); |
||||
|
oldhours = hours; |
||||
|
} |
||||
|
|
||||
|
set_esistuhr(); |
||||
|
} |
||||
|
|
||||
|
wait(10); /* milliseconds */ |
||||
|
seconds++; |
||||
|
} |
||||
|
} |
@ -0,0 +1,35 @@ |
|||||
|
/*
|
||||
|
* Description: Clock |
||||
|
* Author: h3ndrik |
||||
|
* License: AGPLv3+ |
||||
|
*/ |
||||
|
|
||||
|
/* ESKISTAFÜNF
|
||||
|
* ZEHNZWANZIG |
||||
|
* DREIVIERTEL |
||||
|
* VORFUNKNACH |
||||
|
* HALBAELFÜNF |
||||
|
* EINSXÄMZWEI |
||||
|
* DREIAUSVIER |
||||
|
* SECHSNLACHT |
||||
|
* SIEBENZWÖLF |
||||
|
* ZEHNEUNKUHR |
||||
|
*/ |
||||
|
|
||||
|
#ifndef BORG_WORDCLOCK_H_ |
||||
|
#define BORG_WORDCLOCK_H_ |
||||
|
|
||||
|
#include <stdint.h> |
||||
|
|
||||
|
//update time
|
||||
|
uint8_t time_update(void); |
||||
|
|
||||
|
void set_funk(void); |
||||
|
void set_esistuhr(void); |
||||
|
void set_nach(void); |
||||
|
void set_vor(void); |
||||
|
|
||||
|
//display the time
|
||||
|
void wordclock(void); |
||||
|
|
||||
|
#endif /* BORG_CLOCK_H_ */ |
Loading…
Reference in new issue