A class library for "mbeduino" + "4x4x4 LED Cube shield" demo. \\ There are two demo programs for this library available. Please find those at...\\ (1) Very simplified demo sample code : \\ http://mbed.org/users/okano/programs/LED_Cube444_mbeduino-very_simple_demo/\\ (2) More complex (fancy) demo : \\ http://mbed.org/users/okano/programs/LED_Cube444_mbeduino_demo/\\ Another application code is available for hardware test...\\ http://mbed.org/users/okano/programs/mbeduino_LED_Cube444_test/\\ About the hardware :\\ http://mbed.org/users/okini3939/notebook/mbeduino/ \\ http://www.galileo-7.com/?pid=20015630 \\ - * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\\ "mbeduino" + "4x4x4 LED Cube shield"のデモ用に作成したクラスライブラリです.\\ このクラスライブラリには2つのデモ・プログラム(サンプル・コード)が用意されています.\\ (1) 単純化したデモ・サンプル\\ http://mbed.org/users/okano/programs/LED_Cube444_mbeduino-very_simple_demo/\\ (2) 点灯バリエーションを盛り込んだデモ\\ http://mbed.org/users/okano/programs/LED_Cube444_mbeduino_demo/\\ またこれとは別に,ハードウェアのテスト用のコードを公開してあります\\ http://mbed.org/users/okano/programs/mbeduino_LED_Cube444_test/\\ ハードウェアについては以下のリンクを参照下さい\\ http://mbed.org/users/okini3939/notebook/mbeduino/ \\ http://www.galileo-7.com/?pid=20015630 \\

LED_Cube444.h

Committer:
okano
Date:
2010-10-14
Revision:
0:6c57a47e2079
Child:
1:86d2cad72832

File content as of revision 0:6c57a47e2079:

/** mbeduino demo code (with 4x4x4 LED Cube shield)
 *
 *      This is a simple demo code of mbeduino + 4x4x4 LED Cube shield
 * 
 *      mbeduino              = http://mbed.org/users/okini3939/notebook/mbeduino/  (Japanese)
 *      4x4x4 LED Cube shield = http://www.galileo-7.com/?pid=20015630  (Japanese)
 *
 *      Released under the MIT License: http://mbed.org/license/mit
 *
 *      revision 0.5  14-Oct-2010   1st release
 */

#ifndef _LED_Cube
#define _LED_Cube

#include "mbed.h"
#include "mbeduino_shield.h"

typedef     unsigned short  U16;    //  bit length should be same or more than SR_BIT_LENGTH

#define     CUBE_SIZE       4                       //  n of nodes on one edge
#define     SR_BIT_LENGTH   (CUBE_SIZE * CUBE_SIZE) //  n of bits on one layer

#define     SR_DATA_OUT     ARD_D2  //  data line to the shiftregister
#define     SR_CLCK_OUT     ARD_D3  //  clock line to the shiftregister
#define     CATHODE0        ARD_D11 //  cathode control line for bottom layer
#define     CATHODE1        ARD_D10 //  cathode control line for 2nd layer from bottom
#define     CATHODE2        ARD_D9  //  cathode control line for 3nd layer from bottom
#define     CATHODE3        ARD_D8  //  cathode control line for top layer

#define     DISPLAY_REFRESH_RETE    0.002

/**    LED_Cube444
 *  
 *        
 */

class LED_Cube444 {
public:
    LED_Cube444();
    void set_bits( U16 v[4] );
    void set_bits( int layer, U16 v );
    void set_bit( int x, int y, int z, U16 v );
    void clear( void );
    void all_on( void );
    void set_all_words( int v );
    void set_synchronous_draw( int v );

private:
    DigitalOut  sr_data;
    DigitalOut  sr_clk;
    BusOut      cathode;
    Ticker      t;
    U16         main_buffer[ CUBE_SIZE ];
    U16         temp_buffer[ CUBE_SIZE ];
    int         syncronous;

    void display( void );
    void set_serialregister( U16 v );
    void buffer_copy( U16 *src, U16 *trg );
};

#endif  // _LED_Cube