Gets messages form the pc and translates it to I2C and back.

Dependencies:   DevInterfaces I2Cinterfaces MCP4725 mbed

Committer:
katrijnverhasselt
Date:
Wed May 18 11:22:41 2016 +0000
Revision:
0:b40341017545
Child:
1:8ba039abd9b8
Full program

Who changed what in which revision?

UserRevisionLine numberNew contents of line
katrijnverhasselt 0:b40341017545 1 #define MCP4728EXAMPLEVER "1.10 "
katrijnverhasselt 0:b40341017545 2
katrijnverhasselt 0:b40341017545 3 #include <string>
katrijnverhasselt 0:b40341017545 4 #include "mbed.h"
katrijnverhasselt 0:b40341017545 5
katrijnverhasselt 0:b40341017545 6 #if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
katrijnverhasselt 0:b40341017545 7 PinName const SDA = PTE25;
katrijnverhasselt 0:b40341017545 8 PinName const SCL = PTE24;
katrijnverhasselt 0:b40341017545 9 #elif defined (TARGET_KL05Z)
katrijnverhasselt 0:b40341017545 10 PinName const SDA = PTB4;
katrijnverhasselt 0:b40341017545 11 PinName const SCL = PTB3;
katrijnverhasselt 0:b40341017545 12 #elif defined (TARGET_K20D50M)
katrijnverhasselt 0:b40341017545 13 PinName const SDA = PTB1;
katrijnverhasselt 0:b40341017545 14 PinName const SCL = PTB0;
katrijnverhasselt 0:b40341017545 15 #else
katrijnverhasselt 0:b40341017545 16 #error TARGET NOT DEFINED
katrijnverhasselt 0:b40341017545 17 #endif
katrijnverhasselt 0:b40341017545 18
katrijnverhasselt 0:b40341017545 19
katrijnverhasselt 0:b40341017545 20 #include "I2C.h"
katrijnverhasselt 0:b40341017545 21 #include "I2CInterface.h"
katrijnverhasselt 0:b40341017545 22 #include "MBEDI2CInterface.h"
katrijnverhasselt 0:b40341017545 23 #include "DACInterface.h"
katrijnverhasselt 0:b40341017545 24 #include "dev_interface_def.h"
katrijnverhasselt 0:b40341017545 25 #include "mcp4725.h"
katrijnverhasselt 0:b40341017545 26 #include "Translator.h"
katrijnverhasselt 0:b40341017545 27 #include "Reader.h"
katrijnverhasselt 0:b40341017545 28 #include "Writer.h"
katrijnverhasselt 0:b40341017545 29
katrijnverhasselt 0:b40341017545 30 // Initialize LEDs
katrijnverhasselt 0:b40341017545 31 PwmOut rled(LED1);
katrijnverhasselt 0:b40341017545 32 PwmOut gled(LED2);
katrijnverhasselt 0:b40341017545 33 PwmOut bled(LED3);
katrijnverhasselt 0:b40341017545 34
katrijnverhasselt 0:b40341017545 35 Serial pc(USBTX, USBRX);
katrijnverhasselt 0:b40341017545 36
katrijnverhasselt 0:b40341017545 37 int main(void) {
katrijnverhasselt 0:b40341017545 38 // <SDA en SCL zijn de pins hierboven gedefinieerd, wss hardware eigenschappen dat je mag negeren>
katrijnverhasselt 0:b40341017545 39 // Create MbedI2C interface
katrijnverhasselt 0:b40341017545 40 MBEDI2CInterface mbedi2c(SDA, SCL);
katrijnverhasselt 0:b40341017545 41 // <volgende lijn is voor indien de Mbed veranderd, enkel bovenstaande lijn geupdate moet worden>
katrijnverhasselt 0:b40341017545 42 // Create pointer to MBEDI2CInterface's parent
katrijnverhasselt 0:b40341017545 43 I2CInterface* i2cdev= &mbedi2c;
katrijnverhasselt 0:b40341017545 44 // Set maximum voltage of I2C board
katrijnverhasselt 0:b40341017545 45 float Vdd = 4.7;
katrijnverhasselt 0:b40341017545 46 // Create communication object using the MbedI2C interface
katrijnverhasselt 0:b40341017545 47 MCP4725 dac(i2cdev ,0, Vdd);
katrijnverhasselt 0:b40341017545 48
katrijnverhasselt 0:b40341017545 49 // Create input buffer reader
katrijnverhasselt 0:b40341017545 50 Reader reader;
katrijnverhasselt 0:b40341017545 51
katrijnverhasselt 0:b40341017545 52 // Start infinite loop
katrijnverhasselt 0:b40341017545 53 while (true) {
katrijnverhasselt 0:b40341017545 54 rled = 1.0f;
katrijnverhasselt 0:b40341017545 55 gled = 1.0f;
katrijnverhasselt 0:b40341017545 56 bled = 0.0f;
katrijnverhasselt 0:b40341017545 57 if (!reader.IsNewMessageReceived())
katrijnverhasselt 0:b40341017545 58 continue; // Do nothing as long as no new complete message was received
katrijnverhasselt 0:b40341017545 59 rled = 1.0f;
katrijnverhasselt 0:b40341017545 60 gled = 0.0f;
katrijnverhasselt 0:b40341017545 61 bled = 1.0f;
katrijnverhasselt 0:b40341017545 62
katrijnverhasselt 0:b40341017545 63 // Translate the raw message
katrijnverhasselt 0:b40341017545 64 Translator::MessageInfo info/* = reader.LastMessageInfo()*/;
katrijnverhasselt 0:b40341017545 65 if (!Translator::Translate(reader.GetLastMessage(), reader.GetLastMessageSize(), &info)) {
katrijnverhasselt 0:b40341017545 66 printf("I have failed you...");
katrijnverhasselt 0:b40341017545 67 continue;
katrijnverhasselt 0:b40341017545 68 }
katrijnverhasselt 0:b40341017545 69
katrijnverhasselt 0:b40341017545 70 int dacValue;
katrijnverhasselt 0:b40341017545 71 if (info.IsRead()) { // If read command
katrijnverhasselt 0:b40341017545 72 printf("Reading ");
katrijnverhasselt 0:b40341017545 73 // Read the current DAC value
katrijnverhasselt 0:b40341017545 74 if (dac.getDACvalue(dacValue) == 0) {
katrijnverhasselt 0:b40341017545 75 printf("succes!");
katrijnverhasselt 0:b40341017545 76 // Succesful: send back the current DAC value
katrijnverhasselt 0:b40341017545 77 Writer::Send(info, dacValue);
katrijnverhasselt 0:b40341017545 78 } else {
katrijnverhasselt 0:b40341017545 79 printf("failed");
katrijnverhasselt 0:b40341017545 80 // Failed: send error message
katrijnverhasselt 0:b40341017545 81 Writer::SendError(info);
katrijnverhasselt 0:b40341017545 82 }
katrijnverhasselt 0:b40341017545 83 } else if (info.IsWrite()) { // If write command
katrijnverhasselt 0:b40341017545 84 printf("Writing ");
katrijnverhasselt 0:b40341017545 85 // Set the given DAC value
katrijnverhasselt 0:b40341017545 86 if (dac.setDACvalue(info.DacValue) == 0) {
katrijnverhasselt 0:b40341017545 87 printf("succes!");
katrijnverhasselt 0:b40341017545 88 // Succesful: Get the DAC value
katrijnverhasselt 0:b40341017545 89 dac.getDACvalue(dacValue);
katrijnverhasselt 0:b40341017545 90 // Send new value
katrijnverhasselt 0:b40341017545 91 Writer::Send(info, dacValue);
katrijnverhasselt 0:b40341017545 92 } else {
katrijnverhasselt 0:b40341017545 93 printf("failed");
katrijnverhasselt 0:b40341017545 94 // Failed: send error message
katrijnverhasselt 0:b40341017545 95 Writer::SendError(info);
katrijnverhasselt 0:b40341017545 96 }
katrijnverhasselt 0:b40341017545 97 } else if (info.IsOption()) {
katrijnverhasselt 0:b40341017545 98 printf("Option failed");
katrijnverhasselt 0:b40341017545 99 // Not implemented yet
katrijnverhasselt 0:b40341017545 100 Writer::SendError(info);
katrijnverhasselt 0:b40341017545 101 }
katrijnverhasselt 0:b40341017545 102 }
katrijnverhasselt 0:b40341017545 103 }
katrijnverhasselt 0:b40341017545 104