yajuan yue / Mbed 2 deprecated coursework3

Dependencies:   elec350 mbed

Committer:
yyue
Date:
Thu Jan 26 04:33:47 2017 +0000
Revision:
0:ccec456b4dbb
created coursework;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yyue 0:ccec456b4dbb 1 #include "mbed.h"
yyue 0:ccec456b4dbb 2 #include "BaseDAC.h"
yyue 0:ccec456b4dbb 3 #include "Button.h"
yyue 0:ccec456b4dbb 4 #include "ConstantOutput.h"
yyue 0:ccec456b4dbb 5 #include "SineWave.h"
yyue 0:ccec456b4dbb 6 #include "SquareWave.h"
yyue 0:ccec456b4dbb 7 #include "MicrochipDAC.h"
yyue 0:ccec456b4dbb 8 #include "ChipConstant.h"
yyue 0:ccec456b4dbb 9 #include "ChipSine.h"
yyue 0:ccec456b4dbb 10 #include "ChipSquare.h"
yyue 0:ccec456b4dbb 11
yyue 0:ccec456b4dbb 12 #include <sstream>
yyue 0:ccec456b4dbb 13 #include <vector>
yyue 0:ccec456b4dbb 14 #include <string>
yyue 0:ccec456b4dbb 15
yyue 0:ccec456b4dbb 16
yyue 0:ccec456b4dbb 17
yyue 0:ccec456b4dbb 18 string namedsc;
yyue 0:ccec456b4dbb 19
yyue 0:ccec456b4dbb 20 int main()
yyue 0:ccec456b4dbb 21 {
yyue 0:ccec456b4dbb 22 Button button(PA_0);
yyue 0:ccec456b4dbb 23 Serial serial(PA_2, PA_3);
yyue 0:ccec456b4dbb 24
yyue 0:ccec456b4dbb 25
yyue 0:ccec456b4dbb 26 ChipConstant chipConstant (PA_6,PA_7,PA_5,PA_8);
yyue 0:ccec456b4dbb 27 ChipSine chipSine (PA_6,PA_7,PA_5,PA_8);
yyue 0:ccec456b4dbb 28 ChipSquare chipSquare (PA_6,PA_7,PA_5,PA_8);
yyue 0:ccec456b4dbb 29
yyue 0:ccec456b4dbb 30 vector<MicrochipDAC*>microchipDACs;
yyue 0:ccec456b4dbb 31 microchipDACs.push_back(&chipConstant);
yyue 0:ccec456b4dbb 32 microchipDACs.push_back(&chipSine);
yyue 0:ccec456b4dbb 33 microchipDACs.push_back(&chipSquare);
yyue 0:ccec456b4dbb 34
yyue 0:ccec456b4dbb 35 DigitalOut myled(PD_14);
yyue 0:ccec456b4dbb 36
yyue 0:ccec456b4dbb 37 //vector<DAC*>DACs;
yyue 0:ccec456b4dbb 38 // DACs.push_back(&microchipDAC);
yyue 0:ccec456b4dbb 39 //DACs.push_back(&baseDAC);
yyue 0:ccec456b4dbb 40
yyue 0:ccec456b4dbb 41 //BaseDAC baseDAC (PA_4);
yyue 0:ccec456b4dbb 42 ConstantOutput constantOutput(&serial);
yyue 0:ccec456b4dbb 43 SineWave sineWave(&serial);
yyue 0:ccec456b4dbb 44 SquareWave squareWave(&serial);
yyue 0:ccec456b4dbb 45 vector<BaseDAC*>baseDACs;
yyue 0:ccec456b4dbb 46 baseDACs.push_back(&constantOutput);
yyue 0:ccec456b4dbb 47 baseDACs.push_back(&sineWave);
yyue 0:ccec456b4dbb 48 baseDACs.push_back(&squareWave);
yyue 0:ccec456b4dbb 49
yyue 0:ccec456b4dbb 50
yyue 0:ccec456b4dbb 51 while(1) {
yyue 0:ccec456b4dbb 52
yyue 0:ccec456b4dbb 53
yyue 0:ccec456b4dbb 54 serial.puts("Plese type the name of signal:sine, constant or square. \r\n");
yyue 0:ccec456b4dbb 55
yyue 0:ccec456b4dbb 56 char buffer[128];
yyue 0:ccec456b4dbb 57 buffer[0]=0;
yyue 0:ccec456b4dbb 58 serial.scanf("%127[^\r\n]", buffer);
yyue 0:ccec456b4dbb 59 string buffer_str(buffer);
yyue 0:ccec456b4dbb 60 istringstream iss(buffer_str);
yyue 0:ccec456b4dbb 61
yyue 0:ccec456b4dbb 62 string name;
yyue 0:ccec456b4dbb 63 float amplitude = 0.0;
yyue 0:ccec456b4dbb 64 float frequency = 0.0;
yyue 0:ccec456b4dbb 65
yyue 0:ccec456b4dbb 66 iss >> name;
yyue 0:ccec456b4dbb 67
yyue 0:ccec456b4dbb 68 int i;
yyue 0:ccec456b4dbb 69 if (name =="constant") {
yyue 0:ccec456b4dbb 70 i = 0;
yyue 0:ccec456b4dbb 71 serial.puts("The function is running.\r\n");
yyue 0:ccec456b4dbb 72 } else if (name == "sine") {
yyue 0:ccec456b4dbb 73 i = 1;
yyue 0:ccec456b4dbb 74 serial.puts("The function is running.\r\n");
yyue 0:ccec456b4dbb 75 } else if (name == "square")
yyue 0:ccec456b4dbb 76 i = 2;
yyue 0:ccec456b4dbb 77 else {
yyue 0:ccec456b4dbb 78 serial.puts("The name of function is invalid.\r\n");
yyue 0:ccec456b4dbb 79 i = 100;
yyue 0:ccec456b4dbb 80 }
yyue 0:ccec456b4dbb 81
yyue 0:ccec456b4dbb 82
yyue 0:ccec456b4dbb 83
yyue 0:ccec456b4dbb 84 iss >> amplitude;
yyue 0:ccec456b4dbb 85 if (amplitude <= 0) {
yyue 0:ccec456b4dbb 86 serial.puts("The value of amplitude is invalid.Please type again.\r\n");
yyue 0:ccec456b4dbb 87 }
yyue 0:ccec456b4dbb 88
yyue 0:ccec456b4dbb 89
yyue 0:ccec456b4dbb 90
yyue 0:ccec456b4dbb 91 iss >> frequency;
yyue 0:ccec456b4dbb 92 if (frequency < 0) {
yyue 0:ccec456b4dbb 93 serial.puts ("The value of frequency is invalid.\r\n");
yyue 0:ccec456b4dbb 94 }
yyue 0:ccec456b4dbb 95
yyue 0:ccec456b4dbb 96 iss >> namedsc;
yyue 0:ccec456b4dbb 97 if (namedsc =="base") {
yyue 0:ccec456b4dbb 98 baseDACs[i]->setAmplitude();
yyue 0:ccec456b4dbb 99 baseDACs[i]->setFrequency();
yyue 0:ccec456b4dbb 100 baseDACs[i]->run();
yyue 0:ccec456b4dbb 101 baseDACs[i]->start();
yyue 0:ccec456b4dbb 102
yyue 0:ccec456b4dbb 103
yyue 0:ccec456b4dbb 104 if (button.isPressed()) {
yyue 0:ccec456b4dbb 105 myled = 1;
yyue 0:ccec456b4dbb 106
yyue 0:ccec456b4dbb 107 // baseDACs[i]->run();
yyue 0:ccec456b4dbb 108 serial.puts("The function is stopped.\r\n");
yyue 0:ccec456b4dbb 109 baseDACs[i]->stop();
yyue 0:ccec456b4dbb 110 } else baseDACs[i]->start();
yyue 0:ccec456b4dbb 111
yyue 0:ccec456b4dbb 112
yyue 0:ccec456b4dbb 113
yyue 0:ccec456b4dbb 114 } else if(namedsc =="chip") {
yyue 0:ccec456b4dbb 115 serial.puts("Chip runs.\r\n");
yyue 0:ccec456b4dbb 116 microchipDACs[i]->setOutput(amplitude,frequency);
yyue 0:ccec456b4dbb 117
yyue 0:ccec456b4dbb 118
yyue 0:ccec456b4dbb 119 } else serial.puts("The name of DAC is invalid.Function cannot run.\r\n");
yyue 0:ccec456b4dbb 120
yyue 0:ccec456b4dbb 121
yyue 0:ccec456b4dbb 122 }
yyue 0:ccec456b4dbb 123
yyue 0:ccec456b4dbb 124 }
yyue 0:ccec456b4dbb 125