Cubic Hand project for EECS 249A course.

Dependencies:   MMA8451Q TSI cc3000_hostdriver_mbedsocket NVIC_set_all_priorities mbed Multi_WS2811

Committer:
joseoyola
Date:
Mon Dec 15 23:55:15 2014 +0000
Revision:
56:f95ec9baa4cb
Changes to LedCube.h and LedCube.cpp; ; Renamed ledCube.h and ledCube.cpp to LedCube.h and LedCube.cpp, added documentation to both, added logic to move cube to allow changing size regardless of current position.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joseoyola 56:f95ec9baa4cb 1 #include "mbed.h"
joseoyola 56:f95ec9baa4cb 2 #include "WS2811.h"
joseoyola 56:f95ec9baa4cb 3 #include "CubeUpdateParameters.h"
joseoyola 56:f95ec9baa4cb 4
joseoyola 56:f95ec9baa4cb 5 #pragma once
joseoyola 56:f95ec9baa4cb 6
joseoyola 56:f95ec9baa4cb 7 class LedCube
joseoyola 56:f95ec9baa4cb 8 {
joseoyola 56:f95ec9baa4cb 9 public:
joseoyola 56:f95ec9baa4cb 10 LedCube();
joseoyola 56:f95ec9baa4cb 11 ~LedCube();
joseoyola 56:f95ec9baa4cb 12
joseoyola 56:f95ec9baa4cb 13 /*Sets the initial size and position of the lighted cube*/
joseoyola 56:f95ec9baa4cb 14 void Init(int x, int y, int z);
joseoyola 56:f95ec9baa4cb 15
joseoyola 56:f95ec9baa4cb 16 /* Returns the index of the LED given the cartesian
joseoyola 56:f95ec9baa4cb 17 * coordinates of the LED on a given panel. The origin
joseoyola 56:f95ec9baa4cb 18 * is the led at the bottom left of panel 1 when using
joseoyola 56:f95ec9baa4cb 19 * a three panel cube.
joseoyola 56:f95ec9baa4cb 20 ________
joseoyola 56:f95ec9baa4cb 21 / /|
joseoyola 56:f95ec9baa4cb 22 / 3 / |
joseoyola 56:f95ec9baa4cb 23 /_______/ 2|
joseoyola 56:f95ec9baa4cb 24 | | |
joseoyola 56:f95ec9baa4cb 25 | 1 | /
joseoyola 56:f95ec9baa4cb 26 | |
joseoyola 56:f95ec9baa4cb 27 --------
joseoyola 56:f95ec9baa4cb 28
joseoyola 56:f95ec9baa4cb 29 Z Y
joseoyola 56:f95ec9baa4cb 30 | /
joseoyola 56:f95ec9baa4cb 31 | /
joseoyola 56:f95ec9baa4cb 32 | /
joseoyola 56:f95ec9baa4cb 33 |/
joseoyola 56:f95ec9baa4cb 34 -------X */
joseoyola 56:f95ec9baa4cb 35 int getLedIndex(int panel, int x, int y);
joseoyola 56:f95ec9baa4cb 36
joseoyola 56:f95ec9baa4cb 37 /* Lights up (if on) or turns off (if !on) the LEDs on the LED cube
joseoyola 56:f95ec9baa4cb 38 * corresponding to the location of the square. All panels will show
joseoyola 56:f95ec9baa4cb 39 * the cube, with brightness depending on the distance from the
joseoyola 56:f95ec9baa4cb 40 * square to the panel.*/
joseoyola 56:f95ec9baa4cb 41 void updateLEDs(bool on, int size, int x, int y, int z);
joseoyola 56:f95ec9baa4cb 42 void updateLEDsOld(bool on, int size, int x, int y, int z);
joseoyola 56:f95ec9baa4cb 43
joseoyola 56:f95ec9baa4cb 44 /* Updates the LED cube.*/
joseoyola 56:f95ec9baa4cb 45 void cubeUpdate();
joseoyola 56:f95ec9baa4cb 46
joseoyola 56:f95ec9baa4cb 47 /* Updates the LED cube given the size, hue and offsets in the X, Y and Z axes.*/
joseoyola 56:f95ec9baa4cb 48 void UpdateCube(int size, int deltaX, int deltaY, int deltaZ, float hue);
joseoyola 56:f95ec9baa4cb 49
joseoyola 56:f95ec9baa4cb 50 /* Updates the LED cube given parameters in a CubeUpdateParameters struct.*/
joseoyola 56:f95ec9baa4cb 51 void UpdateCube2(CubeUpdateParameters cubeParams);
joseoyola 56:f95ec9baa4cb 52
joseoyola 56:f95ec9baa4cb 53 /* Moves the square inside the cube by deltaX in the x-axis,
joseoyola 56:f95ec9baa4cb 54 * by deltaY in the y-axis, and deltaZ in the z-axis. Returns
joseoyola 56:f95ec9baa4cb 55 * 1 if movement occured, and -1 if no movement occured.*/
joseoyola 56:f95ec9baa4cb 56 int move(int deltaX, int deltaY, int deltaZ);
joseoyola 56:f95ec9baa4cb 57
joseoyola 56:f95ec9baa4cb 58 /* Changes the color of the square in the LED cube to the given hue.*/
joseoyola 56:f95ec9baa4cb 59 void changeColor(float hue);
joseoyola 56:f95ec9baa4cb 60
joseoyola 56:f95ec9baa4cb 61 /* Changes the size of the square in the LED cube to the given size.
joseoyola 56:f95ec9baa4cb 62 * The minimum size is 1, corresponding to a square of a single LED.
joseoyola 56:f95ec9baa4cb 63 * A size of 2 corresponds to a 2x2 LED square, 3 corresponds to 3x3
joseoyola 56:f95ec9baa4cb 64 * and so forth. If square is on an edge, it moves accordingly in
joseoyola 56:f95ec9baa4cb 65 * order to be able to increase size.*/
joseoyola 56:f95ec9baa4cb 66 void changeSize(int newSize);
joseoyola 56:f95ec9baa4cb 67
joseoyola 56:f95ec9baa4cb 68 private:
joseoyola 56:f95ec9baa4cb 69 unsigned const X;
joseoyola 56:f95ec9baa4cb 70 unsigned const Y;
joseoyola 56:f95ec9baa4cb 71 unsigned const Z;
joseoyola 56:f95ec9baa4cb 72 int pos[3];
joseoyola 56:f95ec9baa4cb 73 int prevPos[3];
joseoyola 56:f95ec9baa4cb 74 int size;
joseoyola 56:f95ec9baa4cb 75 int prevSize;
joseoyola 56:f95ec9baa4cb 76
joseoyola 56:f95ec9baa4cb 77 float saturation;
joseoyola 56:f95ec9baa4cb 78 float brightness;
joseoyola 56:f95ec9baa4cb 79 uint8_t r;
joseoyola 56:f95ec9baa4cb 80 uint8_t g;
joseoyola 56:f95ec9baa4cb 81 uint8_t b;
joseoyola 56:f95ec9baa4cb 82 WS2811 ledStrip1;
joseoyola 56:f95ec9baa4cb 83 WS2811 ledStrip2;
joseoyola 56:f95ec9baa4cb 84
joseoyola 56:f95ec9baa4cb 85 };