![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Gets messages form the pc and translates it to I2C and back.
Dependencies: DevInterfaces I2Cinterfaces MCP4725 mbed
main.cpp
- Committer:
- katrijnverhasselt
- Date:
- 2016-05-18
- Revision:
- 1:8ba039abd9b8
- Parent:
- 0:b40341017545
- Child:
- 2:2330ad8b1baa
File content as of revision 1:8ba039abd9b8:
#define MCP4728EXAMPLEVER "1.10 " #include <string> #include "mbed.h" #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z) PinName const SDA = PTE25; PinName const SCL = PTE24; #elif defined (TARGET_KL05Z) PinName const SDA = PTB4; PinName const SCL = PTB3; #elif defined (TARGET_K20D50M) PinName const SDA = PTB1; PinName const SCL = PTB0; #else #error TARGET NOT DEFINED #endif #include "I2C.h" #include "I2CInterface.h" #include "MBEDI2CInterface.h" #include "DACInterface.h" #include "dev_interface_def.h" #include "mcp4725.h" #include "Translator.h" #include "Reader.h" #include "Writer.h" // Initialize LEDs PwmOut rled(LED1); PwmOut gled(LED2); PwmOut bled(LED3); Serial pc(USBTX, USBRX); int main(void) { // <SDA en SCL zijn de pins hierboven gedefinieerd, wss hardware eigenschappen dat je mag negeren> // Create MbedI2C interface MBEDI2CInterface mbedi2c(SDA, SCL); // <volgende lijn is voor indien de Mbed veranderd, enkel bovenstaande lijn geupdate moet worden> // Create pointer to MBEDI2CInterface's parent I2CInterface* i2cdev= &mbedi2c; // Set maximum voltage of I2C board float Vdd = 4.7; // Create communication object using the MbedI2C interface MCP4725 dac(i2cdev ,0, Vdd); // Create input buffer reader Reader reader; // Start infinite loop while (true) { rled = 1.0f; gled = 1.0f; bled = 0.0f; if (!reader.IsNewMessageReceived()) continue; // Do nothing as long as no new complete message was received rled = 1.0f; gled = 0.0f; bled = 1.0f; // Translate the raw message Translator::MessageInfo info = reader.GetLastMessageInfo(); //if (!Translator::Translate(reader.GetLastMessage(), reader.GetLastMessageSize(), &info)) { // printf("I have failed you..."); // continue; //} int dacValue; if (info.IsRead()) { // If read command //printf("Reading "); // Read the current DAC value if (dac.getDACvalue(dacValue) == 0) { //printf("succes!"); // Succesful: send back the current DAC value Writer::Send(info, dacValue); } else { //printf("failed"); // Failed: send error message Writer::SendError(info); } } else if (info.IsWrite()) { // If write command //printf("Writing "); // Set the given DAC value if (dac.setDACvalue(info.DacValue) == 0) { //printf("succes!"); // Succesful: Get the DAC value dac.getDACvalue(dacValue); // Send new value Writer::Send(info, dacValue); } else { //printf("failed"); // Failed: send error message Writer::SendError(info); } } else if (info.IsOption()) { //printf("Option failed"); // Not implemented yet Writer::SendError(info); } } }