test
Dependencies: FatFileSystem TextLCD mbed
main.cpp@0:2c37ad282618, 2012-09-18 (annotated)
- Committer:
- y_notsu
- Date:
- Tue Sep 18 07:24:22 2012 +0000
- Revision:
- 0:2c37ad282618
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
y_notsu | 0:2c37ad282618 | 1 | // MARMEX OLED and GPS test program |
y_notsu | 0:2c37ad282618 | 2 | // Author : Yuji Notsu |
y_notsu | 0:2c37ad282618 | 3 | // Date : 14-Jun-2011 |
y_notsu | 0:2c37ad282618 | 4 | // Revision : 0.0 |
y_notsu | 0:2c37ad282618 | 5 | |
y_notsu | 0:2c37ad282618 | 6 | /** A sample app of MARMEX_OB OLED screen drawing library |
y_notsu | 0:2c37ad282618 | 7 | * |
y_notsu | 0:2c37ad282618 | 8 | * @author Tedd |
y_notsu | 0:2c37ad282618 | 9 | * @version 0.51 |
y_notsu | 0:2c37ad282618 | 10 | * @date 08-Apr-2011 |
y_notsu | 0:2c37ad282618 | 11 | * |
y_notsu | 0:2c37ad282618 | 12 | * Released under the MIT License: http://mbed.org/license/mit |
y_notsu | 0:2c37ad282618 | 13 | * |
y_notsu | 0:2c37ad282618 | 14 | * MARMEX_OB_oled OLED screen drawing library for mbed |
y_notsu | 0:2c37ad282618 | 15 | * This code has been written based on sample code and advises |
y_notsu | 0:2c37ad282618 | 16 | * from Ochiai-san (Marutsu-Elec). Thank you! |
y_notsu | 0:2c37ad282618 | 17 | * |
y_notsu | 0:2c37ad282618 | 18 | * To build this code, "NokiaLCD" and "mbed" libraries are needed to be imported in a project. |
y_notsu | 0:2c37ad282618 | 19 | * NokiaLCD library : http://mbed.org/users/simon/libraries/NokiaLCD/ |
y_notsu | 0:2c37ad282618 | 20 | */ |
y_notsu | 0:2c37ad282618 | 21 | |
y_notsu | 0:2c37ad282618 | 22 | |
y_notsu | 0:2c37ad282618 | 23 | #include "mbed.h" |
y_notsu | 0:2c37ad282618 | 24 | #include "MARMEX_OB_oled.h" |
y_notsu | 0:2c37ad282618 | 25 | #include "imagedata.h" |
y_notsu | 0:2c37ad282618 | 26 | #include "gpsrtc.h" |
y_notsu | 0:2c37ad282618 | 27 | #include "TextLCD.h" |
y_notsu | 0:2c37ad282618 | 28 | #include "SDFileSystem.h" |
y_notsu | 0:2c37ad282618 | 29 | #include "PowerControl/EthernetPowerControl.h" |
y_notsu | 0:2c37ad282618 | 30 | |
y_notsu | 0:2c37ad282618 | 31 | // oled1 is for MARMEX_OB_oled board on MAPLE slot 1 |
y_notsu | 0:2c37ad282618 | 32 | MARMEX_OB_oled oled1( p5, p7, p8, p30, p11 ); // mosi, sclk, cs, rst, power_control |
y_notsu | 0:2c37ad282618 | 33 | |
y_notsu | 0:2c37ad282618 | 34 | TextLCD lcd(p25,p24,p12,p13,p14,p23); //rs,e,d0-d3 |
y_notsu | 0:2c37ad282618 | 35 | |
y_notsu | 0:2c37ad282618 | 36 | SDFileSystem sd(p5, p6, p7, p20, "sd"); // the pinout on the mbed Cool Components workshop board |
y_notsu | 0:2c37ad282618 | 37 | Serial pc(USBTX, USBRX); // tx, rx |
y_notsu | 0:2c37ad282618 | 38 | |
y_notsu | 0:2c37ad282618 | 39 | InterruptIn sendpcmode(p16); |
y_notsu | 0:2c37ad282618 | 40 | InterruptIn oledmode(p17); |
y_notsu | 0:2c37ad282618 | 41 | |
y_notsu | 0:2c37ad282618 | 42 | //AnalogIn ain(p19); |
y_notsu | 0:2c37ad282618 | 43 | InterruptIn ain(p18); |
y_notsu | 0:2c37ad282618 | 44 | DigitalOut led(LED3); |
y_notsu | 0:2c37ad282618 | 45 | |
y_notsu | 0:2c37ad282618 | 46 | float sdata; |
y_notsu | 0:2c37ad282618 | 47 | char pcmodevalue; |
y_notsu | 0:2c37ad282618 | 48 | char oledmodevalue; |
y_notsu | 0:2c37ad282618 | 49 | char graphnum=0; |
y_notsu | 0:2c37ad282618 | 50 | float graph[16]; |
y_notsu | 0:2c37ad282618 | 51 | int c1,c2,c3,c4,c5,c6; |
y_notsu | 0:2c37ad282618 | 52 | char c1en,c2en,c3en,c4en,c5en,c6en; |
y_notsu | 0:2c37ad282618 | 53 | float maxdata; |
y_notsu | 0:2c37ad282618 | 54 | |
y_notsu | 0:2c37ad282618 | 55 | void oled_image2(const unsigned int *ptr2); |
y_notsu | 0:2c37ad282618 | 56 | |
y_notsu | 0:2c37ad282618 | 57 | void changepcmode() |
y_notsu | 0:2c37ad282618 | 58 | { |
y_notsu | 0:2c37ad282618 | 59 | pcmodevalue=!pcmodevalue; |
y_notsu | 0:2c37ad282618 | 60 | } |
y_notsu | 0:2c37ad282618 | 61 | |
y_notsu | 0:2c37ad282618 | 62 | void changeoledmode() |
y_notsu | 0:2c37ad282618 | 63 | { |
y_notsu | 0:2c37ad282618 | 64 | oledmodevalue=!oledmodevalue; |
y_notsu | 0:2c37ad282618 | 65 | } |
y_notsu | 0:2c37ad282618 | 66 | |
y_notsu | 0:2c37ad282618 | 67 | void count_geiger() |
y_notsu | 0:2c37ad282618 | 68 | { |
y_notsu | 0:2c37ad282618 | 69 | led=1; |
y_notsu | 0:2c37ad282618 | 70 | if(c1en==1) c1++; |
y_notsu | 0:2c37ad282618 | 71 | if(c2en==1) c2++; |
y_notsu | 0:2c37ad282618 | 72 | if(c3en==1) c3++; |
y_notsu | 0:2c37ad282618 | 73 | if(c4en==1) c4++; |
y_notsu | 0:2c37ad282618 | 74 | if(c5en==1) c5++; |
y_notsu | 0:2c37ad282618 | 75 | if(c6en==1) c6++; |
y_notsu | 0:2c37ad282618 | 76 | led=0; |
y_notsu | 0:2c37ad282618 | 77 | } |
y_notsu | 0:2c37ad282618 | 78 | |
y_notsu | 0:2c37ad282618 | 79 | void setup_pinmode() |
y_notsu | 0:2c37ad282618 | 80 | { |
y_notsu | 0:2c37ad282618 | 81 | //p25 lowlevel = write mode? |
y_notsu | 0:2c37ad282618 | 82 | sendpcmode.mode(PullUp); |
y_notsu | 0:2c37ad282618 | 83 | sendpcmode.rise(&changepcmode); |
y_notsu | 0:2c37ad282618 | 84 | } |
y_notsu | 0:2c37ad282618 | 85 | |
y_notsu | 0:2c37ad282618 | 86 | void setup_pinmode2() |
y_notsu | 0:2c37ad282618 | 87 | { |
y_notsu | 0:2c37ad282618 | 88 | oledmode.mode(PullUp); |
y_notsu | 0:2c37ad282618 | 89 | oledmode.rise(&changeoledmode); |
y_notsu | 0:2c37ad282618 | 90 | for(int i=0;i<=15;i++) |
y_notsu | 0:2c37ad282618 | 91 | { |
y_notsu | 0:2c37ad282618 | 92 | graph[i]=0.0; |
y_notsu | 0:2c37ad282618 | 93 | } |
y_notsu | 0:2c37ad282618 | 94 | } |
y_notsu | 0:2c37ad282618 | 95 | |
y_notsu | 0:2c37ad282618 | 96 | void setup_pinmode3() |
y_notsu | 0:2c37ad282618 | 97 | { |
y_notsu | 0:2c37ad282618 | 98 | ain.mode(PullNone); |
y_notsu | 0:2c37ad282618 | 99 | ain.rise(&count_geiger); |
y_notsu | 0:2c37ad282618 | 100 | } |
y_notsu | 0:2c37ad282618 | 101 | |
y_notsu | 0:2c37ad282618 | 102 | |
y_notsu | 0:2c37ad282618 | 103 | int main() { |
y_notsu | 0:2c37ad282618 | 104 | |
y_notsu | 0:2c37ad282618 | 105 | // Initialize RTC |
y_notsu | 0:2c37ad282618 | 106 | // |
y_notsu | 0:2c37ad282618 | 107 | // Init_RTC(1, 11, 05, 31, TUE, 00, 55, 00); // with adjustment |
y_notsu | 0:2c37ad282618 | 108 | //wait(1.0); |
y_notsu | 0:2c37ad282618 | 109 | // Init_RTC(0, 00, 00, 00, 000, 00, 00, 00); // without adjustment |
y_notsu | 0:2c37ad282618 | 110 | // |
y_notsu | 0:2c37ad282618 | 111 | |
y_notsu | 0:2c37ad282618 | 112 | PHY_PowerDown(); |
y_notsu | 0:2c37ad282618 | 113 | |
y_notsu | 0:2c37ad282618 | 114 | pcmodevalue=0x00; |
y_notsu | 0:2c37ad282618 | 115 | oledmodevalue=0x00; |
y_notsu | 0:2c37ad282618 | 116 | graphnum=0; |
y_notsu | 0:2c37ad282618 | 117 | lcd.cls(); |
y_notsu | 0:2c37ad282618 | 118 | lcd.locate(0,0); |
y_notsu | 0:2c37ad282618 | 119 | lcd.printf("Startup"); |
y_notsu | 0:2c37ad282618 | 120 | pc.printf("Startup\n"); |
y_notsu | 0:2c37ad282618 | 121 | sdata=0.0; |
y_notsu | 0:2c37ad282618 | 122 | |
y_notsu | 0:2c37ad282618 | 123 | //Start up window (texe base) |
y_notsu | 0:2c37ad282618 | 124 | oled1.background( 0x000000 ); |
y_notsu | 0:2c37ad282618 | 125 | oled1.cls(); |
y_notsu | 0:2c37ad282618 | 126 | oled1.locate(0,1); |
y_notsu | 0:2c37ad282618 | 127 | oled1.printf("Takoruka OS"); |
y_notsu | 0:2c37ad282618 | 128 | oled1.locate(0,2); |
y_notsu | 0:2c37ad282618 | 129 | oled1.printf("starting."); |
y_notsu | 0:2c37ad282618 | 130 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 131 | oled1.printf("."); |
y_notsu | 0:2c37ad282618 | 132 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 133 | oled1.printf("."); |
y_notsu | 0:2c37ad282618 | 134 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 135 | oled1.printf("."); |
y_notsu | 0:2c37ad282618 | 136 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 137 | oled1.locate(0,3); |
y_notsu | 0:2c37ad282618 | 138 | oled1.printf("done!"); |
y_notsu | 0:2c37ad282618 | 139 | |
y_notsu | 0:2c37ad282618 | 140 | c1=0; |
y_notsu | 0:2c37ad282618 | 141 | c2=0; |
y_notsu | 0:2c37ad282618 | 142 | c3=0; |
y_notsu | 0:2c37ad282618 | 143 | c4=0; |
y_notsu | 0:2c37ad282618 | 144 | c5=0; |
y_notsu | 0:2c37ad282618 | 145 | c6=0; |
y_notsu | 0:2c37ad282618 | 146 | //setup_pinmode(); |
y_notsu | 0:2c37ad282618 | 147 | //setup_pinmode2(); |
y_notsu | 0:2c37ad282618 | 148 | //setup_pinmode3(); |
y_notsu | 0:2c37ad282618 | 149 | |
y_notsu | 0:2c37ad282618 | 150 | //display Imade data of imagedata.h |
y_notsu | 0:2c37ad282618 | 151 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 152 | oled1.cls(); |
y_notsu | 0:2c37ad282618 | 153 | oled1.locate(0,0); |
y_notsu | 0:2c37ad282618 | 154 | oled_image2(Header1); |
y_notsu | 0:2c37ad282618 | 155 | |
y_notsu | 0:2c37ad282618 | 156 | wait(1.0); |
y_notsu | 0:2c37ad282618 | 157 | oled1.cls(); |
y_notsu | 0:2c37ad282618 | 158 | |
y_notsu | 0:2c37ad282618 | 159 | lcd.cls(); |
y_notsu | 0:2c37ad282618 | 160 | lcd.locate(0,0); |
y_notsu | 0:2c37ad282618 | 161 | lcd.printf("GPS Read start"); |
y_notsu | 0:2c37ad282618 | 162 | pc.printf("GPS data read start\n"); |
y_notsu | 0:2c37ad282618 | 163 | sGPSRTC sGPSRTC_Data; |
y_notsu | 0:2c37ad282618 | 164 | sGPSRTC *psGPSRTC_Data; |
y_notsu | 0:2c37ad282618 | 165 | |
y_notsu | 0:2c37ad282618 | 166 | int count = 0; |
y_notsu | 0:2c37ad282618 | 167 | c1en=1; |
y_notsu | 0:2c37ad282618 | 168 | c2en=0; |
y_notsu | 0:2c37ad282618 | 169 | c3en=0; |
y_notsu | 0:2c37ad282618 | 170 | c4en=0; |
y_notsu | 0:2c37ad282618 | 171 | c5en=0; |
y_notsu | 0:2c37ad282618 | 172 | c6en=0; |
y_notsu | 0:2c37ad282618 | 173 | setup_pinmode(); |
y_notsu | 0:2c37ad282618 | 174 | setup_pinmode2(); |
y_notsu | 0:2c37ad282618 | 175 | setup_pinmode3(); |
y_notsu | 0:2c37ad282618 | 176 | |
y_notsu | 0:2c37ad282618 | 177 | pc.printf("Just into while loop\n"); |
y_notsu | 0:2c37ad282618 | 178 | |
y_notsu | 0:2c37ad282618 | 179 | while(1) |
y_notsu | 0:2c37ad282618 | 180 | { |
y_notsu | 0:2c37ad282618 | 181 | //Get GPSRTC data and display |
y_notsu | 0:2c37ad282618 | 182 | if((count%10)==1)pc.printf("Just in while loop\n"); |
y_notsu | 0:2c37ad282618 | 183 | Get_GPGGA_Data(&sGPSRTC_Data); |
y_notsu | 0:2c37ad282618 | 184 | Get_RTC_Data(&sGPSRTC_Data); |
y_notsu | 0:2c37ad282618 | 185 | psGPSRTC_Data = &sGPSRTC_Data; |
y_notsu | 0:2c37ad282618 | 186 | if((count%10)==1)pc.printf("while working\n"); |
y_notsu | 0:2c37ad282618 | 187 | //Get sensor value |
y_notsu | 0:2c37ad282618 | 188 | //sdata = ain.read(); |
y_notsu | 0:2c37ad282618 | 189 | |
y_notsu | 0:2c37ad282618 | 190 | //oled1.cls(); |
y_notsu | 0:2c37ad282618 | 191 | |
y_notsu | 0:2c37ad282618 | 192 | if(oledmodevalue==0x01) |
y_notsu | 0:2c37ad282618 | 193 | { |
y_notsu | 0:2c37ad282618 | 194 | oled1.cls(); |
y_notsu | 0:2c37ad282618 | 195 | oled1.locate(0,1); |
y_notsu | 0:2c37ad282618 | 196 | oled1.foreground(0xff00ff); |
y_notsu | 0:2c37ad282618 | 197 | oled1.printf("RTC"); |
y_notsu | 0:2c37ad282618 | 198 | oled1.locate(0,2); |
y_notsu | 0:2c37ad282618 | 199 | oled1.foreground(0x00ffff); |
y_notsu | 0:2c37ad282618 | 200 | oled1.printf("%02d/%02d/%02d(%s)", |
y_notsu | 0:2c37ad282618 | 201 | psGPSRTC_Data->bRTC_year, psGPSRTC_Data->bRTC_mon, psGPSRTC_Data->bRTC_day, |
y_notsu | 0:2c37ad282618 | 202 | Get_Week_String(psGPSRTC_Data->bRTC_week)); |
y_notsu | 0:2c37ad282618 | 203 | oled1.locate(0,3); |
y_notsu | 0:2c37ad282618 | 204 | oled1.printf("%02d:%02d:%02d", |
y_notsu | 0:2c37ad282618 | 205 | psGPSRTC_Data->bRTC_hour, psGPSRTC_Data->bRTC_min, psGPSRTC_Data->bRTC_sec); |
y_notsu | 0:2c37ad282618 | 206 | oled1.locate(0,4); |
y_notsu | 0:2c37ad282618 | 207 | oled1.foreground(0xff0000);//Red |
y_notsu | 0:2c37ad282618 | 208 | oled1.printf("----------"); |
y_notsu | 0:2c37ad282618 | 209 | oled1.foreground(0x00ffff); //Cyan |
y_notsu | 0:2c37ad282618 | 210 | oled1.foreground(0xff00ff); |
y_notsu | 0:2c37ad282618 | 211 | oled1.locate(0,5); |
y_notsu | 0:2c37ad282618 | 212 | oled1.printf("GPS"); |
y_notsu | 0:2c37ad282618 | 213 | oled1.foreground(0xffff00); //Yellow |
y_notsu | 0:2c37ad282618 | 214 | oled1.locate(0,6); |
y_notsu | 0:2c37ad282618 | 215 | oled1.printf("UTC ="); |
y_notsu | 0:2c37ad282618 | 216 | oled1.printf("%02d:%02d:%02d", |
y_notsu | 0:2c37ad282618 | 217 | psGPSRTC_Data->bGPS_UTC_hour, psGPSRTC_Data->bGPS_UTC_min, psGPSRTC_Data->bGPS_UTC_sec); |
y_notsu | 0:2c37ad282618 | 218 | oled1.locate(0,7); |
y_notsu | 0:2c37ad282618 | 219 | //oled1.foreground(0x00ffff); //Cyan |
y_notsu | 0:2c37ad282618 | 220 | oled1.printf("LAT ="); |
y_notsu | 0:2c37ad282618 | 221 | oled1.printf("%c %02d:%02d:%02d", psGPSRTC_Data->cGPS_LAT, |
y_notsu | 0:2c37ad282618 | 222 | psGPSRTC_Data->bGPS_LAT_deg, psGPSRTC_Data->bGPS_LAT_min, psGPSRTC_Data->bGPS_LAT_sec); |
y_notsu | 0:2c37ad282618 | 223 | oled1.foreground(0xffff00); //Yellow |
y_notsu | 0:2c37ad282618 | 224 | oled1.locate(0,8); |
y_notsu | 0:2c37ad282618 | 225 | oled1.printf("LNG ="); |
y_notsu | 0:2c37ad282618 | 226 | oled1.printf("%c%03d:%02d:%02d", psGPSRTC_Data->cGPS_LNG, |
y_notsu | 0:2c37ad282618 | 227 | psGPSRTC_Data->bGPS_LNG_deg, psGPSRTC_Data->bGPS_LNG_min, psGPSRTC_Data->bGPS_LNG_sec); |
y_notsu | 0:2c37ad282618 | 228 | oled1.locate(0,9); |
y_notsu | 0:2c37ad282618 | 229 | oled1.printf("Qual="); |
y_notsu | 0:2c37ad282618 | 230 | oled1.printf("%c ", psGPSRTC_Data->cGPS_Quality); |
y_notsu | 0:2c37ad282618 | 231 | oled1.locate(0,10); |
y_notsu | 0:2c37ad282618 | 232 | oled1.foreground(0x00ffff); //Cyan |
y_notsu | 0:2c37ad282618 | 233 | oled1.printf("Sat ="); |
y_notsu | 0:2c37ad282618 | 234 | oled1.printf("%3d ", psGPSRTC_Data->bGPS_Sat); |
y_notsu | 0:2c37ad282618 | 235 | oled1.locate(0,11); |
y_notsu | 0:2c37ad282618 | 236 | oled1.printf("HDOP="); |
y_notsu | 0:2c37ad282618 | 237 | oled1.printf("%1d.%1d ", psGPSRTC_Data-> bGPS_HDOP_I, psGPSRTC_Data->bGPS_HDOP_D); |
y_notsu | 0:2c37ad282618 | 238 | oled1.locate(0,12); |
y_notsu | 0:2c37ad282618 | 239 | oled1.printf("ASL ="); |
y_notsu | 0:2c37ad282618 | 240 | oled1.printf("%4dm", psGPSRTC_Data->wGPS_ASL_m); |
y_notsu | 0:2c37ad282618 | 241 | oled1.locate(0,13); |
y_notsu | 0:2c37ad282618 | 242 | oled1.printf("GEO ="); |
y_notsu | 0:2c37ad282618 | 243 | oled1.printf("%4dm", psGPSRTC_Data->wGPS_GEO_m); |
y_notsu | 0:2c37ad282618 | 244 | } |
y_notsu | 0:2c37ad282618 | 245 | else //display sensor value (update 10sec) |
y_notsu | 0:2c37ad282618 | 246 | { |
y_notsu | 0:2c37ad282618 | 247 | |
y_notsu | 0:2c37ad282618 | 248 | switch(count) |
y_notsu | 0:2c37ad282618 | 249 | { |
y_notsu | 0:2c37ad282618 | 250 | case 0: |
y_notsu | 0:2c37ad282618 | 251 | c1en=0; |
y_notsu | 0:2c37ad282618 | 252 | sdata=c1; |
y_notsu | 0:2c37ad282618 | 253 | c1=0; |
y_notsu | 0:2c37ad282618 | 254 | c1en=1; |
y_notsu | 0:2c37ad282618 | 255 | break; |
y_notsu | 0:2c37ad282618 | 256 | case 10: |
y_notsu | 0:2c37ad282618 | 257 | c2en=0; |
y_notsu | 0:2c37ad282618 | 258 | sdata=c2; |
y_notsu | 0:2c37ad282618 | 259 | c2=0; |
y_notsu | 0:2c37ad282618 | 260 | c2en=1; |
y_notsu | 0:2c37ad282618 | 261 | break; |
y_notsu | 0:2c37ad282618 | 262 | case 20: |
y_notsu | 0:2c37ad282618 | 263 | c3en=0; |
y_notsu | 0:2c37ad282618 | 264 | sdata=c3; |
y_notsu | 0:2c37ad282618 | 265 | c3=0; |
y_notsu | 0:2c37ad282618 | 266 | c3en=1; |
y_notsu | 0:2c37ad282618 | 267 | break; |
y_notsu | 0:2c37ad282618 | 268 | case 30: |
y_notsu | 0:2c37ad282618 | 269 | c4en=0; |
y_notsu | 0:2c37ad282618 | 270 | sdata=c4; |
y_notsu | 0:2c37ad282618 | 271 | c4=0; |
y_notsu | 0:2c37ad282618 | 272 | c4en=1; |
y_notsu | 0:2c37ad282618 | 273 | break; |
y_notsu | 0:2c37ad282618 | 274 | case 40: |
y_notsu | 0:2c37ad282618 | 275 | c5en=0; |
y_notsu | 0:2c37ad282618 | 276 | sdata=c5; |
y_notsu | 0:2c37ad282618 | 277 | c5=0; |
y_notsu | 0:2c37ad282618 | 278 | c5en=1; |
y_notsu | 0:2c37ad282618 | 279 | break; |
y_notsu | 0:2c37ad282618 | 280 | case 50: |
y_notsu | 0:2c37ad282618 | 281 | c6en=0; |
y_notsu | 0:2c37ad282618 | 282 | sdata=c6; |
y_notsu | 0:2c37ad282618 | 283 | c6=0; |
y_notsu | 0:2c37ad282618 | 284 | c6en=1; |
y_notsu | 0:2c37ad282618 | 285 | break; |
y_notsu | 0:2c37ad282618 | 286 | default: |
y_notsu | 0:2c37ad282618 | 287 | sdata=sdata; |
y_notsu | 0:2c37ad282618 | 288 | break; |
y_notsu | 0:2c37ad282618 | 289 | } |
y_notsu | 0:2c37ad282618 | 290 | if(sdata>maxdata) maxdata=sdata; |
y_notsu | 0:2c37ad282618 | 291 | if((count%10)==1) |
y_notsu | 0:2c37ad282618 | 292 | { |
y_notsu | 0:2c37ad282618 | 293 | oled1.cls(); |
y_notsu | 0:2c37ad282618 | 294 | float mSvh = float(sdata)/633.0; |
y_notsu | 0:2c37ad282618 | 295 | //float mSvh = float(sdata)/243.5; |
y_notsu | 0:2c37ad282618 | 296 | graphnum++; |
y_notsu | 0:2c37ad282618 | 297 | if(graphnum==16) graphnum=0; |
y_notsu | 0:2c37ad282618 | 298 | graph[graphnum]=sdata; |
y_notsu | 0:2c37ad282618 | 299 | |
y_notsu | 0:2c37ad282618 | 300 | for(int i=0;i<=15;i++) |
y_notsu | 0:2c37ad282618 | 301 | { |
y_notsu | 0:2c37ad282618 | 302 | int width = int(graph[i]/10); |
y_notsu | 0:2c37ad282618 | 303 | if(i!=graphnum) |
y_notsu | 0:2c37ad282618 | 304 | oled1.fill(i*8,28+(100-width),7,width,0xffff00); |
y_notsu | 0:2c37ad282618 | 305 | else |
y_notsu | 0:2c37ad282618 | 306 | oled1.fill(i*8,28+(100-width),7,width,0xff00ff); |
y_notsu | 0:2c37ad282618 | 307 | } |
y_notsu | 0:2c37ad282618 | 308 | oled1.locate(0,1); |
y_notsu | 0:2c37ad282618 | 309 | oled1.foreground(0xff00ff); //Magenta |
y_notsu | 0:2c37ad282618 | 310 | oled1.printf("Sensor value"); |
y_notsu | 0:2c37ad282618 | 311 | oled1.locate(0,2); |
y_notsu | 0:2c37ad282618 | 312 | oled1.foreground(0x00ffff); //Cyan |
y_notsu | 0:2c37ad282618 | 313 | oled1.printf("%4.1f max:%4.1f",sdata,maxdata); |
y_notsu | 0:2c37ad282618 | 314 | oled1.locate(0,3); |
y_notsu | 0:2c37ad282618 | 315 | oled1.printf("%7.4f [uSv/h]",mSvh); |
y_notsu | 0:2c37ad282618 | 316 | } |
y_notsu | 0:2c37ad282618 | 317 | } |
y_notsu | 0:2c37ad282618 | 318 | |
y_notsu | 0:2c37ad282618 | 319 | count ++; |
y_notsu | 0:2c37ad282618 | 320 | |
y_notsu | 0:2c37ad282618 | 321 | if((count%10)==1) |
y_notsu | 0:2c37ad282618 | 322 | { |
y_notsu | 0:2c37ad282618 | 323 | FILE *fp=fopen("/sd/datalog.csv","a"); |
y_notsu | 0:2c37ad282618 | 324 | if(fp==NULL) |
y_notsu | 0:2c37ad282618 | 325 | { |
y_notsu | 0:2c37ad282618 | 326 | error("Could not open file for write\n"); |
y_notsu | 0:2c37ad282618 | 327 | pc.printf("Could not open file for write\n"); |
y_notsu | 0:2c37ad282618 | 328 | } |
y_notsu | 0:2c37ad282618 | 329 | fprintf(fp,"UTC ,"); |
y_notsu | 0:2c37ad282618 | 330 | fprintf(fp,"%02d:%02d:%02d ,", |
y_notsu | 0:2c37ad282618 | 331 | psGPSRTC_Data->bRTC_hour, psGPSRTC_Data->bRTC_min, psGPSRTC_Data->bRTC_sec); |
y_notsu | 0:2c37ad282618 | 332 | fprintf(fp,"LAT ,"); |
y_notsu | 0:2c37ad282618 | 333 | fprintf(fp,"%c,%02d:%02d:%02d ,", psGPSRTC_Data->cGPS_LAT, |
y_notsu | 0:2c37ad282618 | 334 | psGPSRTC_Data->bGPS_LAT_deg, psGPSRTC_Data->bGPS_LAT_min, psGPSRTC_Data->bGPS_LAT_sec); |
y_notsu | 0:2c37ad282618 | 335 | fprintf(fp,"LNG ,"); |
y_notsu | 0:2c37ad282618 | 336 | fprintf(fp,"%c, %03d:%02d:%02d ,", psGPSRTC_Data->cGPS_LNG, |
y_notsu | 0:2c37ad282618 | 337 | psGPSRTC_Data->bGPS_LNG_deg, psGPSRTC_Data->bGPS_LNG_min, psGPSRTC_Data->bGPS_LNG_sec); |
y_notsu | 0:2c37ad282618 | 338 | fprintf(fp,"Count,%4.2f \n",sdata); |
y_notsu | 0:2c37ad282618 | 339 | fclose(fp); |
y_notsu | 0:2c37ad282618 | 340 | } |
y_notsu | 0:2c37ad282618 | 341 | |
y_notsu | 0:2c37ad282618 | 342 | //Serial PC communication |
y_notsu | 0:2c37ad282618 | 343 | if((pcmodevalue==0x00)&&((count%10)==1)) |
y_notsu | 0:2c37ad282618 | 344 | { |
y_notsu | 0:2c37ad282618 | 345 | pc.printf("UTC,"); |
y_notsu | 0:2c37ad282618 | 346 | pc.printf("%02d:%02d:%02d ,", |
y_notsu | 0:2c37ad282618 | 347 | psGPSRTC_Data->bRTC_hour, psGPSRTC_Data->bRTC_min, psGPSRTC_Data->bRTC_sec); |
y_notsu | 0:2c37ad282618 | 348 | pc.printf("LAT,"); |
y_notsu | 0:2c37ad282618 | 349 | pc.printf("%c,%02d:%02d:%02d ,", psGPSRTC_Data->cGPS_LAT, |
y_notsu | 0:2c37ad282618 | 350 | psGPSRTC_Data->bGPS_LAT_deg, psGPSRTC_Data->bGPS_LAT_min, psGPSRTC_Data->bGPS_LAT_sec); |
y_notsu | 0:2c37ad282618 | 351 | pc.printf("LNG,"); |
y_notsu | 0:2c37ad282618 | 352 | pc.printf("%c, %03d:%02d:%02d ,", psGPSRTC_Data->cGPS_LNG, |
y_notsu | 0:2c37ad282618 | 353 | psGPSRTC_Data->bGPS_LNG_deg, psGPSRTC_Data->bGPS_LNG_min, psGPSRTC_Data->bGPS_LNG_sec); |
y_notsu | 0:2c37ad282618 | 354 | } |
y_notsu | 0:2c37ad282618 | 355 | if(count==60) count=0; |
y_notsu | 0:2c37ad282618 | 356 | |
y_notsu | 0:2c37ad282618 | 357 | wait(0.3); |
y_notsu | 0:2c37ad282618 | 358 | |
y_notsu | 0:2c37ad282618 | 359 | if((psGPSRTC_Data->bGPS_Sat)<=3) |
y_notsu | 0:2c37ad282618 | 360 | { |
y_notsu | 0:2c37ad282618 | 361 | lcd.cls(); |
y_notsu | 0:2c37ad282618 | 362 | lcd.locate(0,0); |
y_notsu | 0:2c37ad282618 | 363 | lcd.printf("Can't read GPS"); |
y_notsu | 0:2c37ad282618 | 364 | } |
y_notsu | 0:2c37ad282618 | 365 | else |
y_notsu | 0:2c37ad282618 | 366 | { |
y_notsu | 0:2c37ad282618 | 367 | lcd.cls(); |
y_notsu | 0:2c37ad282618 | 368 | lcd.locate(0,0); |
y_notsu | 0:2c37ad282618 | 369 | lcd.printf("GPS data reading"); |
y_notsu | 0:2c37ad282618 | 370 | } |
y_notsu | 0:2c37ad282618 | 371 | |
y_notsu | 0:2c37ad282618 | 372 | lcd.locate(0,1); |
y_notsu | 0:2c37ad282618 | 373 | lcd.printf("Count=%4.1f",sdata); |
y_notsu | 0:2c37ad282618 | 374 | if((pcmodevalue==0x00)&((count%10)==1)) |
y_notsu | 0:2c37ad282618 | 375 | pc.printf("Count=%4.1f\n",sdata); |
y_notsu | 0:2c37ad282618 | 376 | |
y_notsu | 0:2c37ad282618 | 377 | } |
y_notsu | 0:2c37ad282618 | 378 | |
y_notsu | 0:2c37ad282618 | 379 | |
y_notsu | 0:2c37ad282618 | 380 | } |
y_notsu | 0:2c37ad282618 | 381 | |
y_notsu | 0:2c37ad282618 | 382 | void oled_image2(const unsigned int *ptr2) |
y_notsu | 0:2c37ad282618 | 383 | { |
y_notsu | 0:2c37ad282618 | 384 | short height,width; |
y_notsu | 0:2c37ad282618 | 385 | int colour; |
y_notsu | 0:2c37ad282618 | 386 | height = *ptr2; |
y_notsu | 0:2c37ad282618 | 387 | ptr2++; |
y_notsu | 0:2c37ad282618 | 388 | width = *ptr2; |
y_notsu | 0:2c37ad282618 | 389 | ptr2++; |
y_notsu | 0:2c37ad282618 | 390 | oled1.locate(0,0); |
y_notsu | 0:2c37ad282618 | 391 | for(int i=1;i<=width;i++) |
y_notsu | 0:2c37ad282618 | 392 | { |
y_notsu | 0:2c37ad282618 | 393 | for(int j=1;j<=height;j++) |
y_notsu | 0:2c37ad282618 | 394 | { |
y_notsu | 0:2c37ad282618 | 395 | colour = (((*ptr2&0xF800)<<8) | ((*ptr2&0x07E0)<<5) | ((*ptr2&0x001F)<<3)); |
y_notsu | 0:2c37ad282618 | 396 | oled1.pixel(j,i,colour); |
y_notsu | 0:2c37ad282618 | 397 | ptr2++; |
y_notsu | 0:2c37ad282618 | 398 | } |
y_notsu | 0:2c37ad282618 | 399 | } |
y_notsu | 0:2c37ad282618 | 400 | } |
y_notsu | 0:2c37ad282618 | 401 | |
y_notsu | 0:2c37ad282618 | 402 | /* |
y_notsu | 0:2c37ad282618 | 403 | * history: |
y_notsu | 0:2c37ad282618 | 404 | * 0.5 (2011-Apr-07) : initial published version |
y_notsu | 0:2c37ad282618 | 405 | * 0.51 (2011-Apr-08) : minor modification to make the source more consistent (use " MARMEX_OB_oled::HEIGHT" instead of 128) |
y_notsu | 0:2c37ad282618 | 406 | */ |