Yuji Notsu
/
MARMEX_OB_oled__HelloWorld
This program is for operating OLED module of MAPLE Board and mbed1768
main.cpp@0:53adaf7199b6, 2013-01-03 (annotated)
- Committer:
- y_notsu
- Date:
- Thu Jan 03 13:12:04 2013 +0000
- Revision:
- 0:53adaf7199b6
This program is for OLED module of MAPLE Board and mbed1768.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
y_notsu | 0:53adaf7199b6 | 1 | /** A sample app of MARMEX_OB OLED screen drawing library |
y_notsu | 0:53adaf7199b6 | 2 | * |
y_notsu | 0:53adaf7199b6 | 3 | * @author Tedd |
y_notsu | 0:53adaf7199b6 | 4 | * @version 0.51 |
y_notsu | 0:53adaf7199b6 | 5 | * @date 08-Apr-2011 |
y_notsu | 0:53adaf7199b6 | 6 | * |
y_notsu | 0:53adaf7199b6 | 7 | * Released under the MIT License: http://mbed.org/license/mit |
y_notsu | 0:53adaf7199b6 | 8 | * |
y_notsu | 0:53adaf7199b6 | 9 | * MARMEX_OB_oled OLED screen drawing library for mbed |
y_notsu | 0:53adaf7199b6 | 10 | * This code has been written based on sample code and advises |
y_notsu | 0:53adaf7199b6 | 11 | * from Ochiai-san (Marutsu-Elec). Thank you! |
y_notsu | 0:53adaf7199b6 | 12 | * |
y_notsu | 0:53adaf7199b6 | 13 | * To build this code, "NokiaLCD" and "mbed" libraries are needed to be imported in a project. |
y_notsu | 0:53adaf7199b6 | 14 | * NokiaLCD library : http://mbed.org/users/simon/libraries/NokiaLCD/ |
y_notsu | 0:53adaf7199b6 | 15 | */ |
y_notsu | 0:53adaf7199b6 | 16 | |
y_notsu | 0:53adaf7199b6 | 17 | |
y_notsu | 0:53adaf7199b6 | 18 | #include "mbed.h" |
y_notsu | 0:53adaf7199b6 | 19 | #include "MARMEX_OB_oled.h" |
y_notsu | 0:53adaf7199b6 | 20 | #include "imagedata.h" |
y_notsu | 0:53adaf7199b6 | 21 | |
y_notsu | 0:53adaf7199b6 | 22 | // oled1 is for MARMEX_OB_oled board on MAPLE slot 1 |
y_notsu | 0:53adaf7199b6 | 23 | // oled1 is for MARMEX_OB_oled board on MAPLE slot 2 |
y_notsu | 0:53adaf7199b6 | 24 | |
y_notsu | 0:53adaf7199b6 | 25 | MARMEX_OB_oled oled1( p5, p7, p8, p30, p11 ); // mosi, sclk, cs, rst, power_control |
y_notsu | 0:53adaf7199b6 | 26 | //MARMEX_OB_oled oled2( p5, p7, p26, p21, p17 ); // mosi, sclk, cs, rst, power_control |
y_notsu | 0:53adaf7199b6 | 27 | |
y_notsu | 0:53adaf7199b6 | 28 | void oled_image2(const unsigned int *ptr2); |
y_notsu | 0:53adaf7199b6 | 29 | |
y_notsu | 0:53adaf7199b6 | 30 | int main() { |
y_notsu | 0:53adaf7199b6 | 31 | oled1.background( 0x000000 ); |
y_notsu | 0:53adaf7199b6 | 32 | oled1.cls(); |
y_notsu | 0:53adaf7199b6 | 33 | /* |
y_notsu | 0:53adaf7199b6 | 34 | int colorbar_width = MARMEX_OB_oled::WIDTH / 8; |
y_notsu | 0:53adaf7199b6 | 35 | |
y_notsu | 0:53adaf7199b6 | 36 | for ( int i = 0; i < 8; i++ ) |
y_notsu | 0:53adaf7199b6 | 37 | oled1.fill( colorbar_width * i, 0, colorbar_width, MARMEX_OB_oled::HEIGHT, ((i & 0x4) ? 0xFF0000 : 0x000000) | ((i & 0x2) ? 0x00FF00 : 0x000000) | ((i & 0x1) ? 0x0000FF : 0x000000) ); |
y_notsu | 0:53adaf7199b6 | 38 | |
y_notsu | 0:53adaf7199b6 | 39 | oled1.fill( 50, 50, 64, 64, 0xCCCCCC );; |
y_notsu | 0:53adaf7199b6 | 40 | |
y_notsu | 0:53adaf7199b6 | 41 | oled1.locate( 0, 3 ); |
y_notsu | 0:53adaf7199b6 | 42 | oled1.printf( "Hello World!" ); |
y_notsu | 0:53adaf7199b6 | 43 | oled1.locate( 0, 4 ); |
y_notsu | 0:53adaf7199b6 | 44 | oled1.printf( "SPI = %s", MERMEX_OB_SPI_MODE_STR ); |
y_notsu | 0:53adaf7199b6 | 45 | |
y_notsu | 0:53adaf7199b6 | 46 | for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ ) { |
y_notsu | 0:53adaf7199b6 | 47 | oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 ); |
y_notsu | 0:53adaf7199b6 | 48 | } |
y_notsu | 0:53adaf7199b6 | 49 | */ |
y_notsu | 0:53adaf7199b6 | 50 | |
y_notsu | 0:53adaf7199b6 | 51 | |
y_notsu | 0:53adaf7199b6 | 52 | |
y_notsu | 0:53adaf7199b6 | 53 | |
y_notsu | 0:53adaf7199b6 | 54 | oled1.locate(0,1); |
y_notsu | 0:53adaf7199b6 | 55 | oled1.printf("Takoruka OS"); |
y_notsu | 0:53adaf7199b6 | 56 | oled1.locate(0,2); |
y_notsu | 0:53adaf7199b6 | 57 | oled1.printf("starting."); |
y_notsu | 0:53adaf7199b6 | 58 | wait(1.0); |
y_notsu | 0:53adaf7199b6 | 59 | oled1.printf("."); |
y_notsu | 0:53adaf7199b6 | 60 | wait(1.0); |
y_notsu | 0:53adaf7199b6 | 61 | oled1.printf("."); |
y_notsu | 0:53adaf7199b6 | 62 | wait(1.0); |
y_notsu | 0:53adaf7199b6 | 63 | oled1.printf("."); |
y_notsu | 0:53adaf7199b6 | 64 | wait(1.0); |
y_notsu | 0:53adaf7199b6 | 65 | oled1.locate(0,3); |
y_notsu | 0:53adaf7199b6 | 66 | oled1.printf("done!"); |
y_notsu | 0:53adaf7199b6 | 67 | |
y_notsu | 0:53adaf7199b6 | 68 | wait(1.0); |
y_notsu | 0:53adaf7199b6 | 69 | oled1.cls(); |
y_notsu | 0:53adaf7199b6 | 70 | oled1.locate(0,0); |
y_notsu | 0:53adaf7199b6 | 71 | oled_image2(Header1); |
y_notsu | 0:53adaf7199b6 | 72 | |
y_notsu | 0:53adaf7199b6 | 73 | |
y_notsu | 0:53adaf7199b6 | 74 | |
y_notsu | 0:53adaf7199b6 | 75 | |
y_notsu | 0:53adaf7199b6 | 76 | } |
y_notsu | 0:53adaf7199b6 | 77 | |
y_notsu | 0:53adaf7199b6 | 78 | void oled_image2(const unsigned int *ptr2) |
y_notsu | 0:53adaf7199b6 | 79 | { |
y_notsu | 0:53adaf7199b6 | 80 | short height,width; |
y_notsu | 0:53adaf7199b6 | 81 | int colour; |
y_notsu | 0:53adaf7199b6 | 82 | height = *ptr2; |
y_notsu | 0:53adaf7199b6 | 83 | ptr2++; |
y_notsu | 0:53adaf7199b6 | 84 | width = *ptr2; |
y_notsu | 0:53adaf7199b6 | 85 | ptr2++; |
y_notsu | 0:53adaf7199b6 | 86 | oled1.locate(0,0); |
y_notsu | 0:53adaf7199b6 | 87 | for(int i=1;i<=width;i++) |
y_notsu | 0:53adaf7199b6 | 88 | { |
y_notsu | 0:53adaf7199b6 | 89 | for(int j=1;j<=height;j++) |
y_notsu | 0:53adaf7199b6 | 90 | { |
y_notsu | 0:53adaf7199b6 | 91 | colour = (((*ptr2&0xF800)<<8) | ((*ptr2&0x07E0)<<5) | ((*ptr2&0x001F)<<3)); //for BGR888 |
y_notsu | 0:53adaf7199b6 | 92 | //colour = (((*ptr2&0xF800)) | ((*ptr2&0x07E)<<5) | ((*ptr2&0x01F)<<3)); //for RGB888 |
y_notsu | 0:53adaf7199b6 | 93 | oled1.pixel(j,i,colour); |
y_notsu | 0:53adaf7199b6 | 94 | ptr2++; |
y_notsu | 0:53adaf7199b6 | 95 | } |
y_notsu | 0:53adaf7199b6 | 96 | } |
y_notsu | 0:53adaf7199b6 | 97 | } |
y_notsu | 0:53adaf7199b6 | 98 | |
y_notsu | 0:53adaf7199b6 | 99 | /* |
y_notsu | 0:53adaf7199b6 | 100 | * history: |
y_notsu | 0:53adaf7199b6 | 101 | * 0.5 (2011-Apr-07) : initial published version |
y_notsu | 0:53adaf7199b6 | 102 | * 0.51 (2011-Apr-08) : minor modification to make the source more consistent (use " MARMEX_OB_oled::HEIGHT" instead of 128) |
y_notsu | 0:53adaf7199b6 | 103 | */ |