read speed

Dependencies:   mbed TextLCD

Files at this revision

API Documentation at this revision

Comitter:
cc061495
Date:
Fri Jun 02 05:19:17 2017 +0000
Parent:
0:f3b9844205f2
Commit message:
New version(read speed with LCD)

Changed in this revision

TextLCD.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r f3b9844205f2 -r f54097bcb8a0 TextLCD.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/TextLCD.lib	Fri Jun 02 05:19:17 2017 +0000
@@ -0,0 +1,1 @@
+http://developer.mbed.org/users/simon/code/TextLCD/#308d188a2d3a
diff -r f3b9844205f2 -r f54097bcb8a0 main.cpp
--- a/main.cpp	Wed May 31 12:15:01 2017 +0000
+++ b/main.cpp	Fri Jun 02 05:19:17 2017 +0000
@@ -1,37 +1,50 @@
 #include "mbed.h"
- 
+#include "TextLCD.h"
+
+TextLCD lcd(PC_11,PC_10,PC_0,PC_3,PC_1,PC_2); // RS, E, D4-D7
 AnalogIn analog_value(PA_0);
- 
-DigitalOut led(LED1);
-Serial pc(USBTX,USBRX,115200);
 Timer t;
 
 int main() {
-    pc.format(8,SerialBase::None,1);
-    float meas;
-    led = 1;
-    pc.printf("\nAnalogIn example\n");
-    float max, min, mean;
-    max = analog_value.read()*3300;
-    min = max;
-    
+    double meas, sum, count = 0, range, highscore = 0;
+    lcd.cls();
+    lcd.printf("Welcome to Speed Testing!");
     
     while(1) {
-        meas = analog_value.read(); // Converts and read the analog input value (value from 0.0 to 1.0)
-        meas = meas * 3300; // Change the value to be in the 0 to 3300 range
-        if (meas>max)
-            max = meas;
-        if (meas<min)
-            min = meas;
-        mean = (max + min)/2;
-        pc.printf("measure = %.0f mV, mean = %.0f mV\n", meas, mean);
-        if (meas < mean) { // If the value is greater than 2V then switch the LED on
+        meas = analog_value.read() * 3300;  // Converts and read the analog input value (value from 0.0 to 1.0)
+                                            // Change the value to be in the 0 to 3300 range
+        count++;
+        sum+=meas;
+        range=sum/count;
+        
+        if(range > meas)
+            range -= 100.0;
+            
+        //pc.printf("measure = %.0f mV, mean = %.0f mV\n", meas, range);
+        if (meas < range) { // If the value is greater than 2V then switch the LED on
+          lcd.cls();
           t.start();
-          while(analog_value.read()*3300 < mean);
+          while(analog_value.read()*3300 < range);
           t.stop();
-          //if(t.read() > 0.00001)
-          pc.printf("The time taken was %f seconds\n", t.read());
-          wait(1);
+          if(t.read() > 0.0001){
+            double time = t.read();
+            double speed = 0.25 / time;
+            if(speed > highscore){
+                highscore = speed;
+                lcd.printf("!!!New record!!!");
+                lcd.locate(0,1);
+                lcd.printf("!!!!!!!!!!!!!!!!");
+                wait(3);
+            }
+            lcd.locate(0,0);
+            lcd.printf("%f s", time);
+            lcd.locate(0,1);
+            lcd.printf("%f m/s", speed);
+          }
+          else{
+            lcd.locate(0,0);
+            lcd.printf("Too fast, didn't read =.=");
+          }
         }
         t.reset();
     }