Heroic Robotics / SD600A

Fork of SD600A by Heroic Robotics

Committer:
heroic
Date:
Sat Oct 13 01:26:20 2012 +0000
Revision:
24:d8d960a7124e
Parent:
23:2e60470dd134
Child:
26:98163818a82e
Change interrupt interval to 60 usec.

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 24:d8d960a7124e 19 #define INTERRUPT_INTERVAL (60)
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 23:2e60470dd134 36 virtual uint32_t total_luminance(void);
heroic 5:c2579d6415e1 37
heroic 5:c2579d6415e1 38 private:
heroic 2:af5af64e114d 39 void write(uint8_t byte);
heroic 16:910bf46f2ce4 40 uint8_t *pixels; // Holds LED color values; also, SPI buffer.
heroic 16:910bf46f2ce4 41 uint32_t data_length; // used by SPI ISR
heroic 16:910bf46f2ce4 42 uint32_t bit_index; // used by SPI ISR
heroic 16:910bf46f2ce4 43 uint32_t byte_index;
heroic 16:910bf46f2ce4 44 uint16_t numLEDs; // Number of RGB LEDs in strand
heroic 11:97ef14b4c4de 45 Ticker idletoggle;
heroic 18:a61600110235 46 void spi_isr(void); // toggles the clock to keep PWM working.
heroic 23:2e60470dd134 47 DigitalOut dat;
heroic 23:2e60470dd134 48 DigitalOut clk;
ehbmbed2 0:12e734116fea 49
ehbmbed2 0:12e734116fea 50 void
heroic 5:c2579d6415e1 51 writeguard(void);
ehbmbed2 0:12e734116fea 52 };
ehbmbed2 0:12e734116fea 53 #endif