Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of LedStrip_test by
Diff: main.cpp
- Revision:
- 1:1a0d5a780e57
- Parent:
- 0:109a7a5e3e6e
- Child:
- 2:590e99f4a313
--- a/main.cpp Sat Sep 21 13:07:11 2013 +0000 +++ b/main.cpp Sat Sep 21 15:21:53 2013 +0000 @@ -10,6 +10,8 @@ DigitalOut latch(p16); DigitalOut strobe(p17); +#define LENGTH 160 + uint8_t strip[160]; #define BLACK 0x80 @@ -105,6 +107,43 @@ bool fast_; }; +class WalkingFadeInOut : public Schedulable { +public: + WalkingFadeInOut(int start_time, int led, int stride, uint8_t a, uint8_t b, bool fast) + : led_(led - stride), stride_(stride), a_(a), b_(b), fast_(fast), step_(true) { + time_ = start_time; + Schedule(this); + } + + virtual void Run() { + if (step_) { + step_ = false; + if (led_ >= 0) strip[led_] = a_; + led_ += stride_; + led_ %= LENGTH; + } else { + step_ = true; + } + strip[led_] = getcolor(a_, b_); + if (fast_) { + strip[led_] |= 0x40; + time_ += 128; + } else { + time_ += 256; + } + strip_changed = true; + swap(a_,b_); + Schedule(this); + } + +private: + int led_, stride_; + uint8_t a_,b_; + bool fast_, step_; + +}; + + int main() { Ticker t; pc.baud(115200); @@ -118,13 +157,18 @@ myled = 1; memset(strip, 0x80, sizeof(strip)); write_strip(strip, sizeof(strip)); - t.attach(&tick_cb, 1.0/400); + t.attach(&tick_cb, 1.0/1000); memset(strip, 0x0, sizeof(strip)); - new RepeatedFadeInOut(0, 0, BLACK, RED, false); + /*new RepeatedFadeInOut(0, 0, BLACK, RED, false); new RepeatedFadeInOut(171, 1, BLACK, RED, false); new RepeatedFadeInOut(341, 2, BLACK, RED, false); +*/ + int stride = 7; + for (int i = 0; i < stride; i++) { + new WalkingFadeInOut((256 * i / stride), i, stride, BLACK, GREEN, true); + } while(1) { while (task_list.empty() || global_tick < task_list.top()->time_) { @@ -143,7 +187,7 @@ strip[2] = BLUE; strip[3] = getcolor(BLACK, RED); - write_strip(strip, sizeof(strip)); + (strip, sizeof(strip)); myled = 1; int count = 0;