
Programa que lee dos canales del adc y lo muestra sobre una pantalla lcd más un botón de cambio de pantalla para visualizar el valor entero del adc y su voltaje real
main.cpp@0:f2586ffe073a, 2018-12-19 (annotated)
- Committer:
- Otakutronics
- Date:
- Wed Dec 19 00:40:10 2018 +0000
- Revision:
- 0:f2586ffe073a
Lectura del modulo adc y se muestra sobre un lcd
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Otakutronics | 0:f2586ffe073a | 1 | #include "mbed.h" |
Otakutronics | 0:f2586ffe073a | 2 | #include "TextLCD.h" |
Otakutronics | 0:f2586ffe073a | 3 | |
Otakutronics | 0:f2586ffe073a | 4 | AnalogIn Canal1(A1); //PTB3 |
Otakutronics | 0:f2586ffe073a | 5 | AnalogIn Canal0(A0); //PTB2 |
Otakutronics | 0:f2586ffe073a | 6 | |
Otakutronics | 0:f2586ffe073a | 7 | InterruptIn btn(PTA2); |
Otakutronics | 0:f2586ffe073a | 8 | |
Otakutronics | 0:f2586ffe073a | 9 | DigitalOut led(LED_RED,1); |
Otakutronics | 0:f2586ffe073a | 10 | DigitalOut led2(LED_BLUE,1); |
Otakutronics | 0:f2586ffe073a | 11 | |
Otakutronics | 0:f2586ffe073a | 12 | TextLCD LCD(PTC2, PTC3, PTD0, PTD1, PTD2, PTD3); //rs, en, D4, D5, D6, D7 |
Otakutronics | 0:f2586ffe073a | 13 | |
Otakutronics | 0:f2586ffe073a | 14 | bool sw = false; |
Otakutronics | 0:f2586ffe073a | 15 | float AdcFlt; |
Otakutronics | 0:f2586ffe073a | 16 | |
Otakutronics | 0:f2586ffe073a | 17 | void ISR_Switch() |
Otakutronics | 0:f2586ffe073a | 18 | { |
Otakutronics | 0:f2586ffe073a | 19 | sw = !sw; |
Otakutronics | 0:f2586ffe073a | 20 | LCD.cls(); |
Otakutronics | 0:f2586ffe073a | 21 | wait(0.25); |
Otakutronics | 0:f2586ffe073a | 22 | } |
Otakutronics | 0:f2586ffe073a | 23 | |
Otakutronics | 0:f2586ffe073a | 24 | int main() |
Otakutronics | 0:f2586ffe073a | 25 | { |
Otakutronics | 0:f2586ffe073a | 26 | btn.mode(PullUp); |
Otakutronics | 0:f2586ffe073a | 27 | btn.rise(&ISR_Switch); |
Otakutronics | 0:f2586ffe073a | 28 | |
Otakutronics | 0:f2586ffe073a | 29 | wait(0.25); |
Otakutronics | 0:f2586ffe073a | 30 | LCD.cls(); |
Otakutronics | 0:f2586ffe073a | 31 | wait(0.25); |
Otakutronics | 0:f2586ffe073a | 32 | |
Otakutronics | 0:f2586ffe073a | 33 | while (true) |
Otakutronics | 0:f2586ffe073a | 34 | { |
Otakutronics | 0:f2586ffe073a | 35 | if (sw == 0) |
Otakutronics | 0:f2586ffe073a | 36 | { |
Otakutronics | 0:f2586ffe073a | 37 | LCD.locate(0,0); |
Otakutronics | 0:f2586ffe073a | 38 | LCD.printf("CH0 Valor: %5d",Canal0.read_u16()); |
Otakutronics | 0:f2586ffe073a | 39 | LCD.locate(0,1); |
Otakutronics | 0:f2586ffe073a | 40 | LCD.printf("CH1 Valor: %5d",Canal1.read_u16()); |
Otakutronics | 0:f2586ffe073a | 41 | led = 0; |
Otakutronics | 0:f2586ffe073a | 42 | wait(0.05); |
Otakutronics | 0:f2586ffe073a | 43 | led = 1; |
Otakutronics | 0:f2586ffe073a | 44 | wait(0.45); |
Otakutronics | 0:f2586ffe073a | 45 | } |
Otakutronics | 0:f2586ffe073a | 46 | else |
Otakutronics | 0:f2586ffe073a | 47 | { |
Otakutronics | 0:f2586ffe073a | 48 | AdcFlt = Canal0.read_u16()*3.3/65536; |
Otakutronics | 0:f2586ffe073a | 49 | LCD.locate(0,0); |
Otakutronics | 0:f2586ffe073a | 50 | LCD.printf("CH0 Volts: %.3f",AdcFlt); |
Otakutronics | 0:f2586ffe073a | 51 | AdcFlt = Canal1.read_u16()*3.3/65536; |
Otakutronics | 0:f2586ffe073a | 52 | LCD.locate(0,1); |
Otakutronics | 0:f2586ffe073a | 53 | LCD.printf("CH1 Volts: %.3f",AdcFlt); |
Otakutronics | 0:f2586ffe073a | 54 | led2 = 0; |
Otakutronics | 0:f2586ffe073a | 55 | wait(0.05); |
Otakutronics | 0:f2586ffe073a | 56 | led2 = 1; |
Otakutronics | 0:f2586ffe073a | 57 | wait(0.45); |
Otakutronics | 0:f2586ffe073a | 58 | } |
Otakutronics | 0:f2586ffe073a | 59 | } |
Otakutronics | 0:f2586ffe073a | 60 | } |