8x8x8 Led Cube driven by 4x PCF8575 for the columns and 1x PCF8574 for the layers
led_cube.h@1:e08a4d27f534, 2012-11-01 (annotated)
- Committer:
- Bas
- Date:
- Thu Nov 01 22:31:54 2012 +0000
- Revision:
- 1:e08a4d27f534
- Parent:
- 0:920c5ed65a45
Added several simple graphic functions helping to create animations
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Bas | 1:e08a4d27f534 | 1 | #ifndef __LED_CUBE_H |
Bas | 1:e08a4d27f534 | 2 | #define __LED_CUBE_H |
Bas | 1:e08a4d27f534 | 3 | |
Bas | 1:e08a4d27f534 | 4 | #define VERSION 1.0 |
Bas | 1:e08a4d27f534 | 5 | |
Bas | 1:e08a4d27f534 | 6 | #include <mbed.h> |
Bas | 1:e08a4d27f534 | 7 | #include "pcf8574.h" |
Bas | 1:e08a4d27f534 | 8 | #include "pcf8575.h" |
Bas | 1:e08a4d27f534 | 9 | |
Bas | 1:e08a4d27f534 | 10 | #define AXIS_X 1 |
Bas | 1:e08a4d27f534 | 11 | #define AXIS_Y 2 |
Bas | 1:e08a4d27f534 | 12 | #define AXIS_Z 3 |
Bas | 1:e08a4d27f534 | 13 | #define PI 3.14159265 |
Bas | 1:e08a4d27f534 | 14 | #define center 3.5 |
Bas | 1:e08a4d27f534 | 15 | #define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) |
Bas | 1:e08a4d27f534 | 16 | |
Bas | 1:e08a4d27f534 | 17 | class LED_CUBE |
Bas | 1:e08a4d27f534 | 18 | { |
Bas | 1:e08a4d27f534 | 19 | public: |
Bas | 1:e08a4d27f534 | 20 | LED_CUBE(I2C* _interface); |
Bas | 1:e08a4d27f534 | 21 | ~LED_CUBE(void); |
Bas | 1:e08a4d27f534 | 22 | |
Bas | 1:e08a4d27f534 | 23 | void clear_cube(void); |
Bas | 1:e08a4d27f534 | 24 | void setVoxel(unsigned char x, unsigned char y, unsigned char z); |
Bas | 1:e08a4d27f534 | 25 | void clearVoxel(unsigned char x, unsigned char y, unsigned char z); |
Bas | 1:e08a4d27f534 | 26 | unsigned char getVoxel(unsigned char x, unsigned char y, unsigned char z); |
Bas | 1:e08a4d27f534 | 27 | void copyColumn(unsigned char x, unsigned char y, unsigned char col); |
Bas | 1:e08a4d27f534 | 28 | void alterVoxel(unsigned char x, unsigned char y, unsigned char z, unsigned char state); |
Bas | 1:e08a4d27f534 | 29 | void flipVoxel(unsigned char x, unsigned char y, unsigned char z); |
Bas | 1:e08a4d27f534 | 30 | void setPlane_x (int x); |
Bas | 1:e08a4d27f534 | 31 | void clearPlane_x (int x); |
Bas | 1:e08a4d27f534 | 32 | void setPlane_y (int y); |
Bas | 1:e08a4d27f534 | 33 | void clearPlane_y (int y); |
Bas | 1:e08a4d27f534 | 34 | void setPlane_z (int z); |
Bas | 1:e08a4d27f534 | 35 | void clearPlane_z (int z); |
Bas | 1:e08a4d27f534 | 36 | void setPlane (char axis, unsigned char i); |
Bas | 1:e08a4d27f534 | 37 | void clearPlane (char axis, unsigned char i); |
Bas | 1:e08a4d27f534 | 38 | void setSlope_XY(int x1, int y1, int x2, int y2); |
Bas | 1:e08a4d27f534 | 39 | void setSlope_XZ(int x1, int z1, int x2, int z2); |
Bas | 1:e08a4d27f534 | 40 | void setSlope_YZ(int y1, int z1, int y2, int z2); |
Bas | 1:e08a4d27f534 | 41 | void clearVoxels(void); |
Bas | 1:e08a4d27f534 | 42 | void fill (unsigned char pattern); |
Bas | 1:e08a4d27f534 | 43 | void box_filled(int x1, int y1, int z1, int x2, int y2, int z2); |
Bas | 1:e08a4d27f534 | 44 | void box_walls(int x1, int y1, int z1, int x2, int y2, int z2); |
Bas | 1:e08a4d27f534 | 45 | void box_wireframe(int x1, int y1, int z1, int x2, int y2, int z2); |
Bas | 1:e08a4d27f534 | 46 | void line(int x1, int y1, int z1, int x2, int y2, int z2); |
Bas | 1:e08a4d27f534 | 47 | void circle(int xr, int yr, int zr, int d ,char axis); |
Bas | 1:e08a4d27f534 | 48 | void CopyBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xc, int yc, int zc); |
Bas | 1:e08a4d27f534 | 49 | void MoveBlock(int x1, int y1, int z1, int x2, int y2, int z2, int xm, int ym, int zm); |
Bas | 1:e08a4d27f534 | 50 | void RotateBlock(int x1, int y1, int height, char axis, char dir); |
Bas | 1:e08a4d27f534 | 51 | |
Bas | 1:e08a4d27f534 | 52 | private: |
Bas | 1:e08a4d27f534 | 53 | PCF8574 row; |
Bas | 1:e08a4d27f534 | 54 | PCF8575 colums_0_1; |
Bas | 1:e08a4d27f534 | 55 | PCF8575 colums_2_3; |
Bas | 1:e08a4d27f534 | 56 | PCF8575 colums_4_5; |
Bas | 1:e08a4d27f534 | 57 | PCF8575 colums_6_7; |
Bas | 1:e08a4d27f534 | 58 | unsigned char cubeData[64]; |
Bas | 1:e08a4d27f534 | 59 | Ticker duty; |
Bas | 1:e08a4d27f534 | 60 | void UpdateRow(void); |
Bas | 1:e08a4d27f534 | 61 | char byteline (int start, int end); |
Bas | 1:e08a4d27f534 | 62 | unsigned char inrange(int x, int y, int z); |
Bas | 1:e08a4d27f534 | 63 | void argorder(int ix1, int ix2, int *ox1, int *ox2); |
Bas | 1:e08a4d27f534 | 64 | double map(double in, double inMin, double inMax, double outMin, double outMax); |
Bas | 1:e08a4d27f534 | 65 | }; |
Bas | 0:920c5ed65a45 | 66 | #endif |