Simple Voltage meter. The analog value is shown on a LCD and on the four LEDs ( fading mode ).

Dependencies:   TextLCD mbed

Committer:
Schueler
Date:
Mon Feb 14 08:12:38 2011 +0000
Revision:
0:13f61a33458d
1.0

Who changed what in which revision?

UserRevisionLine numberNew 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 }