Andy Wu / Mbed 2 deprecated Ranodm

Dependencies:   DigitDisplay mbed

Fork of mbed_Grove_Thermometer_display by mbed school

Files at this revision

API Documentation at this revision

Comitter:
andywu0913
Date:
Fri Feb 13 12:17:36 2015 +0000
Parent:
0:dc5ba9b9f28a
Commit message:
??????????????????????

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r dc5ba9b9f28a -r 670af95fef78 main.cpp
--- a/main.cpp	Mon Feb 09 03:00:27 2015 +0000
+++ b/main.cpp	Fri Feb 13 12:17:36 2015 +0000
@@ -1,39 +1,95 @@
-/* Grove - Temprature Sensor demo v1.0
-*  This sensor detects the enviroment temprature,
-*  Uses a Arch-Pro board with Grove Base Shield
-*  Connect the Grove Temperature sensor to A0 and
-*  connect a Grove 4 digit LED display to the UART connector
-*  The temperature will be displayed in Celcius
-*  Modified by David Bottrill from the original Arduino code
-*  Reference: http://www.seeedstudio.com
-*/
+#include <mbed.h>
+#include <DigitDisplay.h>
+#include <time.h>
 
-#include "mbed.h"
-#include "DigitDisplay.h"
-
-DigitalOut myled(LED2);
+#define RUNTIMES 5
 
 DigitDisplay display(P4_29, P4_28);
-AnalogIn ain(P0_23);
+DigitalIn button(D6);
 
-int a;
-float temperature;
-int B=3975;                                                         //B value of the thermistor
-float resistance;
+void Merge(int a[], int b[], int low, int mid, int high);
+void MergePass(int a[], int b[], int seg, int size);
+void MergeSort(int a[], int size);
+
+int r_number,number[RUNTIMES],times=0;
 
 int main()
 {
-    while(1) {
-// multiply ain by 675 if the Grove shield is set to 5V or 1023 if set to 3.3V
-        a=ain*675;
-        resistance=(float)(1023-a)*10000/a;                         //get the resistance of the sensor;
-        temperature=1/(log(resistance/10000)/B+1/298.15)-273.15;    //convert to temperature via datasheet ;
-        myled = 1;
-        wait(0.8);
-        myled = 0;
-        wait(0.8);
-        display.write(temperature);
+    srand( (unsigned)time(NULL));
+    while(1) 
+    {
+           r_number=rand()%(9999)+1; 
+           display.write(r_number);
+           if(button)
+           {
+               number[times]=r_number;
+               display.write(number[times]);
+               wait(2);
+               times++;
+           }
+           if(times==RUNTIMES)
+           {
+               break;
+           }
+           wait(0.1);
+    }
+    MergeSort(number, sizeof(number) / sizeof(*number));
+    for(int i = 0; i < sizeof(number) / sizeof(*number); i++)
+    {
+        display.write(number[i]);
+        wait(1);
     }
 }
 
-
+void Merge(int a[], int b[], int low, int mid, int high)
+{
+    int k = low;
+    int begin1 = low;
+    int end1 = mid;
+    int begin2 = mid + 1;
+    int end2 = high;
+    while(k <= high )
+    {
+        if(begin1 > end1)
+            b[k++] = a[begin2++];
+        else if(begin2 > end2)
+            b[k++] = a[begin1++];
+        else
+    {
+        if(a[begin1] <= a[begin2])
+        b[k++] = a[begin1++];
+        else
+        b[k++] = a[begin2++];
+    }
+    }
+ 
+}
+ 
+void MergePass(int a[], int b[], int seg, int size)
+{
+    int seg_start_ind = 0;
+    while(seg_start_ind <= size - 2 * seg)
+    {
+    Merge(a, b, seg_start_ind, seg_start_ind + seg - 1, seg_start_ind + seg * 2 - 1);
+    seg_start_ind += 2 * seg;
+    }
+    if(seg_start_ind + seg < size)
+    Merge(a, b, seg_start_ind, seg_start_ind + seg - 1, size - 1);
+    else
+    for(int j = seg_start_ind; j < size; j++)
+        b[j] = a[j];
+}
+ 
+void MergeSort(int a[], int size)
+{
+    int* temp = new int[size];
+    int seg = 1;
+    while(seg < size)
+    {
+    MergePass(a, temp, seg, size);
+    seg += seg;
+    MergePass(temp, a, seg, size);
+    seg += seg;
+    }
+    delete [] temp;
+}
\ No newline at end of file