tiz
Dependencies: TextLCD X_NUCLEO_IKS01A1 func mbed-src mbed
Fork of mas by
Revision 6:fb1b3ce7738d, committed 2016-09-14
- Comitter:
- youle1119
- Date:
- Wed Sep 14 10:49:56 2016 +0000
- Parent:
- 5:100310ea8fba
- Commit message:
- tiz
Changed in this revision
diff -r 100310ea8fba -r fb1b3ce7738d TextLCD.lib --- a/TextLCD.lib Tue Aug 23 15:59:59 2016 +0000 +++ b/TextLCD.lib Wed Sep 14 10:49:56 2016 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/emcu/code/TextLCD/#a8fcb19c3728 +https://developer.mbed.org/users/youle1119/code/TextLCD/#a8fcb19c3728
diff -r 100310ea8fba -r fb1b3ce7738d X_NUCLEO_IKS01A1.lib --- a/X_NUCLEO_IKS01A1.lib Tue Aug 23 15:59:59 2016 +0000 +++ b/X_NUCLEO_IKS01A1.lib Wed Sep 14 10:49:56 2016 +0000 @@ -1,1 +1,1 @@ -http://developer.mbed.org/teams/ST/code/X_NUCLEO_IKS01A1/#a91987e8cf51 +https://developer.mbed.org/users/youle1119/code/X_NUCLEO_IKS01A1/#6da5c801b27b
diff -r 100310ea8fba -r fb1b3ce7738d func.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/func.lib Wed Sep 14 10:49:56 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/youle1119/code/func/#d60c26d5fddc
diff -r 100310ea8fba -r fb1b3ce7738d func/Config.cpp --- a/func/Config.cpp Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ -#include "Config.h" - -Config::Config(char *filename) -{ - FILE *fp = fopen(filename, "r+"); - if(!fp) - { - raise_error(ERROR_CONFIG); - } - strcpy(this->__filename, filename); - fclose(fp); -} - -void Config::write() -{ - FILE *fp = fopen(this->__filename, "w+"); - if(!fp) - { - raise_error(ERROR_CONFIG); - } - fprintf(fp, "%d %d %d\n%d %d %d\n%d %d %d", this->__acc_offset[0], __acc_offset[1], __acc_offset[2], this->__gyo_offset[0], this->__gyo_offset[1], this->__gyo_offset[2], this->__mag_offset[0], this->__mag_offset[1], this->__mag_offset[2]); - fclose(fp); -} \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/Config.h --- a/func/Config.h Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ -#include "mbed.h" -#include "Error.h" - -#ifndef __CONFIG_H__ -#define __CONFIG_H__ - -class Config -{ - private: - char __filename[50]; - int32_t __acc_offset[3]; - int32_t __gyo_offset[3]; - int32_t __mag_offset[3]; - - public: - Config(char *filename); - void write(); - void set_acc_offset(int a[3]); - void set_ayo_offset(int a[3]); - void set_mag_offset(int a[3]); - ~Config(); -}; - -#endif //__CONFIG_H__ \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/Display.cpp --- a/func/Display.cpp Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#include "Display.h" - -Display::Display() -{ - this->__lcd = new TextLCD(PA_6, PA_7, PB_6, PC_7, PA_9, PA_8, TextLCD::LCD16x2); -} - -void Display::show(char *buffer0, char *buffer1) -{ - this->__lcd->cls(); - if(buffer0) - this->__lcd->locate(0,0); - this->__lcd->printf("%s", buffer0); - if(buffer1) - this->__lcd->locate(0,1); - this->__lcd->printf("%s", buffer1); -} \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/Display.h --- a/func/Display.h Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ -#include "mbed.h" -#include "TextLCD.h" - -#ifndef __DISPLAY_H__ -#define __DISPLAY_H__ - -class Display -{ -private: - TextLCD *__lcd; -public: - Display(); - void show(char *buffer0, char *buffer1=NULL); // Display string in 2 rows. -}; - -#endif // __DISPLAY_H__ \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/Error.cpp --- a/func/Error.cpp Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -#include "Error.h" - -void raise_error(ErrorCode ec) -{ - DigitalOut led(LED1); - while(1) - { - for(int i=0; i<=ec; i++) - { - led=1; - wait(0.3); - led=0; - wait(0.3); - } - wait(2); - } -} \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/Error.h --- a/func/Error.h Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -#include "mbed.h" - -#ifndef __ERROR_H__ -#define __ERROR_H__ - -enum ErrorCode{ - ERROR_UNKNOW, - ERROR_CONFIG -}; - -void raise_error(ErrorCode ec); - -#endif //__ERROR_H__ \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/RawData.cpp --- a/func/RawData.cpp Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,369 +0,0 @@ -#include "RawData.h" - -char buffer2[32]; -const uint32_t __pressure_table[16]={1013, 995, 976, 959, 942, 925, 908, 892, 875, 859, 843, 812, 782, 752, 724, 696}; -const uint32_t __altitude_table[16]={0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000, 4500, 5000, 6000, 7000, 8000, 9000, 10000}; -const uint8_t __dir_table[5] = {'E', 'N', 'W', 'S', 'E'}; - -RawData::RawData() -{ - this->__temp_offset=0; - this->__humi_offset=0; - this->__pressure_offset=0; - this->__altitude_offset=0; - this->__acc_offset[0]=0; - this->__acc_offset[1]=0; - this->__acc_offset[2]=0; - this->__gyr_offset[0]=0; - this->__gyr_offset[1]=0; - this->__gyr_offset[2]=0; - this->__mag_offset[0]=0; - this->__mag_offset[1]=0; - this->__mag_offset[2]=0; -} - -void RawData::str_date(char *buffer) -{ - struct tm *timeinfo = localtime (&(this->__time)); - strftime (buffer, 16, "%y-%m-%d", timeinfo); -} -void RawData::str_time(char *buffer) -{ - struct tm *timeinfo = localtime (&(this->__time)); - strftime (buffer, 16, "%T", timeinfo); -} -void RawData::str_temperature(char *buffer) -{ - if(this->calc_temperature()>=0) - snprintf(buffer, 16, "T: %sC", this->printDouble(buffer2, (this->calc_temperature()))); - else - snprintf(buffer, 16, "T:-%sC", this->printDouble(buffer2, -1*(this->calc_temperature()))); -} -void RawData::str_humidity(char *buffer) -{ - if(this->calc_humidity()<100) - snprintf(buffer, 16, "H: %sPer", this->printDouble(buffer2, (this->calc_humidity()))); - else - snprintf(buffer, 16, "H: 00.0Per"); -} -void RawData::str_altitude(char *buffer) -{ - snprintf(buffer, 16, "A: %4uM", this->calc_altitude()); -} -void RawData::str_direction(char *buffer) -{ - uint32_t dir = this->calc_cpassdir(); - snprintf(buffer, 16, "D: %c%3uDeg", __dir_table[(dir+45)/90], dir); -} - -char* RawData::printDouble(char* str, double v, int integerDigits, int decimalDigits) -{ - int i = 1; - int intPart, fractPart; - int len; - char *ptr; - - /* prepare decimal digits multiplicator */ - for (;decimalDigits!=0; i*=10, decimalDigits--); - - /* calculate integer & fractinal parts */ - int powval=1; - for(int xx=0; xx<integerDigits;xx++) - powval = powval*10; - - if(integerDigits>0) - intPart = (int)(v) % powval; - else - intPart = (int)(v); - fractPart = (int)((v-(double)(int)v)*i); - - /* fill in integer part */ - sprintf(str, "%i.", intPart); - - /* prepare fill in of fractional part */ - len = strlen(str); - ptr = &str[len]; - - /* fill in leading fractional zeros */ - for (i/=10;i>1; i/=10, ptr++) { - if(fractPart >= i) break; - *ptr = '0'; - } - - /* fill in (rest of) fractional part */ - sprintf(ptr, "%i", fractPart); - - return str; -} - - -float RawData::calc_temperature() -{ - return this->__temp+this->__temp_offset; -} -float RawData::calc_humidity() -{ - return this->__humi+this->__humi_offset; -} -int32_t RawData::calc_altitude() -{ - uint32_t altitude=0; - uint32_t bound_h=0, bound_l=16; - float pressure = (this->__prss+this->__pressure_offset)/10; - for(uint32_t i=0; i<16; i++) - { - if(__pressure_table[i]<= pressure) - { - bound_h=i; - break; - } - bound_l=i; - } - if(bound_h==bound_l){ - this->__pressure_offset = __pressure_table[bound_l]-this->__prss; - altitude = __altitude_table[bound_l]; - }else{ - altitude = __altitude_table[bound_l]+(__altitude_table[bound_h]-__altitude_table[bound_l])/double(__pressure_table[bound_l]-__pressure_table[bound_h])*(__pressure_table[bound_l]-pressure); - } - int32_t a=int32_t(altitude+__altitude_offset); - return a; -} -int32_t RawData::calc_cpassdir() -{ - int32_t dir =0; - float x = this->__mag[0]+this->__mag_offset[0]; - float y = this->__mag[1]+this->__mag_offset[1]; - if(y==0){ - if(x>=0) - dir = 0; - else - dir = 180; - }else if(y>0){ - dir = uint32_t(90-(atan(x/y))*180/3.14); - }else{ - dir = uint32_t(270-(atan(x/y))*180/3.14); - } - return dir; -} - - - - - - - -void RawData::add_year_10() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int year= timeinfo->tm_year; - year+=10; - if(year>=(2100-1900)) - year=timeinfo->tm_year-90; - timeinfo->tm_year=year; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_year_1() -{ - struct tm *timeinfo = localtime (&(this->__time)); - timeinfo->tm_year+=1; - if(timeinfo->tm_year%10==0) - timeinfo->tm_year-=10; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_month() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int mon=timeinfo->tm_mon; - mon+=1; - if(mon>11) - mon=0; - timeinfo->tm_mon=mon; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_day() -{ - struct tm *timeinfo = localtime (&(this->__time)); - timeinfo->tm_yday=0; - timeinfo->tm_wday=0; - int day=timeinfo->tm_mday; - day+=1; - if(timeinfo->tm_mon==0 || timeinfo->tm_mon==2 || timeinfo->tm_mon==4 || timeinfo->tm_mon==6 || timeinfo->tm_mon==7 || timeinfo->tm_mon==9 || timeinfo->tm_mon==11) - { - if(day>31) - day=1; - } - else if(timeinfo->tm_mon==1) - { - if((timeinfo->tm_year+1900)%400==0 || ((timeinfo->tm_year+1900)%100!=0 && (timeinfo->tm_year+1900)%4==0) ) - { - if(day>29) - day=1; - } - else - { - if(day>28) - day=1; - } - } - else - { - if(day>30) - day=1; - } - timeinfo->tm_mday=day; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_hour() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int hour=timeinfo->tm_hour; - hour+=1; - if(hour>23) - hour=0; - timeinfo->tm_hour=hour; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_min_10() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int min=timeinfo->tm_min; - min+=10; - if(min>=60) - min-=60; - timeinfo->tm_min=min; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_min_1() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int min=timeinfo->tm_min; - min+=1; - if(min%10==0) - min-=10; - timeinfo->tm_min=min; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_sec_10() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int sec=timeinfo->tm_sec; - sec+=10; - if(sec>=60) - sec-=60; - timeinfo->tm_sec=sec; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_sec_1() -{ - struct tm *timeinfo = localtime (&(this->__time)); - int sec=timeinfo->tm_sec; - sec+=1; - if(sec%10==0) - sec-=10; - timeinfo->tm_sec=sec; - this->__time=mktime(timeinfo); - set_time(this->__time); -} -void RawData::add_temp_sign() -{ - this->__temp_offset= -1*(this->calc_temperature())-this->__temp; -} -void RawData::add_temp_10() -{ - float val = this->__temp_offset; - if(this->__temp+val>=0) - val+=10; - else - val-=10; - if(this->__temp+val>=100) - val-=100; - else if(this->__temp+val<=-100) - val+=100; - this->__temp_offset=val; -} -void RawData::add_temp_1() -{ - float val= this->__temp_offset; - if(this->__temp+val>=0) - val+=1; - else - val-=1; - if((this->__temp+val)>=0 && (int)(this->__temp+val)%10==0) - val-=10; - else if((this->__temp+val)<0 && (int)(this->__temp+val)%10==0) - val+=10; - this->__temp_offset=val; -} -void RawData::add_temp_1_10() -{ - float val=(this->__temp_offset*10); - if(this->__temp*10+val>=0) - val+=1; - else - val-=1; - if(this->__temp*10+val>=0 && (int)(this->__temp*10+val)%10==0) - val-=10; - else if(this->__temp*10+val<0 && (int)(this->__temp*10+val)%10==0) - val+=10; - this->__temp_offset=val/10.0; -} -void RawData::add_humi_10() -{ - float val=this->__humi_offset; - val+=10; - if((int)(this->__humi+val)>=100) - val-=100; - this->__humi_offset=val; -} -void RawData::add_humi_1() -{ - float val=this->__humi_offset; - int delta = (int)(this->__humi_offset); - val = val-delta; - delta+=1; - if((int)(this->__humi+delta)%10==0) - delta-=10; - this->__humi_offset=val+delta; -} -void RawData::add_humi_1_10() -{ - int delta=(int)(this->__humi_offset*10); - delta+=1; - if((int)(this->__humi*10+delta)%10==0) - delta-=10; - this->__humi_offset=delta/10.0; -} - -// ALTITUDE -void RawData::add_altitude_1000() -{ - this->__altitude_offset+=1000; - if(this->calc_altitude()>=10000) - this->__altitude_offset-=10000; -} -void RawData::add_altitude_100() -{ - this->__altitude_offset+=100; - if((this->calc_altitude()/100)%10==0) - this->__altitude_offset-=1000; -} -void RawData::add_altitude_10() -{ - this->__altitude_offset+=10; - if((this->calc_altitude()/10)%10==0) - this->__altitude_offset-=100; -} -void RawData::add_altitude_1() -{ - this->__altitude_offset+=1; - if(this->calc_altitude()%10==0) - this->__altitude_offset-=10; -} \ No newline at end of file
diff -r 100310ea8fba -r fb1b3ce7738d func/RawData.h --- a/func/RawData.h Tue Aug 23 15:59:59 2016 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -#include "mbed.h" - -#ifndef __MAS_RAW_DATA_H__ -#define __MAS_RAW_DATA_H__ - -class RawData -{ -public: - time_t __time; - float __temp; // unit : Degree Celsius - float __humi; // unit : % - float __prss; // unit : kPa - int32_t __acc[3]; // unit : - int32_t __gyr[3]; // unit : - int32_t __mag[3]; // unit : - float __temp_offset; // unit : Degree Celsius - float __humi_offset; // unit : % - float __pressure_offset; - float __altitude_offset; // unit : m - int32_t __acc_offset[3]; // unit : - int32_t __gyr_offset[3]; // unit : - int32_t __mag_offset[3]; // unit : - -public: - RawData(); - void add_year_10(); - void add_year_1(); - void add_month(); - void add_day(); - void add_hour(); - void add_min_10(); - void add_min_1(); - void add_sec_10(); - void add_sec_1(); - void add_temp_sign(); - void add_temp_10(); - void add_temp_1(); - void add_temp_1_10(); - void add_humi_10(); - void add_humi_1(); - void add_humi_1_10(); - void add_altitude_1(); - void add_altitude_10(); - void add_altitude_100(); - void add_altitude_1000(); - time_t calc_datetime(); - float calc_temperature(); - float calc_humidity(); - int32_t calc_altitude(); - int32_t calc_cpassdir(); - void str_date(char *buffer); - void str_time(char *buffer); - void str_temperature(char *buffer); - void str_humidity(char *buffer); - void str_pressure(char *buffer); - void str_altitude(char *buffer); - void str_magnetic(char *buffer); - void str_direction(char *buffer); - -private: - char* printDouble(char* str, double v,int integerDigits=2, int decimalDigits=1); -}; - - -#endif // __MAS_RAW_DATA_H__ \ No newline at end of file