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) { }
}

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?

UserRevisionLine numberNew 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 };