Tedd OKANO / Mbed 2 deprecated MARY_CAMERA_Hello

Dependencies:   MARY_CAMERA NokiaLCD mbed

Committer:
okano
Date:
Thu Mar 06 07:29:25 2014 +0000
Revision:
16:fa1bd83e34b0
Parent:
15:c81a197f4f5b
Child:
21:a2ac746dd516
prototype for yellow-mbed and tragi-ARM-boards

Who changed what in which revision?

UserRevisionLine numberNew contents of line
okano 0:1062142e5718 1 #include "mbed.h"
okano 0:1062142e5718 2 #include "MARMEX_OB_oled.h"
okano 4:5e1828a8e238 3 #include "MARY_CAMERA.h"
okano 3:152362acd181 4
okano 16:fa1bd83e34b0 5 #if defined( TARGET_MBED_LPC1768 ) || defined( TARGET_LPC11U24_401 )
okano 16:fa1bd83e34b0 6
okano 4:5e1828a8e238 7 MARMEX_OB_oled oled1( p5, p7, p20, p16, p15 ); // mosi, sclk, cs, rst, power_control -- maple-mini-type-b-slot1
okano 6:f5b4e088087b 8 MARY_CAMERA camera( p5, p6, p7, p22, p26, p28, p27 ); // mosi, miso, sclk, cs, reset, I2C_SDA, I2C_SCL
okano 16:fa1bd83e34b0 9
okano 16:fa1bd83e34b0 10 #endif
okano 16:fa1bd83e34b0 11
okano 16:fa1bd83e34b0 12 #if defined( TARGET_LPC11U35_401 )
okano 16:fa1bd83e34b0 13
okano 16:fa1bd83e34b0 14 MARMEX_OB_oled oled1( P0_9, P0_10, P0_16, P0_12, P0_11 ); // mosi, sclk, cs, rst, power_control -- maple-mini-type-b-slot1
okano 16:fa1bd83e34b0 15 MARY_CAMERA camera( P0_9, P0_8, P0_10, P0_2, P1_15, P0_5, P0_4 ); // mosi, miso, sclk, cs, reset, I2C_SDA, I2C_SCL
okano 16:fa1bd83e34b0 16
okano 16:fa1bd83e34b0 17 #endif
okano 16:fa1bd83e34b0 18
okano 9:68408189efde 19 BusOut led( LED3, LED4 );
okano 1:ce27bc7b44d4 20
okano 9:68408189efde 21 #define X_OFFSET ((MARY_CAMERA::PIXEL_PER_LINE - MARMEX_OB_oled::WIDTH ) / 2)
okano 9:68408189efde 22 #define Y_OFFSET ((MARY_CAMERA::LINE_PER_FRAME - MARMEX_OB_oled::HEIGHT) / 2)
okano 9:68408189efde 23
okano 9:68408189efde 24 void line_mirroring( short *buf );
okano 16:fa1bd83e34b0 25 void oled_test_screen( void );
okano 0:1062142e5718 26
okano 0:1062142e5718 27 int main()
okano 0:1062142e5718 28 {
okano 6:f5b4e088087b 29 led = 0x3;
okano 6:f5b4e088087b 30
okano 1:ce27bc7b44d4 31 oled1.cls();
okano 16:fa1bd83e34b0 32 oled_test_screen();
okano 16:fa1bd83e34b0 33
okano 9:68408189efde 34 short buf[ MARMEX_OB_oled::WIDTH ];
okano 0:1062142e5718 35
okano 0:1062142e5718 36 while ( 1 ) {
okano 7:380026dd09fd 37
okano 7:380026dd09fd 38 led = 0x1;
okano 4:5e1828a8e238 39 camera.open_transfer();
okano 0:1062142e5718 40
okano 13:52f7b692e00d 41 for ( int line = 0; line < MARMEX_OB_oled::HEIGHT; line++ ) {
okano 13:52f7b692e00d 42 camera.transfer_a_line( buf, line + Y_OFFSET, X_OFFSET, MARMEX_OB_oled::WIDTH );
okano 9:68408189efde 43 line_mirroring( buf );
okano 13:52f7b692e00d 44 oled1.blit565( 0, line, MARMEX_OB_oled::WIDTH, 1, buf );
okano 15:c81a197f4f5b 45 //wait_us( 700 );
okano 0:1062142e5718 46 }
okano 0:1062142e5718 47
okano 4:5e1828a8e238 48 camera.close_transfer();
okano 6:f5b4e088087b 49 led = 0x2;
okano 0:1062142e5718 50 }
okano 0:1062142e5718 51 }
okano 6:f5b4e088087b 52
okano 9:68408189efde 53
okano 9:68408189efde 54 void line_mirroring( short *buf )
okano 9:68408189efde 55 {
okano 9:68408189efde 56 short tmp;
okano 9:68408189efde 57
okano 14:cc83bb625f92 58 #if 1
okano 9:68408189efde 59 for ( int i = 0; i < (MARMEX_OB_oled::WIDTH / 2); i++ ) {
okano 9:68408189efde 60 tmp = buf[ i ];
okano 9:68408189efde 61 buf[ i ] = buf[ (MARMEX_OB_oled::WIDTH - 1) - i ];
okano 9:68408189efde 62 buf[ (MARMEX_OB_oled::WIDTH - 1) - i ] = tmp;
okano 14:cc83bb625f92 63 #else
okano 14:cc83bb625f92 64 for ( int i = 0; i < MARMEX_OB_oled::WIDTH; i++ ) {
okano 14:cc83bb625f92 65 buf[ i ] = 0x0;
okano 14:cc83bb625f92 66
okano 14:cc83bb625f92 67 #endif
okano 14:cc83bb625f92 68
okano 9:68408189efde 69 }
okano 16:fa1bd83e34b0 70 }
okano 16:fa1bd83e34b0 71
okano 16:fa1bd83e34b0 72
okano 16:fa1bd83e34b0 73 void oled_test_screen( void )
okano 16:fa1bd83e34b0 74 {
okano 16:fa1bd83e34b0 75 oled1.background( 0x000000 );
okano 16:fa1bd83e34b0 76 oled1.cls();
okano 16:fa1bd83e34b0 77
okano 16:fa1bd83e34b0 78 int colorbar_width = MARMEX_OB_oled::WIDTH / 8;
okano 16:fa1bd83e34b0 79
okano 16:fa1bd83e34b0 80 for ( int i = 0; i < 8; i++ )
okano 16:fa1bd83e34b0 81 oled1.fill( colorbar_width * i, 0, colorbar_width, MARMEX_OB_oled::HEIGHT, ((i & 0x4) ? 0xFF0000 : 0x000000) | ((i & 0x2) ? 0x00FF00 : 0x000000) | ((i & 0x1) ? 0x0000FF : 0x000000) );
okano 16:fa1bd83e34b0 82
okano 16:fa1bd83e34b0 83 oled1.fill( 50, 50, 64, 64, 0xCCCCCC );;
okano 16:fa1bd83e34b0 84
okano 16:fa1bd83e34b0 85 oled1.locate( 0, 2 );
okano 16:fa1bd83e34b0 86 oled1.printf( "MaryCemara test" );
okano 16:fa1bd83e34b0 87 oled1.locate( 0, 4 );
okano 16:fa1bd83e34b0 88 oled1.printf( "%s", (MARY_CAMERA::NO_ERROR == camera.ready()) ? "Camera is ready" : "No Camera found" );
okano 16:fa1bd83e34b0 89
okano 16:fa1bd83e34b0 90 for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ ) {
okano 16:fa1bd83e34b0 91 oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 );
okano 16:fa1bd83e34b0 92 }
okano 16:fa1bd83e34b0 93
okano 16:fa1bd83e34b0 94 }