library to drive dotstar strip

Fork of DotStar by Suga koubou

Files at this revision

API Documentation at this revision

Comitter:
Nathan Yonkee
Date:
Fri Aug 11 12:29:35 2017 -0600
Parent:
17:87705cdd3f70
Commit message:
make into library

Changed in this revision

main.cpp Show diff for this revision Revisions of this file
--- a/main.cpp	Fri Aug 11 12:28:51 2017 -0600
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,156 +0,0 @@
-#include "mbed.h"
-#include "rtos.h"
-
-RawSerial  dev(PA_9, PA_10);
-SPI spiOne(PB_5, PB_4, PB_3);
-SPI spiTwo(PA_7, PA_6, PA_5);
-const int nLedsA = 455;
-const int nLedsB = 455;
-enum Init {brightness = 4, frequency = 500000, red = 35, green = 3, blue = 0, baud = 9600};
-
-class DotStar {
-    SPI* const spi_;
-    const int ledNum_;
-    int brightness_;
-    int colors_[3];
-  public:
-    enum { red = 0, green = 1, blue = 2 };
-    enum { redIndex = 2, greenIndex = 3, blueIndex = 4 };
-    enum {off = 0, dim = 8, half = 16, brightest = 31};
-    enum {pause = 100, sleep = 2000};
-    enum cmdType : char {
-        setColor = '!',
-        onOff = 'o',
-        switchStrip = 's'
-    };
-    void set_color(const int color, const int val);
-    void set_leds();
-    DotStar(SPI* const spi, const int nLeds);
-    void set_brightness(const int brightness);
-};
-
-struct RedGreenBlue {
-    int red, green, blue;
-};
-
-class DotStarPair {
-    DotStar* left;
-    DotStar* right;
-  public:
-    DotStarPair(DotStar* l, DotStar* r);
-    void set_brightness(const int brightness);
-    void set_rgb(const RedGreenBlue& rgb);
-};
-
-DotStarPair::DotStarPair(DotStar* l, DotStar* r) : left(l), right(r) {}
-
-void DotStarPair::set_brightness(const int brightness) {
-    left->set_brightness(brightness);
-    left->set_leds();
-    right->set_brightness(brightness);
-    right->set_leds();
-};
-
-void DotStarPair::set_rgb(const RedGreenBlue& rgb) {
-    left->set_color(DotStar::blue, rgb.blue);
-    left->set_color(DotStar::red, rgb.red);
-    left->set_color(DotStar::green, rgb.green);
-    left->set_leds();
-    right->set_color(DotStar::blue, rgb.blue);
-    right->set_color(DotStar::red, rgb.red);
-    right->set_color(DotStar::green, rgb.green);
-    right->set_leds();
-};
-
-DotStar::DotStar(SPI* const spi, const int nLeds) : spi_(spi), ledNum_(nLeds),
-    brightness_(Init::brightness) {
-    spi_->frequency(Init::frequency);
-    colors_[DotStar::red] = Init::red;
-    colors_[DotStar::blue] = Init::blue;
-    colors_[DotStar::green] = Init::green;
-    set_leds();
-}
-
-
-void DotStar::set_leds() {
-    const int brightnessFrame = (7<<5)|brightness_;
-    const int blueFrame = (colors_[DotStar::blue] ) & 0xff;
-    const int greenFrame = (colors_[DotStar::green]) & 0xff;
-    const int redFrame = colors_[DotStar::red] & 0xff;
-    int i;
-    Thread::wait(DotStar::pause);
-    for (i = 4; i --> 0; spi_->write(0)) { } // start frame
-    for (i = 0; i < ledNum_ ; ++i) {
-        spi_->write(brightnessFrame); // led frame
-        spi_->write(blueFrame); // B
-        spi_->write(greenFrame); // G
-        spi_->write(redFrame); // R
-    }
-    for (i = 4; i --> 0; spi_->write(1)) { } // end frame
-}
-
-void DotStar::set_brightness(const int brightness) {
-    brightness_ = brightness;
-}
-
-void DotStar::set_color(const int c, const int val) {
-    colors_[c] = val;
-};
-
-DotStar dotStarA(&spiOne, nLedsA);
-DotStar dotStarB(&spiTwo, nLedsB);
-
-DotStarPair strips(&dotStarA, &dotStarB);
-
-int main() {
-    dev.baud(Init::baud);
-    for (int i = 1; i < DotStar::brightest; i += 4) {
-        strips.set_brightness(i);
-    }
-    bool sleeping = false;
-#define STR_BUFF_SIZE_VAR 6
-    char bleCmdString[STR_BUFF_SIZE_VAR] = {};
-    for (; ; ) {
-        for (int i = 0; i < STR_BUFF_SIZE_VAR; i++) {
-            bleCmdString[i] = 0;
-        }
-        dev.putc('a');
-        strips.set_brightness(DotStar::half);
-        int i = 0;
-        int j = 0;
-        while (i < STR_BUFF_SIZE_VAR) {
-            while(dev.readable()) {
-                bleCmdString[i] = dev.getc();
-                ++i;
-            }
-            if(j++ > 30000000) break;
-        }
-        /* strips.set_brightness(DotStar::dim); */
-        auto cmdPrefix = bleCmdString[0];
-        if (cmdPrefix == DotStar::cmdType::setColor) {
-            RedGreenBlue rgb;
-            rgb.red = (int)(bleCmdString[DotStar::redIndex]);
-            rgb.green = (int)(bleCmdString[DotStar::greenIndex]);
-            rgb.blue = (int)(bleCmdString[DotStar::blueIndex]);
-            strips.set_rgb(rgb);
-            /* strips.set_brightness(DotStar::half); */
-            /* Thread::wait(DotStar::sleep); */
-        } else if (cmdPrefix == DotStar::cmdType::onOff) {
-            sleeping = true;
-            strips.set_brightness(DotStar::dim);
-            Thread::wait(DotStar::pause);
-        }
-        while (sleeping) {
-            strips.set_brightness(DotStar::off);
-            Thread::wait(DotStar::sleep);
-            while (dev.readable()) {
-                if (dev.getc() == DotStar::cmdType::onOff) {
-                    sleeping = false;
-                    strips.set_brightness(DotStar::dim);
-                    Thread::wait(DotStar::pause);
-                }
-            }
-        }
-    }
-
-}