PlatformIO package of the Teensy core framework compatible with GCC 10 & C++20
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

64 行
1.9KB

  1. /*
  2. Setting grayscale from progmem to save RAM. If you want to play
  3. multiple "frames", (an animation), see the BasicAnimations Example.
  4. See the BasicUse example for hardware setup.
  5. Alex Leone <acleone ~AT~ gmail.com>, 2009-02-03 */
  6. #include "Tlc5940.h"
  7. // Extended functions (they start with tlc_...) require another include
  8. #include "tlc_progmem_utils.h"
  9. /*
  10. This is an array in program memory. Program memory is 16kB instead of
  11. 1024 bytes for regular variables in SRAM.
  12. The format for this array is
  13. GS_DUO(OUT15, OUT14), ... GS_DUO(OUT1, OUT0)
  14. If you have more than one TLC, the format is
  15. GS_DUO(TLC2.OUT15, TLC2.OUT14), ... GS_DUO(TLC2.OUT1, TLC2.OUT0),
  16. GS_DUO(TLC1.OUT15, TLC1.OUT14), ... GS_DUO(TLC1.OUT1, TLC1.OUT0)
  17. The pattern below will only work with 1 TLC. Copy + Paste the 4 lines
  18. inside the curly brackets for each additional TLC. */
  19. const unsigned int TlcMax = 4095;
  20. const uint8_t gsArray1[NUM_TLCS * 24] PROGMEM = {
  21. GS_DUO((TlcMax * 16)/16, (TlcMax * 15)/16), GS_DUO((TlcMax * 14)/16, (TlcMax * 13)/16),
  22. GS_DUO((TlcMax * 12)/16, (TlcMax * 11)/16), GS_DUO((TlcMax * 10)/16, (TlcMax * 9)/16),
  23. GS_DUO((TlcMax * 8)/16, (TlcMax * 7)/16), GS_DUO((TlcMax * 6)/16, (TlcMax * 5)/16),
  24. GS_DUO((TlcMax * 4)/16, (TlcMax * 3)/16), GS_DUO((TlcMax * 2)/16, (TlcMax * 1)/16),
  25. };
  26. void setup()
  27. {
  28. Tlc.init();
  29. }
  30. void loop()
  31. {
  32. // Display the pattern (brightness ramp over the outputs)
  33. tlc_setGSfromProgmem(gsArray1);
  34. Tlc.update();
  35. // Fade each channel to zero
  36. for (TLC_CHANNEL_TYPE channel = 0; channel < NUM_TLCS * 16; channel++) {
  37. int16_t initialValue = Tlc.get(channel);
  38. while (initialValue > 0) {
  39. initialValue -= 5;
  40. if (initialValue < 0) {
  41. initialValue = 0;
  42. }
  43. Tlc.set(channel, initialValue);
  44. // wait until the data has been sent to the TLCs before continuing
  45. while (Tlc.update());
  46. }
  47. }
  48. }