CPS-Lab / Mbed 2 deprecated p442-lab02

Dependencies:   mbed

Fork of Lab2 by CPS Lab

Committer:
kmhatre
Date:
Sat Mar 03 01:12:14 2018 +0000
Revision:
2:b641c02f2844
Parent:
1:9fe22ab77011
Child:
3:8489a61207fa
NONE

Who changed what in which revision?

UserRevisionLine numberNew 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 2:b641c02f2844 15 * CODE BY KRISH HEMANT MHATRE AND ETHAN ZHANG
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 1:9fe22ab77011 132 float adjust = (0x7FFF/2)+(0x7FFF/10);
kmhatre 1:9fe22ab77011 133
kmhatre 1:9fe22ab77011 134 pc.printf("Voltage is %f\n\r", volt);
kmhatre 1:9fe22ab77011 135 my_output.write_u16(volt*adjust);
kmhatre 0:9439aa91d4cb 136 pc.printf("Voltage changed\n\r");
kmhatre 0:9439aa91d4cb 137 }
kmhatre 0:9439aa91d4cb 138 }
kmhatre 0:9439aa91d4cb 139 else
kmhatre 0:9439aa91d4cb 140 {
kmhatre 0:9439aa91d4cb 141 pc.printf("ERR\n\r");
kmhatre 0:9439aa91d4cb 142 }
kmhatre 0:9439aa91d4cb 143 i = 0;
kmhatre 0:9439aa91d4cb 144 for(int j = 0; j < size; j++)
kmhatre 0:9439aa91d4cb 145 {
kmhatre 0:9439aa91d4cb 146 str[j] = '\0';
kmhatre 0:9439aa91d4cb 147 }
kmhatre 0:9439aa91d4cb 148 pc.printf("cps%\n\r");
kmhatre 0:9439aa91d4cb 149 }
kmhatre 0:9439aa91d4cb 150 i++;
kmhatre 0:9439aa91d4cb 151 }
kmhatre 0:9439aa91d4cb 152 }
kmhatre 0:9439aa91d4cb 153
kmhatre 0:9439aa91d4cb 154