Untitled
unknown
plain_text
3 years ago
1.5 kB
8
Indexable
// intensity of color
#define INTENSITY 40
int binaryArray[8];
void numberToBinary(int num)
{
// reset binary, just in case
for (int i = 0; i <= 7; i++)
{
binaryArray[i] = 0;
}
// calculate binary
int i = 0;
while (num != 0){
binaryArray[i] = ( num % 2 == 0 ? 0 : 1 );
num /= 2;
i++;
}
}
void display(int num, int line, int r, int g, int b)
{
// converts the number into the binary array
numberToBinary(num);
// draw the binary
for(int pos = 0; pos <= 7; pos++){
if (binaryArray[7-pos] == 1)
{
led_set_pixel(pos, line, r, g, b);
}
}
}
int main(void)
{
time_t t;
struct tm *currentTime;
struct timespec delay;
// lines of clock, 3. and 7. row are blank
int year = 0;
int month = 1;
int day = 2;
int hour = 4;
int minute = 5;
int second = 6;
printf("Clock is running\n");
while(1)
{
// causing a delay
int millis = 1000;
delay.tv_sec = millis / 1000;
delay.tv_nsec = (millis % 1000) * 1000000L;
nanosleep(&delay, (struct timespec*) NULL);
// getting the current time
time(&t);
currentTime = localtime(&t);
led_clear(0, 0, 0);
// tm_year = the number of years since 1900
display(currentTime->tm_year - 100, year, 0, INTENSITY, 0);
display(currentTime->tm_mon + 1, month, 0, 0, INTENSITY);
display(currentTime->tm_mday, day, INTENSITY, 0, 0);
display(currentTime->tm_hour, hour, 0, 0, INTENSITY);
display(currentTime->tm_min, minute, INTENSITY, 0, 0);
display(currentTime->tm_sec, second, 0, INTENSITY, 0);
}
}
Editor is loading...