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.
Dependencies: mbed
Fork of Lab2 by
main.cpp@0:9439aa91d4cb, 2018-02-06 (annotated)
- Committer:
- kmhatre
- Date:
- Tue Feb 06 10:34:11 2018 +0000
- Revision:
- 0:9439aa91d4cb
- Child:
- 1:9fe22ab77011
Resistor Networks/Multimeter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kmhatre | 0:9439aa91d4cb | 1 | #include "mbed.h" |
kmhatre | 0:9439aa91d4cb | 2 | |
kmhatre | 0:9439aa91d4cb | 3 | #if !DEVICE_ANALOGOUT |
kmhatre | 0:9439aa91d4cb | 4 | #error You cannot use this example as the AnalogOut is not supported on this device. |
kmhatre | 0:9439aa91d4cb | 5 | #else |
kmhatre | 0:9439aa91d4cb | 6 | AnalogOut my_output(PA_4); |
kmhatre | 0:9439aa91d4cb | 7 | #endif |
kmhatre | 0:9439aa91d4cb | 8 | #define OFFSET (0x7FFF) |
kmhatre | 0:9439aa91d4cb | 9 | |
kmhatre | 0:9439aa91d4cb | 10 | // Configuration for sinewave output |
kmhatre | 0:9439aa91d4cb | 11 | #define BUFFER_SIZE (360) |
kmhatre | 0:9439aa91d4cb | 12 | /* |
kmhatre | 0:9439aa91d4cb | 13 | * ENGR E 210 - CYBER PHYSICAL SYSTEMS (DIGITAL SYSTEMS) |
kmhatre | 0:9439aa91d4cb | 14 | * LAB 1 - LED/BUTTON/SERIAL |
kmhatre | 0:9439aa91d4cb | 15 | * CODE BY KRISH HEMANT MHATRE |
kmhatre | 0:9439aa91d4cb | 16 | */ |
kmhatre | 0:9439aa91d4cb | 17 | |
kmhatre | 0:9439aa91d4cb | 18 | #include "mbed.h" |
kmhatre | 0:9439aa91d4cb | 19 | #include <string.h> |
kmhatre | 0:9439aa91d4cb | 20 | |
kmhatre | 0:9439aa91d4cb | 21 | Serial pc(USBTX, USBRX); |
kmhatre | 0:9439aa91d4cb | 22 | DigitalOut led1(LED1); |
kmhatre | 0:9439aa91d4cb | 23 | DigitalIn button(PC_13); |
kmhatre | 0:9439aa91d4cb | 24 | |
kmhatre | 0:9439aa91d4cb | 25 | void Led(int a) |
kmhatre | 0:9439aa91d4cb | 26 | { |
kmhatre | 0:9439aa91d4cb | 27 | led1 = a; |
kmhatre | 0:9439aa91d4cb | 28 | } |
kmhatre | 0:9439aa91d4cb | 29 | |
kmhatre | 0:9439aa91d4cb | 30 | void Blink(int n) |
kmhatre | 0:9439aa91d4cb | 31 | { |
kmhatre | 0:9439aa91d4cb | 32 | int i = 0; |
kmhatre | 0:9439aa91d4cb | 33 | for(i=0; i<n; i++) |
kmhatre | 0:9439aa91d4cb | 34 | { |
kmhatre | 0:9439aa91d4cb | 35 | led1 = 1; |
kmhatre | 0:9439aa91d4cb | 36 | wait(0.5); |
kmhatre | 0:9439aa91d4cb | 37 | led1= 0; |
kmhatre | 0:9439aa91d4cb | 38 | wait(0.5); |
kmhatre | 0:9439aa91d4cb | 39 | } |
kmhatre | 0:9439aa91d4cb | 40 | } |
kmhatre | 0:9439aa91d4cb | 41 | |
kmhatre | 0:9439aa91d4cb | 42 | |
kmhatre | 0:9439aa91d4cb | 43 | void Button() |
kmhatre | 0:9439aa91d4cb | 44 | { |
kmhatre | 0:9439aa91d4cb | 45 | if(button.read() == 1) |
kmhatre | 0:9439aa91d4cb | 46 | { |
kmhatre | 0:9439aa91d4cb | 47 | pc.printf("RELEASED\n\r"); |
kmhatre | 0:9439aa91d4cb | 48 | } |
kmhatre | 0:9439aa91d4cb | 49 | else |
kmhatre | 0:9439aa91d4cb | 50 | { |
kmhatre | 0:9439aa91d4cb | 51 | pc.printf("PRESSED\n\r"); |
kmhatre | 0:9439aa91d4cb | 52 | } |
kmhatre | 0:9439aa91d4cb | 53 | } |
kmhatre | 0:9439aa91d4cb | 54 | |
kmhatre | 0:9439aa91d4cb | 55 | |
kmhatre | 0:9439aa91d4cb | 56 | int main() |
kmhatre | 0:9439aa91d4cb | 57 | { |
kmhatre | 0:9439aa91d4cb | 58 | pc.printf("Nucleo is running\n\r"); |
kmhatre | 0:9439aa91d4cb | 59 | pc.printf("cps%\n\r"); |
kmhatre | 0:9439aa91d4cb | 60 | int size = 32; |
kmhatre | 0:9439aa91d4cb | 61 | char str[size]; |
kmhatre | 0:9439aa91d4cb | 62 | int i = 0; |
kmhatre | 0:9439aa91d4cb | 63 | while(1) |
kmhatre | 0:9439aa91d4cb | 64 | { |
kmhatre | 0:9439aa91d4cb | 65 | str[i] = pc.getc(); |
kmhatre | 0:9439aa91d4cb | 66 | pc.putc(str[i]); |
kmhatre | 0:9439aa91d4cb | 67 | |
kmhatre | 0:9439aa91d4cb | 68 | if (i >= size) |
kmhatre | 0:9439aa91d4cb | 69 | { |
kmhatre | 0:9439aa91d4cb | 70 | pc.printf("OVER BUFFER\n\r"); |
kmhatre | 0:9439aa91d4cb | 71 | i = 0; |
kmhatre | 0:9439aa91d4cb | 72 | for(int j = 0; j < size; j++) |
kmhatre | 0:9439aa91d4cb | 73 | { |
kmhatre | 0:9439aa91d4cb | 74 | str[j] = 0; |
kmhatre | 0:9439aa91d4cb | 75 | } |
kmhatre | 0:9439aa91d4cb | 76 | pc.printf("cps%\n\r"); |
kmhatre | 0:9439aa91d4cb | 77 | } |
kmhatre | 0:9439aa91d4cb | 78 | if(str[i] == 13) |
kmhatre | 0:9439aa91d4cb | 79 | { |
kmhatre | 0:9439aa91d4cb | 80 | pc.printf("\n\rOK\n\r"); |
kmhatre | 0:9439aa91d4cb | 81 | str[i] = '\0'; |
kmhatre | 0:9439aa91d4cb | 82 | pc.printf("Command Recieved: %s\n\r", str); |
kmhatre | 0:9439aa91d4cb | 83 | char s[5]; |
kmhatre | 0:9439aa91d4cb | 84 | sscanf(str, "%s", s); |
kmhatre | 0:9439aa91d4cb | 85 | if(strcmp(str, "BUTTON") == 0) |
kmhatre | 0:9439aa91d4cb | 86 | { |
kmhatre | 0:9439aa91d4cb | 87 | Button(); |
kmhatre | 0:9439aa91d4cb | 88 | pc.printf("Button checked.\n\r"); |
kmhatre | 0:9439aa91d4cb | 89 | } |
kmhatre | 0:9439aa91d4cb | 90 | else if(strcmp("LED ON", str) == 0) |
kmhatre | 0:9439aa91d4cb | 91 | { |
kmhatre | 0:9439aa91d4cb | 92 | Led(1); |
kmhatre | 0:9439aa91d4cb | 93 | pc.printf("LED is on\n\r"); |
kmhatre | 0:9439aa91d4cb | 94 | } |
kmhatre | 0:9439aa91d4cb | 95 | else if(strcmp("LED OFF", str) == 0) |
kmhatre | 0:9439aa91d4cb | 96 | { |
kmhatre | 0:9439aa91d4cb | 97 | Led(0); |
kmhatre | 0:9439aa91d4cb | 98 | pc.printf("LED is off\n\r"); |
kmhatre | 0:9439aa91d4cb | 99 | } |
kmhatre | 0:9439aa91d4cb | 100 | else if(strcmp(s, "BLINK") == 0) |
kmhatre | 0:9439aa91d4cb | 101 | { |
kmhatre | 0:9439aa91d4cb | 102 | pc.printf("Reading a blink\n\r"); |
kmhatre | 0:9439aa91d4cb | 103 | char *a = strtok(str, " "); |
kmhatre | 0:9439aa91d4cb | 104 | a = strtok(NULL, " "); |
kmhatre | 0:9439aa91d4cb | 105 | pc.printf("Start blink\n\r"); |
kmhatre | 0:9439aa91d4cb | 106 | int n; |
kmhatre | 0:9439aa91d4cb | 107 | sscanf(a, " %d", &n); |
kmhatre | 0:9439aa91d4cb | 108 | if(n>=1 && n<=10) |
kmhatre | 0:9439aa91d4cb | 109 | { |
kmhatre | 0:9439aa91d4cb | 110 | Blink(n); |
kmhatre | 0:9439aa91d4cb | 111 | pc.printf("Blink complete\n\r"); |
kmhatre | 0:9439aa91d4cb | 112 | } |
kmhatre | 0:9439aa91d4cb | 113 | else |
kmhatre | 0:9439aa91d4cb | 114 | { |
kmhatre | 0:9439aa91d4cb | 115 | pc.printf("ERROR: Blink cycle should be between 1 and 10\n\r"); |
kmhatre | 0:9439aa91d4cb | 116 | } |
kmhatre | 0:9439aa91d4cb | 117 | } |
kmhatre | 0:9439aa91d4cb | 118 | else if(strncmp(str, "DC", 2) == 0) |
kmhatre | 0:9439aa91d4cb | 119 | { |
kmhatre | 0:9439aa91d4cb | 120 | pc.printf("Reading DC\n\r"); |
kmhatre | 0:9439aa91d4cb | 121 | char *s1 = strtok(str, " "); |
kmhatre | 0:9439aa91d4cb | 122 | s1 = strtok(NULL, " "); |
kmhatre | 0:9439aa91d4cb | 123 | float volt; |
kmhatre | 0:9439aa91d4cb | 124 | sscanf(s1, " %f", &volt); |
kmhatre | 0:9439aa91d4cb | 125 | |
kmhatre | 0:9439aa91d4cb | 126 | if((volt < (float)0.5) || (volt > (float)3.0)) |
kmhatre | 0:9439aa91d4cb | 127 | { |
kmhatre | 0:9439aa91d4cb | 128 | pc.printf("Voltage out of range\n\r"); |
kmhatre | 0:9439aa91d4cb | 129 | } |
kmhatre | 0:9439aa91d4cb | 130 | else |
kmhatre | 0:9439aa91d4cb | 131 | { |
kmhatre | 0:9439aa91d4cb | 132 | pc.printf("Voltag is %f\n\r", volt); |
kmhatre | 0:9439aa91d4cb | 133 | my_output.write_u16(volt*19720); |
kmhatre | 0:9439aa91d4cb | 134 | pc.printf("Voltage changed\n\r"); |
kmhatre | 0:9439aa91d4cb | 135 | } |
kmhatre | 0:9439aa91d4cb | 136 | } |
kmhatre | 0:9439aa91d4cb | 137 | else |
kmhatre | 0:9439aa91d4cb | 138 | { |
kmhatre | 0:9439aa91d4cb | 139 | pc.printf("ERR\n\r"); |
kmhatre | 0:9439aa91d4cb | 140 | } |
kmhatre | 0:9439aa91d4cb | 141 | i = 0; |
kmhatre | 0:9439aa91d4cb | 142 | for(int j = 0; j < size; j++) |
kmhatre | 0:9439aa91d4cb | 143 | { |
kmhatre | 0:9439aa91d4cb | 144 | str[j] = '\0'; |
kmhatre | 0:9439aa91d4cb | 145 | } |
kmhatre | 0:9439aa91d4cb | 146 | pc.printf("cps%\n\r"); |
kmhatre | 0:9439aa91d4cb | 147 | } |
kmhatre | 0:9439aa91d4cb | 148 | i++; |
kmhatre | 0:9439aa91d4cb | 149 | } |
kmhatre | 0:9439aa91d4cb | 150 | } |
kmhatre | 0:9439aa91d4cb | 151 | |
kmhatre | 0:9439aa91d4cb | 152 |