dujardin stephane / Mbed 2 deprecated base_mbed_SAE1_S2

Dependencies:   mbed

Revision:
12:09b5ebdca214
Parent:
11:fa0f1787ea13
Child:
13:b19e2f833926
--- a/main.cpp	Sat Mar 28 15:50:27 2020 +0000
+++ b/main.cpp	Sat Oct 09 12:22:14 2021 +0000
@@ -1,112 +1,68 @@
 #include "mbed.h"  //
-
-//-------- programme de test carte   MES432 ----------------
-// chaque seconde, numérise 4 valeurs sur ch1 ch2 
-// ***************et envoie en duj2 de la trame de test exemple dit "toto"  
-//
-// configuration liaison série  à 19200 bps   ( driver stlink)
-// A0 et A1 sont placées en entrée analogique ( mesure sortie AOP)
-// A3 et A4 sont placées en sortie analogique ( offset vers AOP)
-// sorties led sur carte nommée LL , IO sur D3 , pol sur D2
-// broches D0 D1  sont précablées en I2C  ( sans plus)
-// connecteur (vue de face)*** I2C   I2C   IO  Ov  Ov   3.3V   ch2   ch1 ***
-//------------------------------------
-
+// programme formation   carte MicroC SAE S2 1.2
 //****************** déclaration des broches ****************
 Serial pc(SERIAL_TX, SERIAL_RX);            //  PORT SERIE SUR usb  !! 
-AnalogIn  Ch1(A1) ;AnalogIn  Ch2(A0);       //  entrées ana nommées Ch1  Ch2
-AnalogOut out1(A3);AnalogOut out2(A4);      //  sorties ana nommées out1 out2
-I2C i2c(D0,D1);                             // (sda,scl)  canal I2C nommé i2c
-DigitalOut pol(D2);                         //  polarisation à 3.3V I2C ( si à 1)
-DigitalOut IO(D3);                          //  sortie TTL nommée S0
-DigitalOut LL(LED1);                        //  led nommée LL ( sur module L432
-// nota IO peut etre déclarée en entrée en ecrivant  DigitalIn IO(D3);
-//**********************************************************************
-uint16_t chi[5];  // déclaratiion d'un tableau  d'entiers 16bits sans signe
-float chf[5];     // déclaration d'un tableau de float 
-int recpt = 0;    //  on y pose l'arrivé d'un octet de la liaison série  
+AnalogIn  Ch1(A0) ;    // pour mesure de Vs de   SAE S2 1.1  0.1V/°C
+AnalogOut Vk(A4)  ;    // sortie compensation temperature vers SAE S2 1.1 
+AnalogIn  P1(A1)  ;AnalogIn  P0(A3) ; // clef de carte 11 pour temperature
+AnalogIn  simulVs(A2) ;    // potentiometre de simulation de Vs 
+DigitalOut plus(D1);   // alim pull up interupteur     
+DigitalIn inter(D2);   // entrée mesure inter        0 ou 1         
+DigitalOut  LED(D9);   // sortie LED carte MicroC
+          
+//****variables ***********************************************************
+uint16_t chi[10];  // declare un tableau d'int >0
+int recpt = 0;     // varriable pour arrivée d'un octet de la liaison série  
 
-int XX = 0;
-int YY = 64000;
-int P1 ; int P2 ; int P3 ; int P4; // int vers hexa msb > lsb en ascii
+float inVs = 0.5 ;    // variable pour Vs   float de 0 à 1 pour 0 à 3.3V
+float simVs = 0.5;    // variable pour V potentiomètre 
+float outVk = 0.3681; // varible qui fait Vk = 1.244  ( compense ambiant)
+int   out = 0    ;    // variable de sortie à serialiser 
+int   CAL = 0    ;    // si demande de calibration = 1 
 
 //******** sous programmes ( situés en bas  de cette page )
-int hexa( int in)
-    { // sous programme de traduction de 4 bits d'un int en  ascii 
-    int out = '0';   
-    if ( in == 0) out='0'; if( in ==1 ) out ='1'; if ( in == 2 ) out = '2'; 
-    if ( in == 3) out='3'; if( in ==4 ) out ='4'; if ( in == 5 ) out = '5'; 
-    if ( in == 6) out='6'; if( in ==7 ) out ='7'; if ( in == 8 ) out = '8'; 
-    if ( in == 9) out='9'; if( in ==10) out ='A'; if ( in == 11) out = 'B'; 
-    if ( in == 12)out='C'; if( in ==13) out ='D'; if ( in == 14) out = 'E';
-    if ( in == 15)out='F';    
-    return  (out);   
-    }
-
-void trad( int in )
-    {  // sous programme de traduction d'un int en hexa
-    int din = in / 4096; 
-    P1 = hexa(din);
-    int ddin = din * 4096 ;
-    din = in - ddin;
-    int dddin = din/256 ;
-    P2 = hexa(dddin);
-    int ddddin = dddin * 256 ;
-    din = din - ddddin;
-    int dddddin = din/16;
-    P3 = hexa(dddddin);
-    int ddddddin = dddddin*16 ;
-    din = din - ddddddin;
-    P4 = hexa (din) ;
-    }
 void interrupt();  // lié à la liaison série 
 
