This is a driver for a project I made in school. It involves a Raspberry Pi connected to the MBED, which in turn is connected to a Ledcube. The MBED delivers data for the leds to the Ledcube continuously at a 100 Hz rate, using SPI. This data is read from an internal buffer. For animations, the Raspberry Pi just sends data when the current "image" has to change, using I2C.

Dependencies:   mbed mbed-rtos

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers I2CDriver.cpp Source File

I2CDriver.cpp

00001 #include "I2CDriver.h"
00002 #include "mbed.h"
00003 
00004 I2CDriver::I2CDriver(PinName pin1, PinName pin2, const char addr) : slave(pin1, pin2)
00005 {
00006     slave.address(addr);
00007 }
00008 
00009 I2CDriver::~I2CDriver()
00010 {
00011 }
00012 
00013 uint8_t I2CDriver::read(void)
00014 {
00015     return ((uint8_t) slave.read());
00016 }
00017 
00018 uint8_t I2CDriver::read(char* dat, int lengte)
00019 {
00020     return slave.read(dat, lengte);
00021 }
00022 
00023 int I2CDriver::receive(void)
00024 {
00025     return slave.receive();
00026 }
00027 
00028 void I2CDriver::pollForInput(LedCube* ledc)
00029 {
00030     if(receive() == I2CDriver::WriteAddressed) {
00031         slave.read(databuffer, SIZE);
00032         unsigned char databfr[512];
00033         for(int i =0; i < 512; i++) databfr[i] = databuffer[i];
00034         ledc->setData(databfr);
00035     }
00036     //printf("Gepollt!!\n\r");
00037 }
00038