pizzo

Dependencies:   MCP4725 mbed

Fork of MCP4725_Library_Test by Donal Morrissey

Committer:
mikepizzo
Date:
Mon Dec 14 05:05:43 2015 +0000
Revision:
5:03662d049f69
Parent:
4:092580187b59
zip;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mikepizzo 5:03662d049f69 1
donalm 0:3e143a2e21c8 2 #include "mbed.h"
donalm 0:3e143a2e21c8 3 #include "mcp4725.h"
mikepizzo 5:03662d049f69 4 #include "math.h"
mikepizzo 5:03662d049f69 5 #include <iostream>
mikepizzo 5:03662d049f69 6 using namespace std;
donalm 0:3e143a2e21c8 7
donalm 0:3e143a2e21c8 8 /**
mikepizzo 5:03662d049f69 9 * A test program for the MCP4725 DAC Library. This Test Application requires the following:
mikepizzo 5:03662d049f69 10 * * An MCP4725 connected to the I2C bus of the mbed LPC1768.
donalm 4:092580187b59 11 * * The analog out of the MCP1768 connected to Pin15 (analog in) of the mbed LPC1768.
mikepizzo 5:03662d049f69 12 *
donalm 4:092580187b59 13 *
mikepizzo 5:03662d049f69 14 * This is a stripped down version of the MCP4725_Library_Test found online, and should make the necessary commands more clear.
mikepizzo 5:03662d049f69 15 * Last Edited: 12/24/13, Tim Brubaker
donalm 4:092580187b59 16 *
donalm 0:3e143a2e21c8 17 */
donalm 0:3e143a2e21c8 18
donalm 4:092580187b59 19 DigitalOut testLed(LED1);
donalm 0:3e143a2e21c8 20 Serial pc(USBTX, USBRX);
donalm 4:092580187b59 21 AnalogIn analogIn(p15);
mikepizzo 5:03662d049f69 22 CAN can1(p30,p29);
donalm 0:3e143a2e21c8 23
mikepizzo 5:03662d049f69 24 // Class instantiation (similar to Serial pc(USBTX, USBRX) in function)
mikepizzo 5:03662d049f69 25 MCP4725 bacon(p9, p10, MCP4725::Fast400kHz, 0x63);
mikepizzo 5:03662d049f69 26
mikepizzo 5:03662d049f69 27 float xrad = 0;
mikepizzo 5:03662d049f69 28 float x = 0;
donalm 0:3e143a2e21c8 29
donalm 0:3e143a2e21c8 30 int main()
donalm 0:3e143a2e21c8 31 {
mikepizzo 5:03662d049f69 32 float xrad = 0;
mikepizzo 5:03662d049f69 33 float x = 0;
mikepizzo 5:03662d049f69 34 int state = 5;
mikepizzo 5:03662d049f69 35 int mem = 0;
mikepizzo 5:03662d049f69 36 //
mikepizzo 5:03662d049f69 37 //
mikepizzo 5:03662d049f69 38 //
mikepizzo 5:03662d049f69 39 while (1) {
mikepizzo 5:03662d049f69 40 CANMessage msg;
mikepizzo 5:03662d049f69 41 if(can1.read(msg)){
mikepizzo 5:03662d049f69 42 printf("Message received: %d\n", msg.data[0]);
mikepizzo 5:03662d049f69 43 switch(msg.data[0]){
mikepizzo 5:03662d049f69 44 case 0:
mikepizzo 5:03662d049f69 45 state = mem;
mikepizzo 5:03662d049f69 46 break;
mikepizzo 5:03662d049f69 47
mikepizzo 5:03662d049f69 48 case 1:
mikepizzo 5:03662d049f69 49 mem = state;
mikepizzo 5:03662d049f69 50 state = 1;
mikepizzo 5:03662d049f69 51 break;
mikepizzo 5:03662d049f69 52
mikepizzo 5:03662d049f69 53 case 2:
mikepizzo 5:03662d049f69 54 state = 2;
mikepizzo 5:03662d049f69 55 break;
mikepizzo 5:03662d049f69 56
mikepizzo 5:03662d049f69 57 case 3:
mikepizzo 5:03662d049f69 58 state = 3;
mikepizzo 5:03662d049f69 59 break;
mikepizzo 5:03662d049f69 60
mikepizzo 5:03662d049f69 61 case 4:
mikepizzo 5:03662d049f69 62 state = 4;
mikepizzo 5:03662d049f69 63 break;
mikepizzo 5:03662d049f69 64
mikepizzo 5:03662d049f69 65 case 5 :
mikepizzo 5:03662d049f69 66 state = 5;
mikepizzo 5:03662d049f69 67 break;
mikepizzo 5:03662d049f69 68 }
mikepizzo 5:03662d049f69 69 }
mikepizzo 5:03662d049f69 70 switch (state){
mikepizzo 5:03662d049f69 71 case 0:
mikepizzo 5:03662d049f69 72 //pc.printf("Start");
mikepizzo 5:03662d049f69 73 break;
mikepizzo 5:03662d049f69 74 case 1:
mikepizzo 5:03662d049f69 75 bacon.write(MCP4725::Normal, (0xFFF * (0.0 / 3.3)), false);
mikepizzo 5:03662d049f69 76 pc.printf("Value is %f V \r\n", analogIn.read()*3.3);
mikepizzo 5:03662d049f69 77 break;
mikepizzo 5:03662d049f69 78
mikepizzo 5:03662d049f69 79 case 2:
mikepizzo 5:03662d049f69 80 testLed = 1;
mikepizzo 5:03662d049f69 81 wait(1);
mikepizzo 5:03662d049f69 82 // Write to DAC register (not EEPROM). Documentation in library files.
mikepizzo 5:03662d049f69 83 bacon.write(MCP4725::Normal, (0xFFF * (3.3 / 3.3)), false);
mikepizzo 5:03662d049f69 84 testLed = 0;
mikepizzo 5:03662d049f69 85 pc.printf("Value is %f V \r\n", analogIn.read()*3.3);
mikepizzo 5:03662d049f69 86 wait(1);
mikepizzo 5:03662d049f69 87 bacon.write(MCP4725::Normal, (0xFFF * (0.0 / 3.3)), false);
mikepizzo 5:03662d049f69 88 // Print ADC measurement to terminal. Scale factor of 3.3 needed for internal ADC.
mikepizzo 5:03662d049f69 89 pc.printf("Value is %f V \r\n", analogIn.read()*3.3);
mikepizzo 5:03662d049f69 90 break;
mikepizzo 5:03662d049f69 91
mikepizzo 5:03662d049f69 92 case 3:
mikepizzo 5:03662d049f69 93 // printf("1 Hz Sine Wave\r\n");
mikepizzo 5:03662d049f69 94 //1 Hz Sine Wave
mikepizzo 5:03662d049f69 95 xrad = x*3.14159 / 180;
mikepizzo 5:03662d049f69 96 // Write to DAC register (not EEPROM). Documentation in library files.
mikepizzo 5:03662d049f69 97 bacon.write(MCP4725::Normal, (0xFFF * (0.5*sin(xrad) + 0.5)), false);
mikepizzo 5:03662d049f69 98 if (x == 360){
mikepizzo 5:03662d049f69 99 x = 0.045;
mikepizzo 5:03662d049f69 100 }
mikepizzo 5:03662d049f69 101 else {
mikepizzo 5:03662d049f69 102 x = x + 0.045;
mikepizzo 5:03662d049f69 103 }
mikepizzo 5:03662d049f69 104 break;
mikepizzo 5:03662d049f69 105 case 4:
mikepizzo 5:03662d049f69 106 wait(.1);
mikepizzo 5:03662d049f69 107 bacon.write(MCP4725::Normal, (0xFFF * (3.3 / 3.3)), false);
mikepizzo 5:03662d049f69 108 testLed = 0;
mikepizzo 5:03662d049f69 109 pc.printf("Value is %f V \r\n", analogIn.read()*3.3);
mikepizzo 5:03662d049f69 110 wait(0.1);
mikepizzo 5:03662d049f69 111 bacon.write(MCP4725::Normal, (0xFFF * (0.0 / 3.3)), false);
mikepizzo 5:03662d049f69 112 // Print ADC measurement to terminal. Scale factor of 3.3 needed for internal ADC.
mikepizzo 5:03662d049f69 113 pc.printf("Value is %f V \r\n", analogIn.read()*3.3);
mikepizzo 5:03662d049f69 114 break;
mikepizzo 5:03662d049f69 115 case 5:
donalm 4:092580187b59 116
mikepizzo 5:03662d049f69 117 // Write to DAC register (not EEPROM). Documentation in library files.
mikepizzo 5:03662d049f69 118 xrad = x*3.14159 / 180;
mikepizzo 5:03662d049f69 119 // Write to DAC register (not EEPROM). Documentation in library files.
mikepizzo 5:03662d049f69 120 bacon.write(MCP4725::Normal, (0xFFF * (0.5*sin(xrad) + 0.5)), false);
mikepizzo 5:03662d049f69 121 if (x == 360){
mikepizzo 5:03662d049f69 122 x = 0.45;
mikepizzo 5:03662d049f69 123 }
mikepizzo 5:03662d049f69 124 else {
mikepizzo 5:03662d049f69 125 x = x + 0.45;
mikepizzo 5:03662d049f69 126 }
mikepizzo 5:03662d049f69 127 break;
donalm 4:092580187b59 128 }
mikepizzo 5:03662d049f69 129 }
donalm 0:3e143a2e21c8 130 }