-void init(void)  // initialisation 
+void init(void)  // initialisations hard  
     {
-    pc.baud(19200);     // vitesse liaison série
+    pc.baud(115200);     // vitesse liaison série
     pc.attach(&interrupt, Serial::RxIrq);  // autorise IT de liaison serie 
-    pol = 1;            // polarisation résistancesde l' I2C  
-    LL = 0 ;            // led du L432 on
-    out1.write(0.25);    // sortie si ana A3 = 0.5 * 3.3V  soit 1.6 V
-    out2.write(0.25);   // sortie ana si A4 = 0.25* 3.3V  soit 0.8 V
-    IO = 0 ;            // sortie I/O  mise à 0  
+    plus = 1;            // polarisation résistances inter
+    LED = 0 ;            // led du MicroC off
+    Vk.write(outVk);     // sortie de vK 
     }
     
 int main()
     {
     init(); 
-    
-    while(1)        // boucle sans fin 
+    while(1)
         {
-        LL = !LL  ;     //inverse led carte  mbed
-        wait(0.1);      // delai 0.1s
-        XX =  Ch1.read_u16()/16 ;// read_u16 donne 12bits ijustifiés a gauche
-        YY =  Ch2.read_u16()/16; // on divise par 16 pour faire de 0 à 4095 12bits
-        //  attention 
-//exemple 1 ) Tranfert de deux int : XX et XX  en ascii ( base hexa)en DUJ2
-      pc.putc('i');          // pointeur 1 = 0
-      trad(XX);  // traduit un int XX en 4 ascii en hexa 
-      pc.putc('e');  pc.putc(P1); pc.putc(P2); pc.putc(P3);   pc.putc(P4); 
-      trad(YY);
-      pc.putc('e');  pc.putc(P1); pc.putc(P2); pc.putc(P3);   pc.putc(P4); 
-      pc.putc('q');   // top de fin traduction des data recues et utilisation 
-         // on verra le résultat sur Tera Term  en 19200 bauds
-         // comme ceci " ie0001e6400q" à la 1ere seconde 
-         // cette exemple vous servira à  valider votre processing
-        
-//exemple  2) mesurer et transferer sur usb serie ch1 en hex et ch2 en float ( non duj2)
-//       chi[1] =  Ch1.read_u16();  // mesure ch1 mise en int en memoire 16bits
-//       chf[1] =  Ch2.read();      // mesure ch2 mise en float en mémoire
-//       printf(" chi =0x%04x "  ,  chi[1] ); //affiche chi  en hexadecima ( 4 char)
-//       printf("     chf =%.6f \n", 3.3*( chf[1])); // affiche chf en float (6char ) 
-// on lira ceci "   chi =0x80b8      chf =0.710769   "  NON DUJ2
-
-        }   
+        if ( CAL == 1)
+           { CAL = 0 ;}    //Votre futur travail pour calibrer****************
+            
+        if( inter == 1)    // test K1 sur carte MicroC
+            {// si  inter ouvert mode normal 
+             LED = 1 ;    
+             //  votre travail pour mesurer la temperature sur Vs ************
+            }      
+        if ( inter == 0) 
+            { // si inter en CC : mode testavec mesure  sur pot 
+            LED = 0  ;                // eteindre LED  carte MicroC 
+            wait(0.5);                // delai 0.5s
+            simVs =  simulVs.read();  // lire le potentiomètre 
+            out = 300*simVs        ;  // mettre dans une echelle 0 à 300 simVs
+            pc.putc('D');             // ouvrir transfert
+            pc.printf("%d", out);     // duj10 de la temperature 
+            pc.putc('T');             // fermer et mettre dans température 
+            }
+        }
     }
     
 void interrupt()//"recepteur"  à chaque carractère reçut ce programme est activé
     {  // à vous de jouer !! 
     recpt =  pc.getc();  
-    if ( recpt == 'i') IO = !IO; // si 'i' inverse led carte MES
+    if ( recpt == 'l') LED = 1 ; //allumer  LED 
+    if ( recpt == 'a') CAL = 1 ; //demande de  calibration ( la votre ) 
+    //   à faire detecter p et m    pour faire Vk + ou - *********************
     return;
     }