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.
Dependencies: PololuLedStrip mbed
main.cpp
- Committer:
 - DavidEGrayson
 - Date:
 - 2016-09-08
 - Revision:
 - 4:101a39472379
 - Parent:
 - 3:972edaeae65c
 - Child:
 - 5:8162bfbd47a1
 
File content as of revision 4:101a39472379:
#include "mbed.h"
#include "PololuLedStrip.h"
PololuLedStrip ledStrip(D8);
#define LED_COUNT 155
rgb_color colors[LED_COUNT];
Timer timer;
// Converts a color from the HSV representation to RGB.
rgb_color hsvToRgb(float h, float s, float v)
{
    int i = floor(h * 6);
    float f = h * 6 - i;
    float p = v * (1 - s);
    float q = v * (1 - f * s);
    float t = v * (1 - (1 - f) * s);
    float r = 0, g = 0, b = 0;
    switch(i % 6){
        case 0: r = v; g = t; b = p; break;
        case 1: r = q; g = v; b = p; break;
        case 2: r = p; g = v; b = t; break;
        case 3: r = p; g = q; b = v; break;
        case 4: r = t; g = p; b = v; break;
        case 5: r = v; g = p; b = q; break;
    }
    return (rgb_color){r * 255, g * 255, b * 255};
}
int main()
{
    timer.start();
    while(1)
    {
        // Update the colors array.
        uint32_t time = timer.read_ms();       
        for(int i = 0; i < LED_COUNT; i++)
        {
            uint8_t phase = (time >> 4) - (i << 2);
            colors[i] = hsvToRgb(phase / 256.0, 1.0, 1.0);
        }
    
        // Send the colors to the LED strip.
        ledStrip.write(colors, LED_COUNT);
        wait_ms(10);
    }
}