Stap 3: Het schrijven van een programma
Compleet programma aan het eind dat zal ik je laten zien. Ik sluit schakelaars SW3 voor DAC en SW1 voor ADC. Wanneer noch de ADC of DAC is "on" LCD waarop wordt afgedrukt. De vlag wordt gebruikt om te controleren welke schakelaar wordt ingedrukt.
/* 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; }