This Program is for MAPLE board with OLED and GPS/RTC module. OLED module(OB) : 128 x 128 pixels, 4K color GPS/RTC module(GB) : UP501 These module can buy Marutyu (http://www.marutsu.co.jp)
Diff: main.cpp
- Revision:
- 0:58e40a872950
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Jun 05 15:10:48 2011 +0000 @@ -0,0 +1,158 @@ +// MARMEX OLED and GPS test program +// Author : Yuji Notsu +// Date : 30-Mar-2011 +// Revision : 0.0 + +/** A sample app of MARMEX_OB OLED screen drawing library + * + * @author Tedd + * @version 0.51 + * @date 08-Apr-2011 + * + * Released under the MIT License: http://mbed.org/license/mit + * + * MARMEX_OB_oled OLED screen drawing library for mbed + * This code has been written based on sample code and advises + * from Ochiai-san (Marutsu-Elec). Thank you! + * + * To build this code, "NokiaLCD" and "mbed" libraries are needed to be imported in a project. + * NokiaLCD library : http://mbed.org/users/simon/libraries/NokiaLCD/ + */ + + +#include "mbed.h" +#include "MARMEX_OB_oled.h" +#include "imagedata.h" +#include "gpsrtc.h" + +// oled1 is for MARMEX_OB_oled board on MAPLE slot 1 +MARMEX_OB_oled oled1( p5, p7, p8, p30, p11 ); // mosi, sclk, cs, rst, power_control + +void oled_image2(const unsigned int *ptr2); + +int main() { + + // Initialize RTC + // + // Init_RTC(1, 11, 05, 31, TUE, 00, 55, 00); // with adjustment + //wait(1.0); + // Init_RTC(0, 00, 00, 00, 000, 00, 00, 00); // without adjustment + // + + //Start up window (texe base) + oled1.background( 0x000000 ); + oled1.cls(); + oled1.locate(0,1); + oled1.printf("Takoruka OS"); + oled1.locate(0,2); + oled1.printf("starting."); + wait(1.0); + oled1.printf("."); + wait(1.0); + oled1.printf("."); + wait(1.0); + oled1.printf("."); + wait(1.0); + oled1.locate(0,3); + oled1.printf("done!"); + + //display Imade data of imagedata.h + wait(1.0); + oled1.cls(); + oled1.locate(0,0); + oled_image2(Header1); + + wait(1.0); + oled1.cls(); + + sGPSRTC sGPSRTC_Data; + sGPSRTC *psGPSRTC_Data; + + while(1) + { + //Get GPSRTC data and display + Get_GPGGA_Data(&sGPSRTC_Data); + Get_RTC_Data(&sGPSRTC_Data); + psGPSRTC_Data = &sGPSRTC_Data; + + oled1.locate(0,1); + oled1.foreground(0xff00ff); + oled1.printf("RTC"); + oled1.locate(0,2); + oled1.foreground(0x00ffff); + oled1.printf("%02d/%02d/%02d(%s)", + psGPSRTC_Data->bRTC_year, psGPSRTC_Data->bRTC_mon, psGPSRTC_Data->bRTC_day, + Get_Week_String(psGPSRTC_Data->bRTC_week)); + oled1.locate(0,3); + oled1.printf("%02d:%02d:%02d", + psGPSRTC_Data->bRTC_hour, psGPSRTC_Data->bRTC_min, psGPSRTC_Data->bRTC_sec); + oled1.locate(0,4); + oled1.foreground(0xff0000);//Red + oled1.printf("----------"); + oled1.foreground(0x00ffff); //Cyan + oled1.foreground(0xff00ff); + oled1.locate(0,5); + oled1.printf("GPS"); + oled1.foreground(0xffff00); //Yellow + oled1.locate(0,6); + oled1.printf("UTC ="); + oled1.printf("%02d:%02d:%02d", + psGPSRTC_Data->bGPS_UTC_hour, psGPSRTC_Data->bGPS_UTC_min, psGPSRTC_Data->bGPS_UTC_sec); + oled1.locate(0,7); + //oled1.foreground(0x00ffff); //Cyan + oled1.printf("LAT ="); + oled1.printf("%c %02d:%02d:%02d", psGPSRTC_Data->cGPS_LAT, + psGPSRTC_Data->bGPS_LAT_deg, psGPSRTC_Data->bGPS_LAT_min, psGPSRTC_Data->bGPS_LAT_sec); + oled1.foreground(0xffff00); //Yellow + oled1.locate(0,8); + oled1.printf("LNG ="); + oled1.printf("%c%03d:%02d:%02d", psGPSRTC_Data->cGPS_LNG, + psGPSRTC_Data->bGPS_LNG_deg, psGPSRTC_Data->bGPS_LNG_min, psGPSRTC_Data->bGPS_LNG_sec); + oled1.locate(0,9); + oled1.printf("Qual="); + oled1.printf("%c ", psGPSRTC_Data->cGPS_Quality); + oled1.locate(0,10); + oled1.foreground(0x00ffff); //Cyan + oled1.printf("Sat ="); + oled1.printf("%3d ", psGPSRTC_Data->bGPS_Sat); + oled1.locate(0,11); + oled1.printf("HDOP="); + oled1.printf("%1d.%1d ", psGPSRTC_Data-> bGPS_HDOP_I, psGPSRTC_Data->bGPS_HDOP_D); + oled1.locate(0,12); + oled1.printf("ASL ="); + oled1.printf("%4dm", psGPSRTC_Data->wGPS_ASL_m); + oled1.locate(0,13); + oled1.printf("GEO ="); + oled1.printf("%4dm", psGPSRTC_Data->wGPS_GEO_m); + wait(0.3); + + } + + +} + +void oled_image2(const unsigned int *ptr2) +{ + short height,width; + int colour; + height = *ptr2; + ptr2++; + width = *ptr2; + ptr2++; + oled1.locate(0,0); + for(int i=1;i<=width;i++) + { + for(int j=1;j<=height;j++) + { + colour = (((*ptr2&0xF800)<<8) | ((*ptr2&0x07E0)<<5) | ((*ptr2&0x001F)<<3)); + oled1.pixel(j,i,colour); + ptr2++; + } + } +} + +/* + * history: + * 0.5 (2011-Apr-07) : initial published version + * 0.51 (2011-Apr-08) : minor modification to make the source more consistent (use " MARMEX_OB_oled::HEIGHT" instead of 128) + */