team 2 section 5 (MbedHead) / Mbed 2 deprecated DAC_module

Dependencies:   TextLCD mbed dacmodule

Fork of DAC_module by n s

Committer:
psuMbedHead
Date:
Tue Nov 01 16:49:50 2016 +0000
Revision:
0:c1332385cffa
Child:
1:af51ee0c367d
1st push successful build, not hardware tested, minimal comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
psuMbedHead 0:c1332385cffa 1 #include "mbed.h"
psuMbedHead 0:c1332385cffa 2 #include "mcp4725.h"
psuMbedHead 0:c1332385cffa 3 #include "TextLCD.h"
psuMbedHead 0:c1332385cffa 4 #include "math.h"
psuMbedHead 0:c1332385cffa 5
psuMbedHead 0:c1332385cffa 6 TextLCD lcd(p14, p13, p21, p22, p23, p24, TextLCD::LCD16x2); // rs, e, d4-d7
psuMbedHead 0:c1332385cffa 7 //
psuMbedHead 0:c1332385cffa 8 DigitalOut testLed(LED1);
psuMbedHead 0:c1332385cffa 9 Serial pc(USBTX, USBRX);
psuMbedHead 0:c1332385cffa 10 AnalogIn analogIn(p15);
psuMbedHead 0:c1332385cffa 11 // init the DAC module
psuMbedHead 0:c1332385cffa 12 MCP4725 DAC(p28, p27, MCP4725::Standard100kHz, 0);
psuMbedHead 0:c1332385cffa 13 //define custom characters
psuMbedHead 0:c1332385cffa 14 const char sin_char_top[] = { 0x0, 0xe,0x11,0x11, 0x0, 0x0, 0x0, 0x0};
psuMbedHead 0:c1332385cffa 15 const char sin_char_bot[] = { 0x0, 0x0, 0x0, 0x0,0x11,0x11, 0xe, 0x0};
psuMbedHead 0:c1332385cffa 16 const char sq_char_left[] = {0x1c, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x7};
psuMbedHead 0:c1332385cffa 17 const char sq_char_right[] = { 0x7, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,0x1c};
psuMbedHead 0:c1332385cffa 18 const double pi = 3.14159;
psuMbedHead 0:c1332385cffa 19 int main() {
psuMbedHead 0:c1332385cffa 20 //set custom characters
psuMbedHead 0:c1332385cffa 21 lcd.setUDC(0, (char *) sin_char_bot);
psuMbedHead 0:c1332385cffa 22 lcd.setUDC(1, (char *) sin_char_top);
psuMbedHead 0:c1332385cffa 23 lcd.setUDC(2, (char *) sq_char_left);
psuMbedHead 0:c1332385cffa 24 lcd.setUDC(3, (char *) sq_char_right);
psuMbedHead 0:c1332385cffa 25 int RUN = 0; //start = 1, stop = 0
psuMbedHead 0:c1332385cffa 26 int SIGNAL_MODE = 0; //1sin,10ksin,1sq,10ksq = 0,1,2,3
psuMbedHead 0:c1332385cffa 27
psuMbedHead 0:c1332385cffa 28 while(1) {
psuMbedHead 0:c1332385cffa 29 int dots = 0;
psuMbedHead 0:c1332385cffa 30 while(RUN == 0)
psuMbedHead 0:c1332385cffa 31 {
psuMbedHead 0:c1332385cffa 32 lcd.setCursor(TextLCD::CurOff_BlkOff);
psuMbedHead 0:c1332385cffa 33 lcd.setAddress(0, 0);
psuMbedHead 0:c1332385cffa 34 lcd.printf("Waveform: off\n");
psuMbedHead 0:c1332385cffa 35 if(dots == 0){
psuMbedHead 0:c1332385cffa 36 lcd.printf("waiting");
psuMbedHead 0:c1332385cffa 37 dots++;
psuMbedHead 0:c1332385cffa 38 }
psuMbedHead 0:c1332385cffa 39 else if(dots == 1){
psuMbedHead 0:c1332385cffa 40 lcd.printf("waiting.");
psuMbedHead 0:c1332385cffa 41 dots++;
psuMbedHead 0:c1332385cffa 42 }
psuMbedHead 0:c1332385cffa 43 else if(dots == 2){
psuMbedHead 0:c1332385cffa 44 lcd.printf("waiting..");
psuMbedHead 0:c1332385cffa 45 dots++;
psuMbedHead 0:c1332385cffa 46 }
psuMbedHead 0:c1332385cffa 47 else if(dots == 3){
psuMbedHead 0:c1332385cffa 48 lcd.printf("waiting...");
psuMbedHead 0:c1332385cffa 49 dots = 0;
psuMbedHead 0:c1332385cffa 50 }
psuMbedHead 0:c1332385cffa 51 else{
psuMbedHead 0:c1332385cffa 52 lcd.printf("ERROR CASE");
psuMbedHead 0:c1332385cffa 53 }
psuMbedHead 0:c1332385cffa 54 wait_ms(100);
psuMbedHead 0:c1332385cffa 55 }
psuMbedHead 0:c1332385cffa 56 int i = 0;
psuMbedHead 0:c1332385cffa 57 while(RUN == 1)
psuMbedHead 0:c1332385cffa 58 {
psuMbedHead 0:c1332385cffa 59 //set display on
psuMbedHead 0:c1332385cffa 60 lcd.setCursor(TextLCD::CurOff_BlkOff);
psuMbedHead 0:c1332385cffa 61 lcd.setAddress(0, 0);
psuMbedHead 0:c1332385cffa 62 lcd.printf("Waveform: on\n");
psuMbedHead 0:c1332385cffa 63
psuMbedHead 0:c1332385cffa 64 if(SIGNAL_MODE == 0){
psuMbedHead 0:c1332385cffa 65 //sin wave 1Hz or 1s
psuMbedHead 0:c1332385cffa 66 lcd.putc(0); lcd.putc(1); lcd.printf("1Hz Sin Wav");
psuMbedHead 0:c1332385cffa 67
psuMbedHead 0:c1332385cffa 68 double j = 1.65*sin(2*pi*i/100)+1.65;
psuMbedHead 0:c1332385cffa 69 DAC.write(MCP4725::Normal, (0xFFF * (j/3.3)), false);
psuMbedHead 0:c1332385cffa 70 wait_ms(5);
psuMbedHead 0:c1332385cffa 71 i++;
psuMbedHead 0:c1332385cffa 72 } //end if case
psuMbedHead 0:c1332385cffa 73 else if(SIGNAL_MODE == 1){
psuMbedHead 0:c1332385cffa 74 //sin wave 10kHz or 100us
psuMbedHead 0:c1332385cffa 75 lcd.putc(0); lcd.putc(1); lcd.printf("10kHz Sin Wav");
psuMbedHead 0:c1332385cffa 76
psuMbedHead 0:c1332385cffa 77 double k = 1.65*sin(2*pi*i/100)+1.65;
psuMbedHead 0:c1332385cffa 78 DAC.write(MCP4725::Normal, (0xFFF * (k/3.3)), false);
psuMbedHead 0:c1332385cffa 79 wait_us(0.5);
psuMbedHead 0:c1332385cffa 80 i++;
psuMbedHead 0:c1332385cffa 81 } //end if case
psuMbedHead 0:c1332385cffa 82 else if(SIGNAL_MODE == 2){
psuMbedHead 0:c1332385cffa 83 //square wave 1Hz or 1s
psuMbedHead 0:c1332385cffa 84 lcd.putc(2); lcd.putc(3); lcd.printf("1Hz Sq Wav");
psuMbedHead 0:c1332385cffa 85
psuMbedHead 0:c1332385cffa 86 DAC.write(MCP4725::Normal, 0xFFF, false);
psuMbedHead 0:c1332385cffa 87 wait_ms(500);
psuMbedHead 0:c1332385cffa 88 DAC.write(MCP4725::Normal, 0x000, false);
psuMbedHead 0:c1332385cffa 89 wait_ms(500);
psuMbedHead 0:c1332385cffa 90 } //end if case
psuMbedHead 0:c1332385cffa 91 else if(SIGNAL_MODE == 3){
psuMbedHead 0:c1332385cffa 92 //square wave 10kHz or 100us
psuMbedHead 0:c1332385cffa 93 lcd.putc(2); lcd.putc(3); lcd.printf("10kHz Sq Wav");
psuMbedHead 0:c1332385cffa 94
psuMbedHead 0:c1332385cffa 95 DAC.write(MCP4725::Normal, 0xFFF, false);
psuMbedHead 0:c1332385cffa 96 wait_us(50);
psuMbedHead 0:c1332385cffa 97 DAC.write(MCP4725::Normal, 0x000, false);
psuMbedHead 0:c1332385cffa 98 wait_us(50);
psuMbedHead 0:c1332385cffa 99 } //end if case
psuMbedHead 0:c1332385cffa 100 else{
psuMbedHead 0:c1332385cffa 101 lcd.printf("ERROR CASE");
psuMbedHead 0:c1332385cffa 102 //do nothing
psuMbedHead 0:c1332385cffa 103 } //end default
psuMbedHead 0:c1332385cffa 104 } //end while(on) loop
psuMbedHead 0:c1332385cffa 105 } //end while(1) loop
psuMbedHead 0:c1332385cffa 106 } //end main