I2c slave device to control NeoPixel strings
Dependencies: NeoPixelString SimplyLog
Example program
#include "mbed.h" #include "neopixel_string.h" #include "i2c_device.h" #include "neopixel_string_factory.h" #include "neopixel_i2c_daemon.h" // This must be an SPI MOSI pin. #define DATA_PIN p5 #define STRING_SIZE 8 #define DEBUG_MODE 1 #include "log.h" Serial pc(USBTX, USBRX); // tx, rx int main() { pc.baud(115200); SimplyLog::Log::i("Neopixel driver loading\r\n"); I2cSettings settings; settings.frequency = 100000; settings.address = 0x80; SimplyLog::Log::i("Slave is working @ %dHz\r\n", settings.frequency); SimplyLog::Log::i("Slave is working @ SLAVE_ADDRESS = 0x%x\r\n", settings.address); SimplyLog::Log::i("Creating NeoPixel String\r\n"); NeoPixelString * first_string = NeoPixelStringFactory::createNeoPixelString(DATA_PIN, STRING_SIZE); SimplyLog::Log::i("Creating I2cDevice\r\n"); I2cDevice i2c(p28, p27, &settings); SimplyLog::Log::i("Creating NeoPixel I2c Daemon\r\n"); NeoPixelI2cDaemon neo(&i2c, LED1); neo.attachPixelString(first_string); SimplyLog::Log::i("Listening in blocking mode\r\n"); neo.listen(true); while(1) { } }
neopixel_i2c_daemon.h@2:e0269262d1f2, 2015-10-25 (annotated)
- Committer:
- dwini
- Date:
- Sun Oct 25 11:36:21 2015 +0000
- Revision:
- 2:e0269262d1f2
- Parent:
- 0:3a31c84ed525
Add alive led to i2c daemon
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dwini | 0:3a31c84ed525 | 1 | #pragma once |
dwini | 0:3a31c84ed525 | 2 | |
dwini | 0:3a31c84ed525 | 3 | #include "i2c_device.h" |
dwini | 0:3a31c84ed525 | 4 | #include "neopixel_string.h" |
dwini | 0:3a31c84ed525 | 5 | #include <vector> |
dwini | 0:3a31c84ed525 | 6 | |
dwini | 0:3a31c84ed525 | 7 | enum I2cCommand { OFF = 0x01, DIAGNOSTIC = 0x02, SINGLE_COLOR = 0x03 }; |
dwini | 0:3a31c84ed525 | 8 | |
dwini | 0:3a31c84ed525 | 9 | class NeoPixelI2cDaemon { |
dwini | 0:3a31c84ed525 | 10 | |
dwini | 0:3a31c84ed525 | 11 | private: |
dwini | 0:3a31c84ed525 | 12 | I2cDevice * i2c; |
dwini | 0:3a31c84ed525 | 13 | std::vector<NeoPixelString *> pixelstrings; |
dwini | 2:e0269262d1f2 | 14 | int cAlive; // Counter for alive led |
dwini | 2:e0269262d1f2 | 15 | DigitalOut alive; |
dwini | 0:3a31c84ed525 | 16 | |
dwini | 0:3a31c84ed525 | 17 | public: |
dwini | 2:e0269262d1f2 | 18 | NeoPixelI2cDaemon(I2cDevice * i2c, PinName alive_pin); |
dwini | 0:3a31c84ed525 | 19 | |
dwini | 0:3a31c84ed525 | 20 | public: |
dwini | 0:3a31c84ed525 | 21 | void attachPixelString(NeoPixelString * pixelstring); |
dwini | 0:3a31c84ed525 | 22 | void listen(bool blocking); |
dwini | 0:3a31c84ed525 | 23 | void allOff(void); |
dwini | 0:3a31c84ed525 | 24 | void allSingleColor(neopixel::Pixel singlecolor); |
dwini | 0:3a31c84ed525 | 25 | void diagnoseAll(void); |
dwini | 0:3a31c84ed525 | 26 | }; |