Loup Langard / Mbed 2 deprecated base_mbed_SAE1_S2-V0

Dependencies:   mbed

Revision:
13:b19e2f833926
Parent:
12:09b5ebdca214
Child:
14:f632015dde70
--- a/main.cpp	Sat Oct 09 12:22:14 2021 +0000
+++ b/main.cpp	Fri Dec 17 17:42:00 2021 +0000
@@ -1,35 +1,34 @@
 #include "mbed.h"  //
-// programme formation   carte MicroC SAE S2 1.2
+// SAE1-S2  programme d'interface carte MICROC et Temp
 //****************** déclaration des broches ****************
 Serial pc(SERIAL_TX, SERIAL_RX);            //  PORT SERIE SUR usb  !! 
-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
+AnalogIn  Ch1(A0) ;    // pour mesure de Vs de carte capteur
+AnalogOut Vk(A4)  ;    // sortie compensation temperature vers capteur
+AnalogIn  P1(A1)  ;AnalogIn  P0(A3) ; // temp = 3.3v et 3.3V 
+AnalogIn  simulVs(A2) ;// potentiometre de simulation de Vs 
+DigitalOut plus(D1);   // alim pull up interupteur  2 pins   
+DigitalIn inter(D2);   // entrée mesure inter       0 ou 1   logique      
+DigitalOut  LED(D9);   // sortie pour la LED de la 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 recpt = 0;     // variable tampon : arrivée d'un octet de la liaison série  
 
-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 
+float inVs  = 0.5 ;    // variable pour Vs   float de 0 à 1 pour 0 à 3.3V
+float simVs = 0.5 ;    // variable pour V potentiomètre pareil
+float outVk = 0.5 ;    // varible qui fait Vk = 1.244  ( compense ambiant)
+float P = 0.1 ;        // tampon de lecture des broches P0 et P1 
+int   out = 0    ;     // variable de sortie à serialiser en duj10
 
-//******** sous programmes ( situés en bas  de cette page )
+//******** sous programmes ( situés ici  en bas  de page )
 void interrupt();  // lié à la liaison série 
 
-void init(void)  // initialisations hard  
+void init(void)    // initialisations hard  
     {
     pc.baud(115200);     // vitesse liaison série
     pc.attach(&interrupt, Serial::RxIrq);  // autorise IT de liaison serie 
-    plus = 1;            // polarisation résistances inter
+    plus = 1;            // polarisation de la résistance de l'inter
     LED = 0 ;            // led du MicroC off
-    Vk.write(outVk);     // sortie de vK 
+    Vk.write(outVk);     // sortie de  outVK sur la broche  vK 
     }
     
 int main()
@@ -37,32 +36,49 @@
     init(); 
     while(1)
         {
-        if ( CAL == 1)
-           { CAL = 0 ;}    //Votre futur travail pour calibrer****************
+        wait(1); // boucle d'une seconde
+           
+        if( inter == 1)    // test inter sur carte MicroC
+            {  pc.putc('w');   }   
+        if( inter == 0)    // test inter sur carte MicroC
+            {  pc.putc('v');   }   
+            
+        P = P0.read();     // regarde la tension sur P0
+        if ( P > 0.51 ) pc.putc('s');  
+        if ( P < 0.49 ) pc.putc('r');  
+        P = P1.read();     // regarde la tension sur P1
+        if ( P > 0.51 ) pc.putc('u');  
+        if ( P < 0.49 ) pc.putc('t');  
             
-        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 
-            }
+        simVs =  simulVs.read();  // lire le potentiomètre 
+        out = 333*simVs        ;  // mettre dans une echelle 0 à 333
+        pc.putc('D');             // ouvrir transfert
+        pc.printf("%d", out);     // duj10 du pot ( de 0 à 333)
+        pc.putc('P');             // fermer et utiliser   
+      
+        inVs =  Ch1.read();       // lire l'entrée temp
+        out = 333*inVs        ;   // mettre dans une echelle 0 à 333
+        pc.putc('D');             // ouvrir transfert
+        pc.printf("%d", out);     // duj10 de la temperature ( de 0 à 333)
+        pc.putc('T');             // fermer et utiliser     
+        
+          // lire le vK
+        out = 333*outVk       ;   // mettre dans une echelle 0 à 333 
+        pc.putc('D');             // ouvrir transfert
+        pc.printf("%d", out);     // duj10 de vK en fait 
+        pc.putc('C');             // fermer et utiliser    
+        Vk.write(outVk);          // sortie outVk sur broche  vK 
         }
     }
     
 void interrupt()//"recepteur"  à chaque carractère reçut ce programme est activé
-    {  // à vous de jouer !! 
+    {  // 
     recpt =  pc.getc();  
-    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 - *********************
+    if ( recpt == 'l') LED = 1 ; //allumer   LED 
+    if ( recpt == 'k') LED = 0 ; //eteindre  LED 
+      // augmenter ou baisser Vk de 33mv 
+    if ( recpt == 'm') {outVk = outVk - 0.01 ; if ( outVk < 0.11) outVk = 0.1;} 
+    if ( recpt == 'p') {outVk = outVk + 0.01 ; if ( outVk > 0.85) outVk = 0.9;} 
+
     return;
     }