Heroic Robotics / SD600A

Fork of SD600A by Heroic Robotics

Committer:
heroic
Date:
Wed Oct 10 03:57:16 2012 +0000
Revision:
10:d2dd5c752f7b
Parent:
8:78ba2917bfd9
Child:
11:97ef14b4c4de
Make the SD600A library kinda work.  The idle thread's too lumpy and it makes the strip flicker.  BAH.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
heroic 6:aacceefab2ea 1 // Mbed library to control SD600A-based RGB LED Strips
ehbmbed2 0:12e734116fea 2 // (c) 2011 Jelmer Tiete
ehbmbed2 0:12e734116fea 3 // This library is ported from the Arduino implementation of Adafruit Industries
ehbmbed2 0:12e734116fea 4 // found at: http://github.com/adafruit/LPD8806
ehbmbed2 0:12e734116fea 5 // and their strips: http://www.adafruit.com/products/306
ehbmbed2 0:12e734116fea 6 // Released under the MIT License: http://mbed.org/license/mit
ehbmbed2 1:6ebd3ac910b6 7 //
ehbmbed2 0:12e734116fea 8 /*****************************************************************************/
ehbmbed2 0:12e734116fea 9
heroic 4:0b75eb84a6d2 10 // Heavily modified by Jas Strong, 2012-10-04
heroic 6:aacceefab2ea 11 // Changed to use a virtual base class, drive the SD600A, and to use software SPI.
heroic 4:0b75eb84a6d2 12
ehbmbed2 0:12e734116fea 13 #include "mbed.h"
heroic 5:c2579d6415e1 14 #include "rtos.h"
heroic 4:0b75eb84a6d2 15 #include "LedStrip.h"
heroic 6:aacceefab2ea 16 #ifndef MBED_SD600A_H
heroic 6:aacceefab2ea 17 #define MBED_SD600A_H
ehbmbed2 0:12e734116fea 18
heroic 10:d2dd5c752f7b 19 #define DELAY_PERIOD (1)
heroic 8:78ba2917bfd9 20
heroic 6:aacceefab2ea 21 class SD600A : public LedStrip {
ehbmbed2 0:12e734116fea 22
ehbmbed2 0:12e734116fea 23 public:
ehbmbed2 0:12e734116fea 24
heroic 6:aacceefab2ea 25 SD600A(PinName dataPin, PinName clockPin, int n);
heroic 4:0b75eb84a6d2 26 virtual void begin(void);
heroic 4:0b75eb84a6d2 27 virtual void show(void);
heroic 4:0b75eb84a6d2 28 virtual void blank(void);
heroic 4:0b75eb84a6d2 29 virtual void setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b);
heroic 4:0b75eb84a6d2 30 virtual void setPixelB(uint16_t n, uint8_t b);
heroic 4:0b75eb84a6d2 31 virtual void setPixelG(uint16_t n, uint8_t g);
heroic 4:0b75eb84a6d2 32 virtual void setPixelR(uint16_t n, uint8_t r);
heroic 4:0b75eb84a6d2 33 virtual void setPixelColor(uint16_t n, uint32_t c);
heroic 4:0b75eb84a6d2 34 virtual uint16_t numPixels(void);
heroic 4:0b75eb84a6d2 35 virtual uint32_t Color(uint8_t, uint8_t, uint8_t);
heroic 5:c2579d6415e1 36 Mutex threadlock;
heroic 2:af5af64e114d 37 DigitalOut dat;
heroic 2:af5af64e114d 38 DigitalOut clk;
heroic 5:c2579d6415e1 39
heroic 5:c2579d6415e1 40 private:
heroic 2:af5af64e114d 41 void write(uint8_t byte);
heroic 4:0b75eb84a6d2 42 uint8_t *pixels; // Holds LED color values
heroic 4:0b75eb84a6d2 43 uint16_t numLEDs; // Number of RGB LEDs in strand
heroic 5:c2579d6415e1 44 Thread idlethread;
ehbmbed2 0:12e734116fea 45
ehbmbed2 0:12e734116fea 46 void
heroic 5:c2579d6415e1 47 writeguard(void);
ehbmbed2 0:12e734116fea 48 };
ehbmbed2 0:12e734116fea 49 #endif