Paso 3: Escribir un programa
Al final que te voy a mostrar completan el programa. Añadir interruptores SW3 para CAD y SW1 para ADC. Cuando ni el ADC o DAC es correr en la pantalla LCD se imprime "on". La bandera se utiliza para verificar qué interruptor es presionado.
/* for: instructables peripheries: DAC, ADC, TSI, LCD. LEDs, Switches author: kubavit */ #include "mbed.h" #include "SLCD.h" #include "tsi_sensor.h"AnalogIn adc0(PTE20); AnalogOut dac0(PTE30); SLCD lcd; DigitalOut led(LED1); DigitalOut led2(LED2); DigitalIn keyADC(SW1); DigitalIn keyDAC(SW3); TSIAnalogSlider slider(PTB16, PTB17, 100); uint8_t flag; uint8_t check_key(void); uint8_t show_title; void adc_programme(void); void dac_programme(void);int main(){ led = led2 = 1; // turn off leds lcd.printf(" on "); while (true) { lcd.CharPosition = 0; if(check_key() == 2) // if SW3 pressed { dac_programme(); // run DAC } if(check_key() == 1) // if SW1 pressed { adc_programme(); // run ADC } wait(0.2); // delay 200ms } }uint8_t check_key(void) { if( !keyADC ) { flag = 1; show_title = 1; } if( !keyDAC ) { flag = 2; show_title = 2; } return flag; }void adc_programme(void) { if(show_title == 1) // shows only when ADC programme is started { led2 = 1; lcd.clear(); lcd.printf("ADC "); wait(2); show_title = 0; } lcd.printf("%1.2fv", adc0.read()*3.3); //float value x.xx led = !led; }