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: DigitDisplay mbed
Fork of mbed_Grove_Thermometer_display by
Revision 1:670af95fef78, committed 2015-02-13
- 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