Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:ccec456b4dbb, 2017-01-26 (annotated)
- Committer:
- yyue
- Date:
- Thu Jan 26 04:33:47 2017 +0000
- Revision:
- 0:ccec456b4dbb
created coursework;
Who changed what in which revision?
User | Revision | Line number | New 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(µchipDAC); |
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 |