| 156 | } |
| 157 | |
| 158 | void shiftUp() { |
| 159 | // fade each led by 1% |
| 160 | if (fadeToBlack.as_int()) { |
| 161 | |
| 162 | for (int i = 0; i < NUM_LEDS; ++i) { |
| 163 | auto &c = framebuffer[i]; |
| 164 | c.fadeToBlackBy(fadeToBlack.as_int()); |
| 165 | } |
| 166 | } |
| 167 | |
| 168 | for (int y = HEIGHT - 1; y > 0; --y) { |
| 169 | fl::CRGB* row1 = &framebuffer[frameBufferXY(0, y)]; |
| 170 | fl::CRGB* row2 = &framebuffer[frameBufferXY(0, y - 1)]; |
| 171 | fl::memcopy(row1, row2, WIDTH * sizeof(fl::CRGB)); |
| 172 | } |
| 173 | fl::CRGB* row = &framebuffer[frameBufferXY(0, 0)]; |
| 174 | fl::memset(row, 0, sizeof(fl::CRGB) * WIDTH); |
| 175 | } |
| 176 | |
| 177 | |
| 178 | bool doFrame() { |