Dominique Bultez
/
DB_LCD20x4
A frequency meter using a 20x4 LCD
main.cpp@1:4c16fd7f2821, 2010-11-23 (annotated)
- Committer:
- Buldom
- Date:
- Tue Nov 23 21:18:25 2010 +0000
- Revision:
- 1:4c16fd7f2821
- Parent:
- 0:e01529ec0e2d
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Buldom | 0:e01529ec0e2d | 1 | // |
Buldom | 0:e01529ec0e2d | 2 | // DB_LCD20x4 Program |
Buldom | 0:e01529ec0e2d | 3 | // Nov 7th,2010 Started |
Buldom | 1:4c16fd7f2821 | 4 | // |
Buldom | 0:e01529ec0e2d | 5 | // |
Buldom | 0:e01529ec0e2d | 6 | |
Buldom | 0:e01529ec0e2d | 7 | #include "mbed.h" |
Buldom | 0:e01529ec0e2d | 8 | #include "TextLCD.h" |
Buldom | 0:e01529ec0e2d | 9 | |
Buldom | 0:e01529ec0e2d | 10 | |
Buldom | 0:e01529ec0e2d | 11 | #define PERIOD 0.1 // refresh period of measurement |
Buldom | 0:e01529ec0e2d | 12 | |
Buldom | 0:e01529ec0e2d | 13 | DigitalOut myled1(LED1); // Assign LED output port LED1 to LED4 |
Buldom | 0:e01529ec0e2d | 14 | DigitalOut myled2(LED2); |
Buldom | 0:e01529ec0e2d | 15 | DigitalOut myled3(LED3); |
Buldom | 0:e01529ec0e2d | 16 | DigitalOut myled4(LED4); |
Buldom | 0:e01529ec0e2d | 17 | InterruptIn button(p25); |
Buldom | 0:e01529ec0e2d | 18 | |
Buldom | 0:e01529ec0e2d | 19 | Timer timer; |
Buldom | 0:e01529ec0e2d | 20 | long var; |
Buldom | 0:e01529ec0e2d | 21 | long count; |
Buldom | 0:e01529ec0e2d | 22 | long hertz; |
Buldom | 0:e01529ec0e2d | 23 | int pos = 0; |
Buldom | 0:e01529ec0e2d | 24 | int array[100]; |
Buldom | 0:e01529ec0e2d | 25 | |
Buldom | 0:e01529ec0e2d | 26 | TextLCD lcd(p24, p26, p27, p28, p29, p30, TextLCD::LCD20x4); // rs,e,d0,d1,d2,d3,20 char's x 4 lines |
Buldom | 0:e01529ec0e2d | 27 | |
Buldom | 0:e01529ec0e2d | 28 | void flip() { |
Buldom | 0:e01529ec0e2d | 29 | myled4 = !myled4; |
Buldom | 0:e01529ec0e2d | 30 | array[pos] = timer.read_us(); |
Buldom | 0:e01529ec0e2d | 31 | timer.reset(); |
Buldom | 0:e01529ec0e2d | 32 | timer.start(); |
Buldom | 0:e01529ec0e2d | 33 | pos++; |
Buldom | 0:e01529ec0e2d | 34 | if (pos == 100) { |
Buldom | 0:e01529ec0e2d | 35 | pos = 0; |
Buldom | 0:e01529ec0e2d | 36 | } |
Buldom | 0:e01529ec0e2d | 37 | } |
Buldom | 0:e01529ec0e2d | 38 | |
Buldom | 0:e01529ec0e2d | 39 | int main() { |
Buldom | 0:e01529ec0e2d | 40 | float tim; |
Buldom | 0:e01529ec0e2d | 41 | pos = 0; |
Buldom | 0:e01529ec0e2d | 42 | int i; |
Buldom | 0:e01529ec0e2d | 43 | for (i=0; i<100; i++) { |
Buldom | 0:e01529ec0e2d | 44 | array[i] = 0; |
Buldom | 0:e01529ec0e2d | 45 | } |
Buldom | 0:e01529ec0e2d | 46 | |
Buldom | 1:4c16fd7f2821 | 47 | set_time(1290443600); // 22 Nov 2010 - 16H33 |
Buldom | 0:e01529ec0e2d | 48 | |
Buldom | 0:e01529ec0e2d | 49 | lcd.cls(); |
Buldom | 0:e01529ec0e2d | 50 | lcd.locate(0, 0); |
Buldom | 0:e01529ec0e2d | 51 | // 0 1 2 |
Buldom | 0:e01529ec0e2d | 52 | lcd.printf(" LCD Frequencemeter "); |
Buldom | 0:e01529ec0e2d | 53 | lcd.locate(0, 1); |
Buldom | 0:e01529ec0e2d | 54 | lcd.printf("LCD 20x4 test progrm"); |
Buldom | 0:e01529ec0e2d | 55 | lcd.locate(0, 2); |
Buldom | 0:e01529ec0e2d | 56 | time_t seconds = time(NULL); |
Buldom | 0:e01529ec0e2d | 57 | lcd.printf("%s", ctime(&seconds)); |
Buldom | 0:e01529ec0e2d | 58 | lcd.locate(0, 3); |
Buldom | 0:e01529ec0e2d | 59 | lcd.printf("(c) Dominique Bultez"); |
Buldom | 0:e01529ec0e2d | 60 | wait(2); |
Buldom | 0:e01529ec0e2d | 61 | lcd.cls(); |
Buldom | 0:e01529ec0e2d | 62 | lcd.locate(0, 0); |
Buldom | 0:e01529ec0e2d | 63 | lcd.printf(" LCD Frequencemeter "); |
Buldom | 0:e01529ec0e2d | 64 | lcd.locate(0, 3); |
Buldom | 0:e01529ec0e2d | 65 | lcd.printf("(c) Dominique Bultez"); |
Buldom | 0:e01529ec0e2d | 66 | |
Buldom | 0:e01529ec0e2d | 67 | timer.reset(); |
Buldom | 0:e01529ec0e2d | 68 | button.rise(&flip); // attach the address of the flip function to the rising edge |
Buldom | 0:e01529ec0e2d | 69 | var = 0; |
Buldom | 0:e01529ec0e2d | 70 | tim = PERIOD; |
Buldom | 0:e01529ec0e2d | 71 | |
Buldom | 0:e01529ec0e2d | 72 | while (1) { |
Buldom | 0:e01529ec0e2d | 73 | for (i=0; i<100; i++) { |
Buldom | 0:e01529ec0e2d | 74 | var = var + array[i]; |
Buldom | 0:e01529ec0e2d | 75 | } |
Buldom | 0:e01529ec0e2d | 76 | count = var / 100; // moyenne de 100 �chantillons |
Buldom | 0:e01529ec0e2d | 77 | hertz = 1000000/count; |
Buldom | 0:e01529ec0e2d | 78 | var = 0; |
Buldom | 0:e01529ec0e2d | 79 | myled1 = 1; |
Buldom | 0:e01529ec0e2d | 80 | wait(tim); |
Buldom | 0:e01529ec0e2d | 81 | myled1 = 0; |
Buldom | 0:e01529ec0e2d | 82 | myled2 = 1; |
Buldom | 0:e01529ec0e2d | 83 | wait(tim); |
Buldom | 0:e01529ec0e2d | 84 | myled2 = 0; |
Buldom | 0:e01529ec0e2d | 85 | myled3 = 1; |
Buldom | 0:e01529ec0e2d | 86 | wait(tim); |
Buldom | 0:e01529ec0e2d | 87 | myled3 = 0; |
Buldom | 0:e01529ec0e2d | 88 | |
Buldom | 0:e01529ec0e2d | 89 | //lcd.cls(); |
Buldom | 0:e01529ec0e2d | 90 | //lcd.locate(0, 0); // 1st line top |
Buldom | 0:e01529ec0e2d | 91 | // 0 1 2 |
Buldom | 0:e01529ec0e2d | 92 | // 12345678901234567890 |
Buldom | 0:e01529ec0e2d | 93 | //lcd.printf(" LCD Frequencemeter "); |
Buldom | 0:e01529ec0e2d | 94 | lcd.locate(0, 1); // 2nd line |
Buldom | 0:e01529ec0e2d | 95 | lcd.printf("%d uSec ", count); |
Buldom | 0:e01529ec0e2d | 96 | lcd.locate(0, 2); |
Buldom | 0:e01529ec0e2d | 97 | lcd.printf("%d Hz ", hertz); |
Buldom | 0:e01529ec0e2d | 98 | //lcd.locate(0, 3); |
Buldom | 0:e01529ec0e2d | 99 | //lcd.printf("(c) Dominique Bultez"); |
Buldom | 0:e01529ec0e2d | 100 | } |
Buldom | 0:e01529ec0e2d | 101 | } |