8x8x8 Led Cube driven by 4x PCF8575 for the columns and 1x PCF8574 for the layers
led_cube.h
- Committer:
- Bas
- Date:
- 2012-11-01
- Revision:
- 1:e08a4d27f534
- Parent:
- 0:920c5ed65a45
File content as of revision 1:e08a4d27f534:
#ifndef __LED_CUBE_H #define __LED_CUBE_H #define VERSION 1.0 #include <mbed.h> #include "pcf8574.h" #include "pcf8575.h" #define AXIS_X 1 #define AXIS_Y 2 #define AXIS_Z 3 #define PI 3.14159265 #define center 3.5 #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) class LED_CUBE { public: LED_CUBE(I2C* _interface); ~LED_CUBE(void); void clear_cube(void); void setVoxel(unsigned char x, unsigned char y, unsigned char z); void clearVoxel(unsigned char x, unsigned char y, unsigned char z); unsigned char getVoxel(unsigned char x, unsigned char y, unsigned char z); void copyColumn(unsigned char x, unsigned char y, unsigned char col); void alterVoxel(unsigned char x, unsigned char y, unsigned char z, unsigned char state); void flipVoxel(unsigned char x, unsigned char y, unsigned char z); void setPlane_x (int x); void clearPlane_x (int x); void setPlane_y (int y); void clearPlane_y (int y); void setPlane_z (int z); void clearPlane_z (int z); void setPlane (char axis, unsigned char i); void clearPlane (char axis, unsigned char i); void setSlope_XY(int x1, int y1, int x2, int y2); void setSlope_XZ(int x1, int z1, int x2, int z2); void setSlope_YZ(int y1, int z1, int y2, int z2); void clearVoxels(void); void fill (unsigned char pattern); void box_filled(int x1, int y1, int z1, int x2, int y2, int z2); void box_walls(int x1, int y1, int z1, int x2, int y2, int z2); void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2); void line(int x1, int y1, int z1, int x2, int y2, int z2); void circle(int xr, int yr, int zr, int d ,char axis); void CopyBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xc, int yc, int zc); void MoveBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xm, int ym, int zm); void RotateBlock(int x1, int y1, int height, char axis, char dir); private: PCF8574 row; PCF8575 colums_0_1; PCF8575 colums_2_3; PCF8575 colums_4_5; PCF8575 colums_6_7; unsigned char cubeData[64]; Ticker duty; void UpdateRow(void); char byteline (int start, int end); unsigned char inrange(int x, int y, int z); void argorder(int ix1, int ix2, int *ox1, int *ox2); double map(double in, double inMin, double inMax, double outMin, double outMax); }; #endif