This code reads 5 analog inputs, converts them to string, then sends them over USART to PC. On PC LabVIEW app read and displays and logs values

Dependencies:   mbed

This code reads analog inputs form A0 to A4, which then gets converted to string and sent over USART.

String are parsed in the following manner:

Start char: $ Delimiter char: # End char: ?

example: Reading A01=2.53V and A02=1.2V the resulted parsed string would be: $2.530#1.200#?

Files at this revision

API Documentation at this revision

Comitter:
ChrisLusetic
Date:
Fri Mar 29 15:49:15 2019 +0000
Commit message:
Initial and final commit;

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 15f3699c39a5 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri Mar 29 15:49:15 2019 +0000
@@ -0,0 +1,54 @@
+//TODO: dodati sd card logger
+//TODO: dodati conversion for sensors
+//TODO: Serial Read from LabView on start
+//TODO: PWM output 
+
+#include "mbed.h"
+#include "stdio.h"
+#include "string"
+
+#define SAMPLE_RATE 0.01
+Serial pc(USBTX, USBRX); // tx, rx
+
+Timer timer;
+AnalogIn a_input[] = {A0,A1,A2,A3,A4};
+const int numberOfInputs=5;
+float analog_values[numberOfInputs];
+
+char buffer[100];
+char temp[30];
+void read_inputs();
+void convert_inputs();
+void send_results();
+
+void flushSerialBuffer(void) { char char1 = 0; while (pc.readable()) { char1 = pc.getc(); } return; }
+
+int main() {
+    timer.start();
+    flushSerialBuffer();
+    while(1){
+        if (timer.read() > SAMPLE_RATE) {
+        read_inputs();
+        convert_inputs();         
+        send_results();
+        timer.reset();
+                    }       
+             }
+ }
+void read_inputs(){
+    for (int i=0;i<numberOfInputs;i++){
+        analog_values[i]= a_input[i].read()*3.3;   //convert to voltage
+        }
+    }
+void convert_inputs(){
+     for (int i=0;i<numberOfInputs;i++){
+         sprintf(temp,"%.3f",analog_values[i]); //convert float to string
+         strcat(temp,"#"); //add delimiter
+         strcat(buffer,temp);  //concatenate buffer and new value
+        }
+    strcat(buffer,"?"); //end char
+    }
+void send_results(){
+    pc.printf(buffer);   //serial send buffer
+    sprintf(buffer,"$"); //start char
+    }
\ No newline at end of file
diff -r 000000000000 -r 15f3699c39a5 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Fri Mar 29 15:49:15 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file