1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
#include <time.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <wiringPi.h>
#define uchar unsigned char
FILE *fp; char nowtime[16]; char cpu_load[16]; int lcdprint_page=1;
void gpio_init(void); void lcd1602_control(uchar cmd); void lcd1602_command(uchar dat); void lcd1602_setmode(void); void lcdprint(uchar *p,int row_number);
void page1();
int main(int argc, char const *argv[]){ wiringPiSetup(); gpio_init(); lcd1602_setmode(); lcdprint(" Welcome to",1); lcdprint(" GuzalAida ",2); sleep(3); while(1){ lcd1602_control(0x01); page1(); lcdprint_page++; sleep(1); } return 0; }
void page1(){ struct tm *ptr; time_t lt; lt=time(NULL); ptr=localtime(<); strftime(nowtime,16,"%I:%M:%S - %b",ptr); lcdprint(nowtime,1); fp=popen("uptime | awk '{print $9,$10,$11,$12}'","r"); fgets(cpu_load,16,fp); lcdprint(cpu_load,2); printf("Time: %s --- Load: %s\n",nowtime,cpu_load); if(lcdprint_page>100){syslog(LOG_INFO,"Time: %s --- Load: %s\n",nowtime,cpu_load);lcdprint_page=0;} pclose(fp);
}
void gpio_init(){ int i; for(i=0;i<8;i++){ pinMode(i,OUTPUT); } pinMode(27,OUTPUT); pinMode(28,OUTPUT); }
void lcd1602_control(uchar cmd){ digitalWrite(27,LOW); digitalWriteByte(cmd); digitalWrite(28,HIGH); delay(5); digitalWrite(28,LOW); }
void lcd1602_command(uchar dat){ digitalWrite(27,HIGH); digitalWriteByte(dat); digitalWrite(28,HIGH); delay(5); digitalWrite(28,LOW); }
void lcd1602_setmode(void){ lcd1602_control(0x38); lcd1602_control(0x0c); lcd1602_control(0x06); lcd1602_control(0x01); }
void lcdprint(uchar *p,int row_number){ int i=0; row_number==1?lcd1602_control(0x80):lcd1602_control(0xc0); while(p[i]!='\0'){ lcd1602_command(p[i]); i++; } }
|