test

Committer:
dapi08
Date:
Tue Sep 07 10:28:08 2021 +0000
Revision:
8:b4465148d206
Parent:
2:82fdfeec5799
SERVOS_V0_3 test de control

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dapi08 2:82fdfeec5799 1 /*
dapi08 2:82fdfeec5799 2 EPOCH to human readable time and date converter for microcontrollers (PIC, AVR, Arduino, STM32)
dapi08 2:82fdfeec5799 3 Current EPOCH time can be found at https://www.epochconverter.com/
dapi08 2:82fdfeec5799 4 The code can be suitably modified to suit your requirements. I have extensively
dapi08 2:82fdfeec5799 5 tested this code with valid inputs. If you have any questions or if you find a bug, please contact me.
dapi08 2:82fdfeec5799 6 Author: Siddharth Singh <sidsingh78@gmail.com>
dapi08 2:82fdfeec5799 7 Ver:1.0
dapi08 2:82fdfeec5799 8 Date: June 15, 2017
dapi08 2:82fdfeec5799 9 */
dapi08 2:82fdfeec5799 10
dapi08 2:82fdfeec5799 11
dapi08 2:82fdfeec5799 12 #include <stdio.h>
dapi08 2:82fdfeec5799 13 #include <stdlib.h>
dapi08 2:82fdfeec5799 14
dapi08 2:82fdfeec5799 15
dapi08 2:82fdfeec5799 16
dapi08 2:82fdfeec5799 17 unsigned char ntp_hour, ntp_minute, ntp_second, ntp_week_day, ntp_date, ntp_month, leap_days, leap_year_ind ;
dapi08 2:82fdfeec5799 18 unsigned short temp_days;
dapi08 2:82fdfeec5799 19 unsigned int epoch, ntp_year, days_since_epoch, day_of_year;
dapi08 2:82fdfeec5799 20
dapi08 2:82fdfeec5799 21
dapi08 2:82fdfeec5799 22
dapi08 2:82fdfeec5799 23 static unsigned char month_days[12]={31,28,31,30,31,30,31,31,30,31,30,31};
dapi08 2:82fdfeec5799 24 static unsigned char week_days[7] = {4,5,6,0,1,2,3};
dapi08 2:82fdfeec5799 25 //Thu=4, Fri=5, Sat=6, Sun=0, Mon=1, Tue=2, Wed=3
dapi08 2:82fdfeec5799 26
dapi08 2:82fdfeec5799 27 char key;
dapi08 2:82fdfeec5799 28
dapi08 2:82fdfeec5799 29
dapi08 2:82fdfeec5799 30 void epoch_to_time(long epoch)
dapi08 2:82fdfeec5799 31 {
dapi08 2:82fdfeec5799 32 //---------------------------- Input and Calculations -------------------------------------
dapi08 2:82fdfeec5799 33 //start:
dapi08 2:82fdfeec5799 34 leap_days=0;
dapi08 2:82fdfeec5799 35 leap_year_ind=0;
dapi08 2:82fdfeec5799 36 // printf("-------------------------------------------\n");
dapi08 2:82fdfeec5799 37 // printf("Enter EPOCH => ");
dapi08 2:82fdfeec5799 38 // scanf ("%d",&epoch);
dapi08 2:82fdfeec5799 39
dapi08 2:82fdfeec5799 40 // Add or substract time zone here.
dapi08 2:82fdfeec5799 41 // epoch+=19800 ; //GMT +5:30 = +19800 seconds
dapi08 2:82fdfeec5799 42
dapi08 2:82fdfeec5799 43 ntp_second = epoch%60;
dapi08 2:82fdfeec5799 44 epoch /= 60;
dapi08 2:82fdfeec5799 45 ntp_minute = epoch%60;
dapi08 2:82fdfeec5799 46 epoch /= 60;
dapi08 2:82fdfeec5799 47 ntp_hour = epoch%24;
dapi08 2:82fdfeec5799 48 epoch /= 24;
dapi08 2:82fdfeec5799 49
dapi08 2:82fdfeec5799 50 days_since_epoch = epoch; //number of days since epoch
dapi08 2:82fdfeec5799 51 ntp_week_day = week_days[days_since_epoch%7]; //Calculating WeekDay
dapi08 2:82fdfeec5799 52
dapi08 2:82fdfeec5799 53 ntp_year = 1970+(days_since_epoch/365); // ball parking year, may not be accurate!
dapi08 2:82fdfeec5799 54
dapi08 2:82fdfeec5799 55 int i;
dapi08 2:82fdfeec5799 56 for (i=1972; i<ntp_year; i+=4) // Calculating number of leap days since epoch/1970
dapi08 2:82fdfeec5799 57 if(((i%4==0) && (i%100!=0)) || (i%400==0)) leap_days++;
dapi08 2:82fdfeec5799 58
dapi08 2:82fdfeec5799 59 ntp_year = 1970+((days_since_epoch - leap_days)/365); // Calculating accurate current year by (days_since_epoch - extra leap days)
dapi08 2:82fdfeec5799 60 day_of_year = ((days_since_epoch - leap_days)%365)+1;
dapi08 2:82fdfeec5799 61
dapi08 2:82fdfeec5799 62
dapi08 2:82fdfeec5799 63 if(((ntp_year%4==0) && (ntp_year%100!=0)) || (ntp_year%400==0))
dapi08 2:82fdfeec5799 64 {
dapi08 2:82fdfeec5799 65 month_days[1]=29; //February = 29 days for leap years
dapi08 2:82fdfeec5799 66 leap_year_ind = 1; //if current year is leap, set indicator to 1
dapi08 2:82fdfeec5799 67 }
dapi08 2:82fdfeec5799 68 else month_days[1]=28; //February = 28 days for non-leap years
dapi08 2:82fdfeec5799 69
dapi08 2:82fdfeec5799 70 temp_days=0;
dapi08 2:82fdfeec5799 71
dapi08 2:82fdfeec5799 72 for (ntp_month=0 ; ntp_month <= 11 ; ntp_month++) //calculating current Month
dapi08 2:82fdfeec5799 73 {
dapi08 2:82fdfeec5799 74 if (day_of_year <= temp_days) break;
dapi08 2:82fdfeec5799 75 temp_days = temp_days + month_days[ntp_month];
dapi08 2:82fdfeec5799 76 }
dapi08 2:82fdfeec5799 77
dapi08 2:82fdfeec5799 78 temp_days = temp_days - month_days[ntp_month-1]; //calculating current Date
dapi08 2:82fdfeec5799 79 ntp_date = day_of_year - temp_days;
dapi08 2:82fdfeec5799 80
dapi08 2:82fdfeec5799 81 // // -------------------- Printing Results -------------------------------------
dapi08 2:82fdfeec5799 82 //
dapi08 2:82fdfeec5799 83 // switch(ntp_week_day) {
dapi08 2:82fdfeec5799 84 //
dapi08 2:82fdfeec5799 85 // case 0: printf("\nSunday");
dapi08 2:82fdfeec5799 86 // break;
dapi08 2:82fdfeec5799 87 // case 1: printf("\nMonday");
dapi08 2:82fdfeec5799 88 // break;
dapi08 2:82fdfeec5799 89 // case 2: printf("\nTuesday");
dapi08 2:82fdfeec5799 90 // break;
dapi08 2:82fdfeec5799 91 // case 3: printf("\nWednesday");
dapi08 2:82fdfeec5799 92 // break;
dapi08 2:82fdfeec5799 93 // case 4: printf("\nThursday");
dapi08 2:82fdfeec5799 94 // break;
dapi08 2:82fdfeec5799 95 // case 5: printf("\nFriday");
dapi08 2:82fdfeec5799 96 // break;
dapi08 2:82fdfeec5799 97 // case 6: printf("\nSaturday");
dapi08 2:82fdfeec5799 98 // break;
dapi08 2:82fdfeec5799 99 // default: break;
dapi08 2:82fdfeec5799 100 // }
dapi08 2:82fdfeec5799 101 // printf(", ");
dapi08 2:82fdfeec5799 102 //
dapi08 2:82fdfeec5799 103 // switch(ntp_month) {
dapi08 2:82fdfeec5799 104 //
dapi08 2:82fdfeec5799 105 // case 1: printf("January");
dapi08 2:82fdfeec5799 106 // break;
dapi08 2:82fdfeec5799 107 // case 2: printf("February");
dapi08 2:82fdfeec5799 108 // break;
dapi08 2:82fdfeec5799 109 // case 3: printf("March");
dapi08 2:82fdfeec5799 110 // break;
dapi08 2:82fdfeec5799 111 // case 4: printf("April");
dapi08 2:82fdfeec5799 112 // break;
dapi08 2:82fdfeec5799 113 // case 5: printf("May");
dapi08 2:82fdfeec5799 114 // break;
dapi08 2:82fdfeec5799 115 // case 6: printf("June");
dapi08 2:82fdfeec5799 116 // break;
dapi08 2:82fdfeec5799 117 // case 7: printf("July");
dapi08 2:82fdfeec5799 118 // break;
dapi08 2:82fdfeec5799 119 // case 8: printf("August");
dapi08 2:82fdfeec5799 120 // break;
dapi08 2:82fdfeec5799 121 // case 9: printf("September");
dapi08 2:82fdfeec5799 122 // break;
dapi08 2:82fdfeec5799 123 // case 10: printf("October");
dapi08 2:82fdfeec5799 124 // break;
dapi08 2:82fdfeec5799 125 // case 11: printf("November");
dapi08 2:82fdfeec5799 126 // break;
dapi08 2:82fdfeec5799 127 // case 12: printf("December");
dapi08 2:82fdfeec5799 128 // default: break;
dapi08 2:82fdfeec5799 129 // }
dapi08 2:82fdfeec5799 130 //
dapi08 2:82fdfeec5799 131 // printf(" %2d",ntp_date);
dapi08 2:82fdfeec5799 132 // printf(", %d\n",ntp_year);
dapi08 2:82fdfeec5799 133 // printf("TIME = %2d : %2d : %2d\n\n", ntp_hour,ntp_minute,ntp_second) ;
dapi08 2:82fdfeec5799 134 // printf("Days since Epoch: %d\n",days_since_epoch);
dapi08 2:82fdfeec5799 135 // printf("Number of Leap days since EPOCH: %d\n",leap_days);
dapi08 2:82fdfeec5799 136 // printf("Day of year = %d\n", day_of_year);
dapi08 2:82fdfeec5799 137 // printf("Is Year Leap? %d\n",leap_year_ind);
dapi08 2:82fdfeec5799 138 // printf("===============================================\n");
dapi08 2:82fdfeec5799 139 // printf(" Press e to EXIT, or any other key to repeat...\n\n");
dapi08 2:82fdfeec5799 140 // key=getch();
dapi08 2:82fdfeec5799 141 // if (key!='e') goto start;
dapi08 2:82fdfeec5799 142 // return 0;
dapi08 2:82fdfeec5799 143 }