Ben Schueler
/
analog_test
Simple Voltage meter. The analog value is shown on a LCD and on the four LEDs ( fading mode ).
main.cpp@0:13f61a33458d, 2011-02-14 (annotated)
- Committer:
- Schueler
- Date:
- Mon Feb 14 08:12:38 2011 +0000
- Revision:
- 0:13f61a33458d
1.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Schueler | 0:13f61a33458d | 1 | #include "mbed.h" |
Schueler | 0:13f61a33458d | 2 | #include "TextLCD.h" |
Schueler | 0:13f61a33458d | 3 | |
Schueler | 0:13f61a33458d | 4 | |
Schueler | 0:13f61a33458d | 5 | //TextLCD lcd( p11, p12, p30, p29, p28, p27, TextLCD::LCD20x4 ); // rs, e, d0-d3 |
Schueler | 0:13f61a33458d | 6 | //TextLCD lcd(p24, p25, p26, p27, p28, p29, p30); // rs, rw, e, d4, d5, d6, d7 |
Schueler | 0:13f61a33458d | 7 | TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, rw, e, d4, d5, d6, d7 |
Schueler | 0:13f61a33458d | 8 | Serial pc( USBTX, USBRX ); |
Schueler | 0:13f61a33458d | 9 | //DigitalOut LEDOUT0( LED1 ); |
Schueler | 0:13f61a33458d | 10 | //DigitalOut LEDOUT1( LED2 ); |
Schueler | 0:13f61a33458d | 11 | //DigitalOut LEDOUT2( LED3 ); |
Schueler | 0:13f61a33458d | 12 | //DigitalOut LEDOUT3( LED4 ); |
Schueler | 0:13f61a33458d | 13 | PwmOut led1 (LED1); |
Schueler | 0:13f61a33458d | 14 | PwmOut led2 (LED2); |
Schueler | 0:13f61a33458d | 15 | PwmOut led3 (LED3); |
Schueler | 0:13f61a33458d | 16 | PwmOut led4 (LED4); |
Schueler | 0:13f61a33458d | 17 | AnalogIn A0( p20 ); |
Schueler | 0:13f61a33458d | 18 | |
Schueler | 0:13f61a33458d | 19 | float i; |
Schueler | 0:13f61a33458d | 20 | float l; |
Schueler | 0:13f61a33458d | 21 | int j; |
Schueler | 0:13f61a33458d | 22 | int cnt = 0; |
Schueler | 0:13f61a33458d | 23 | |
Schueler | 0:13f61a33458d | 24 | int main() { |
Schueler | 0:13f61a33458d | 25 | led1 = led2 = led3 = led4 = 0; |
Schueler | 0:13f61a33458d | 26 | pc.printf("\x1B\x48\x1B\x4A"); |
Schueler | 0:13f61a33458d | 27 | pc.printf("Voltmeter\n\r"); |
Schueler | 0:13f61a33458d | 28 | lcd.printf("Voltmeter"); |
Schueler | 0:13f61a33458d | 29 | lcd.locate(0,2); |
Schueler | 0:13f61a33458d | 30 | lcd.printf("0-----1-----2-----3-"); |
Schueler | 0:13f61a33458d | 31 | while(1) { |
Schueler | 0:13f61a33458d | 32 | i = A0; |
Schueler | 0:13f61a33458d | 33 | l = i * 4; |
Schueler | 0:13f61a33458d | 34 | cnt = cnt < 8 ? ++cnt : 0; |
Schueler | 0:13f61a33458d | 35 | if (cnt == 0 ) |
Schueler | 0:13f61a33458d | 36 | { |
Schueler | 0:13f61a33458d | 37 | i *= 3.3; // 1.0 -> 3.3V |
Schueler | 0:13f61a33458d | 38 | lcd.locate(0,1); |
Schueler | 0:13f61a33458d | 39 | lcd.printf( "%1.3f " , i ); |
Schueler | 0:13f61a33458d | 40 | for ( int j = 0; j < 20 ; j++ ) |
Schueler | 0:13f61a33458d | 41 | { |
Schueler | 0:13f61a33458d | 42 | lcd.locate(j,3); |
Schueler | 0:13f61a33458d | 43 | if ( ( (float) j ) / 20 * 3.3 < i ) { lcd.printf( "\xFF" ); } else { lcd.printf( "_" ); } |
Schueler | 0:13f61a33458d | 44 | } |
Schueler | 0:13f61a33458d | 45 | pc.printf("\x1B\x48"); |
Schueler | 0:13f61a33458d | 46 | pc.printf( "\n\n\rMeasured : %1.3f" , i ); |
Schueler | 0:13f61a33458d | 47 | } |
Schueler | 0:13f61a33458d | 48 | if ( l < 1 ) { led1 = l; l = 0; } else { led1 = 1; l = l - 1; } |
Schueler | 0:13f61a33458d | 49 | if ( l < 1 ) { led2 = l; l = 0; } else { led2 = 1; l = l - 1; } |
Schueler | 0:13f61a33458d | 50 | if ( l < 1 ) { led3 = l; l = 0; } else { led3 = 1; l = l - 1; } |
Schueler | 0:13f61a33458d | 51 | if ( l < 1 ) { led4 = l; l = 0; } else { led4 = 1; l = l - 1; } |
Schueler | 0:13f61a33458d | 52 | wait(0.05); |
Schueler | 0:13f61a33458d | 53 | } |
Schueler | 0:13f61a33458d | 54 | } |