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.
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
Generated on Thu Aug 25 2022 12:14:09 by
1.7.2