test

Dependencies:   FatFileSystem TextLCD mbed

Committer:
y_notsu
Date:
Tue Sep 18 07:24:22 2012 +0000
Revision:
0:2c37ad282618
test

Who changed what in which revision?

UserRevisionLine numberNew 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 */