Tedd OKANO / Mbed 2 deprecated MARY_CAMERA_Hello

Dependencies:   MARY_CAMERA NokiaLCD mbed

Committer:
okano
Date:
Tue Mar 11 08:49:43 2014 +0000
Revision:
24:c74b706c25d6
Parent:
23:8471197d3096
Child:
25:185159c780d6
colorbar demo

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 23:8471197d3096 5 #if defined( TARGET_MBED_LPC1768 ) || defined( TARGET_LPC11U24_401 ) || defined( TARGET_LPC11XX )
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 23:8471197d3096 19 BusOut led( LED4, LED3, LED2, LED1 );
okano 1:ce27bc7b44d4 20
okano 9:68408189efde 21 #define X_OFFSET ((MARY_CAMERA::PIXEL_PER_LINE - MARMEX_OB_oled::WIDTH ) / 2)
okano 23:8471197d3096 22 #define Y_OFFSET (camera.vertical_size - MARMEX_OB_oled::HEIGHT) / 2
okano 9:68408189efde 23
okano 23:8471197d3096 24 void copy_image_to_oled( void );
okano 9:68408189efde 25 void line_mirroring( short *buf );
okano 10:3c8fc9569377 26 void save_still_image( char *file_name );
okano 16:fa1bd83e34b0 27 void oled_test_screen( void );
okano 0:1062142e5718 28
okano 23:8471197d3096 29 #define SIZES_OF_STILL_PICTURE
okano 23:8471197d3096 30
okano 0:1062142e5718 31 int main()
okano 0:1062142e5718 32 {
okano 6:f5b4e088087b 33 led = 0x3;
okano 6:f5b4e088087b 34
okano 1:ce27bc7b44d4 35 oled1.cls();
okano 16:fa1bd83e34b0 36 oled_test_screen();
okano 1:ce27bc7b44d4 37
okano 23:8471197d3096 38 #if defined( TARGET_MBED_LPC1768 )
okano 23:8471197d3096 39
okano 23:8471197d3096 40 #ifdef SIZES_OF_STILL_PICTURE
okano 23:8471197d3096 41 led = 0x1;
okano 23:8471197d3096 42 camera.init( MARY_CAMERA::QCIF );
okano 23:8471197d3096 43 save_still_image( "i_qcif.bmp" );
okano 23:8471197d3096 44
okano 23:8471197d3096 45 led = 0x2;
okano 23:8471197d3096 46 camera.init( MARY_CAMERA::QQVGA );
okano 23:8471197d3096 47 save_still_image( "i_qqvga.bmp" );
okano 0:1062142e5718 48
okano 23:8471197d3096 49 led = 0x4;
okano 23:8471197d3096 50 camera.init( MARY_CAMERA::QVGA );
okano 23:8471197d3096 51 save_still_image( "i_qvga.bmp" );
okano 23:8471197d3096 52
okano 23:8471197d3096 53 led = 0x8;
okano 23:8471197d3096 54 camera.init( MARY_CAMERA::VGA );
okano 23:8471197d3096 55 save_still_image( "i_vga.bmp" );
okano 23:8471197d3096 56
okano 23:8471197d3096 57 camera.init( MARY_CAMERA::QCIF );
okano 23:8471197d3096 58 #endif
okano 23:8471197d3096 59
okano 12:6ddd07d59c55 60 #endif
okano 10:3c8fc9569377 61
okano 24:c74b706c25d6 62 int count = 0;
okano 24:c74b706c25d6 63
okano 0:1062142e5718 64 while ( 1 ) {
okano 7:380026dd09fd 65 led = 0x1;
okano 23:8471197d3096 66 copy_image_to_oled();
okano 24:c74b706c25d6 67
okano 24:c74b706c25d6 68 camera.colorbar( ((count++ >> 2) & 0x1) ? MARY_CAMERA::ON : MARY_CAMERA::OFF );
okano 24:c74b706c25d6 69
okano 6:f5b4e088087b 70 led = 0x2;
okano 0:1062142e5718 71 }
okano 0:1062142e5718 72 }
okano 6:f5b4e088087b 73
okano 9:68408189efde 74
okano 23:8471197d3096 75 void copy_image_to_oled( void )
okano 23:8471197d3096 76 {
okano 23:8471197d3096 77 short buf[ MARMEX_OB_oled::WIDTH ];
okano 23:8471197d3096 78
okano 23:8471197d3096 79 camera.open_transfer();
okano 23:8471197d3096 80
okano 23:8471197d3096 81 for ( int line = 0; line < MARMEX_OB_oled::HEIGHT; line++ ) {
okano 23:8471197d3096 82 camera.transfer_a_line( buf, line + (camera.vertical_size() - MARMEX_OB_oled::HEIGHT) / 2, (camera.horizontal_size() - MARMEX_OB_oled::WIDTH ) / 2, MARMEX_OB_oled::WIDTH );
okano 23:8471197d3096 83 line_mirroring( buf );
okano 23:8471197d3096 84 oled1.blit565( 0, line, MARMEX_OB_oled::WIDTH, 1, buf );
okano 23:8471197d3096 85 }
okano 23:8471197d3096 86
okano 23:8471197d3096 87 camera.close_transfer();
okano 23:8471197d3096 88 }
okano 23:8471197d3096 89
okano 23:8471197d3096 90
okano 9:68408189efde 91 void line_mirroring( short *buf )
okano 9:68408189efde 92 {
okano 9:68408189efde 93 short tmp;
okano 9:68408189efde 94
okano 9:68408189efde 95 for ( int i = 0; i < (MARMEX_OB_oled::WIDTH / 2); i++ ) {
okano 9:68408189efde 96 tmp = buf[ i ];
okano 9:68408189efde 97 buf[ i ] = buf[ (MARMEX_OB_oled::WIDTH - 1) - i ];
okano 9:68408189efde 98 buf[ (MARMEX_OB_oled::WIDTH - 1) - i ] = tmp;
okano 9:68408189efde 99 }
okano 10:3c8fc9569377 100 }
okano 10:3c8fc9569377 101
okano 10:3c8fc9569377 102
okano 16:fa1bd83e34b0 103 void oled_test_screen( void )
okano 16:fa1bd83e34b0 104 {
okano 16:fa1bd83e34b0 105 oled1.background( 0x000000 );
okano 16:fa1bd83e34b0 106 oled1.cls();
okano 16:fa1bd83e34b0 107
okano 16:fa1bd83e34b0 108 int colorbar_width = MARMEX_OB_oled::WIDTH / 8;
okano 16:fa1bd83e34b0 109
okano 16:fa1bd83e34b0 110 for ( int i = 0; i < 8; i++ )
okano 16:fa1bd83e34b0 111 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 112
okano 16:fa1bd83e34b0 113 oled1.fill( 50, 50, 64, 64, 0xCCCCCC );;
okano 16:fa1bd83e34b0 114
okano 16:fa1bd83e34b0 115 oled1.locate( 0, 2 );
okano 16:fa1bd83e34b0 116 oled1.printf( "MaryCemara test" );
okano 22:d5e24ab4afb7 117 oled1.locate( 0, 3 );
okano 22:d5e24ab4afb7 118 oled1.printf( "%s", (MARY_CAMERA::NO_ERROR == camera.ready()) ? "Camera is ready" : "No Camera found" );
okano 16:fa1bd83e34b0 119 oled1.locate( 0, 4 );
okano 22:d5e24ab4afb7 120 oled1.printf( "%s", "saving into BMP" );
okano 23:8471197d3096 121 oled1.locate( 0, 5 );
okano 23:8471197d3096 122 oled1.printf( "%d", camera.horizontal_size() );
okano 23:8471197d3096 123 oled1.locate( 0, 6 );
okano 23:8471197d3096 124 oled1.printf( "%d", camera.vertical_size() );
okano 23:8471197d3096 125
okano 16:fa1bd83e34b0 126
okano 21:a2ac746dd516 127 for (int i = 0; i < MARMEX_OB_oled::WIDTH; i++ )
okano 16:fa1bd83e34b0 128 oled1.pixel( i, 80 + sin( (float)i / 5.0 ) * 10, 0x000000 );
okano 21:a2ac746dd516 129 }
okano 21:a2ac746dd516 130
okano 21:a2ac746dd516 131
okano 10:3c8fc9569377 132 #include "bmp_handler.h"
okano 10:3c8fc9569377 133
okano 10:3c8fc9569377 134 void save_still_image( char *file_name )
okano 10:3c8fc9569377 135 {
okano 23:8471197d3096 136 short buf[ camera.horizontal_size() ];
okano 10:3c8fc9569377 137
okano 23:8471197d3096 138 if ( open_BMP( file_name, camera.horizontal_size(), camera.vertical_size() ) )
okano 10:3c8fc9569377 139 return;
okano 10:3c8fc9569377 140
okano 10:3c8fc9569377 141 camera.open_transfer();
okano 10:3c8fc9569377 142
okano 23:8471197d3096 143 for ( int line = (camera.vertical_size() - 1); 0 <= line; line-- ) {
okano 23:8471197d3096 144 camera.transfer_a_line( buf, line, 0, camera.horizontal_size() );
okano 23:8471197d3096 145 write_BMP( buf, camera.horizontal_size() );
okano 10:3c8fc9569377 146 }
okano 10:3c8fc9569377 147 camera.close_transfer();
okano 11:149993faf2be 148
okano 10:3c8fc9569377 149 close_BMP();
okano 21:a2ac746dd516 150 }