Library to control NeoPixel strings of RGB leds
Dependents: NeoPixelI2cSlave NeoPixelI2cSlave
shift_effect.cpp
00001 #include "shift_effect.h" 00002 #include "colors.h" 00003 00004 namespace Effects { 00005 00006 ShiftEffect::ShiftEffect(NeoPixelString * pixelstring, neopixel::Pixel color, int delay_ms, int groupsize) 00007 : PeriodicEffect(pixelstring, color, delay_ms) { 00008 00009 this->groupsize = groupsize; 00010 state = FIRST_TIME; 00011 } 00012 00013 void ShiftEffect::execute(void) { 00014 if (shouldExecute()) { 00015 clearExecute(); 00016 if (state == FIRST_TIME) { 00017 for (unsigned i = 0; i < getPixelString()->getLength(); i++) { 00018 if (i % groupsize == 0) { 00019 getPixelString()->setPixel(i, getColor()); 00020 } else { 00021 getPixelString()->setPixel(i, Colors::Black); 00022 } 00023 } 00024 00025 state = RUNNING; 00026 } else { 00027 00028 unsigned int i = 0; 00029 neopixel::Pixel pix; 00030 neopixel::Pixel first; 00031 00032 while (i < getPixelString()->getLength()) { 00033 unsigned int group = i / groupsize; 00034 00035 if (i % groupsize == 0) { 00036 first = getPixelString()->getPixel(i); 00037 } 00038 00039 if (i == ((group+1)*groupsize)-1) { // last pix in group 00040 getPixelString()->setPixel(i, first); 00041 } else { 00042 pix = getPixelString()->getPixel(i+1); 00043 getPixelString()->setPixel(i, pix); 00044 } 00045 00046 i++; 00047 } 00048 00049 } 00050 getPixelString()->update(); 00051 } 00052 } 00053 00054 };
Generated on Fri Jul 15 2022 00:27:27 by 1.7.2