tp analogique numérique + numérique analogique

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 AnalogIn analog_value(A0);
00004 AnalogOut sortie(D7);
00005 Timer Chronometre;
00006 Ticker interruption;
00007 
00008 float amplitude;
00009 DigitalOut led(LED1);
00010 
00011 void signal_de_sortie() {
00012         sortie = (float) (0.5+amplitude*sin(Chronometre.read()*314));
00013     }
00014 
00015 int main()
00016 {
00017     Chronometre.start();
00018     float meas_r;
00019     float meas_v;
00020     unsigned int valeur_numerique;
00021     interruption.attach(&signal_de_sortie, 0.001);   // exécute la fonction 1000 x par secondes
00022     
00023     printf("\nAnalogIn example\n");
00024 
00025     while(1) {
00026 
00027         meas_r = analog_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
00028         meas_v = meas_r * 3300; // Converts value in the 0V-3.3V range
00029         valeur_numerique = analog_value.read_u16();
00030         
00031         // Display values
00032         printf("measure = %d = %f = %.0f mV\n", valeur_numerique, meas_r, meas_v);
00033 
00034 //        sortie = meas_r;
00035         amplitude = meas_r / 2;
00036 
00037         // LED is ON is the value is below 1V
00038         if (meas_v < 1000) {
00039             led = 1; // LED ON
00040         } else {
00041             led = 0; // LED OFF
00042         }
00043 
00044         wait(1.0); // 1 second
00045     }
00046 }