Simple single-color 8x8x8 LED Cube with AVRs
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

visualizer.c 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. /*
  2. * visualizer.c
  3. *
  4. * Copyright 2011 Thomas Buck <xythobuz@me.com>
  5. * Copyright 2011 Max Nuding <max.nuding@gmail.com>
  6. * Copyright 2011 Felix Bäder <baeder.felix@gmail.com>
  7. *
  8. * This file is part of LED-Cube.
  9. *
  10. * LED-Cube is free software: you can redistribute it and/or modify
  11. * it under the terms of the GNU General Public License as published by
  12. * the Free Software Foundation, either version 3 of the License, or
  13. * (at your option) any later version.
  14. *
  15. * LED-Cube is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with LED-Cube. If not, see <http://www.gnu.org/licenses/>.
  22. */
  23. #include <avr/io.h>
  24. #include <stdint.h>
  25. #include <visualizer.h>
  26. #include <cube.h>
  27. #include <buffhelp.h>
  28. void simpleVisualization(uint8_t *data);
  29. void fullDepthVisualization(uint8_t *data);
  30. #define NUMOFVISUALIZATIONS 2
  31. void (*visualizations[NUMOFVISUALIZATIONS])(uint8_t *data) = { &simpleVisualization,
  32. &fullDepthVisualization };
  33. uint8_t numberOfVisualizations(void) {
  34. return NUMOFVISUALIZATIONS;
  35. }
  36. void runVisualization(uint8_t *data, uint8_t id) {
  37. if (id < NUMOFVISUALIZATIONS)
  38. visualizations[id](data);
  39. }
  40. void simpleVUMeter(uint8_t *data, uint8_t *buff, uint8_t z) {
  41. uint8_t i, h, max;
  42. for(i = 0; i < 7; i++) {
  43. max = data[i] / 31;
  44. for (h = 0; h < max; h++) {
  45. if (i == 0) {
  46. buffSetPixel(buff, i, h / 2, z);
  47. }
  48. buffSetPixel(buff, i + 1, h, z);
  49. }
  50. }
  51. }
  52. void simpleVisualization(uint8_t *data) {
  53. uint8_t *buff;
  54. buff = buffNew();
  55. buffClearAllPixels(buff);
  56. simpleVUMeter(data, buff, 7);
  57. setImage(buff);
  58. buffFree(buff);
  59. }
  60. void fullDepthVisualization(uint8_t *data) {
  61. uint8_t *buff;
  62. uint8_t i;
  63. buff = buffNew();
  64. buffClearAllPixels(buff);
  65. for (i = 0; i < 8; i++) {
  66. simpleVUMeter(data, buff, i);
  67. }
  68. setImage(buff);
  69. buffFree(buff);
  70. }