Loup Langard / Mbed 2 deprecated base_mbed_SAE1_S2-V0

Dependencies:   mbed

Revision:
15:41977c40cfbe
Parent:
14:f632015dde70
Child:
16:9ea7bff0ed03
--- a/main.cpp	Sat Dec 18 08:29:22 2021 +0000
+++ b/main.cpp	Mon Dec 20 11:36:17 2021 +0000
@@ -1,87 +1,41 @@
+// SAE1-S2  programme de départ
+// à faire evoluer pour correspondre au cahier des charges 
 #include "mbed.h"  //
-// SAE1-S2  programme d'interface carte MICROC et Temp
-//****************** déclaration des broches ****************
+//****************** déclarations des broches ****************
 Serial pc(SERIAL_TX, SERIAL_RX);            //  PORT SERIE SUR usb  !! 
-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
+AnalogIn  Ch1(A0) ;    // entrée ana pour mesurer le Vs de la  carte capteur
+AnalogOut Vk(A4)  ;    // sortie ana pour la calibration du  capteur
+AnalogIn  P1(A1)  ;AnalogIn  P0(A3) ; // entrée  ana pour le code du capteur
+AnalogIn  simulVs(A2) ;// entrée ana pour le potentiometre de la carte 
+DigitalOut plus(D1);   // sortie logique alim du pull up interupteur  2 pins   
+DigitalIn inter(D2);   // entrée logique mesure inter ( 1L à vide)     
+DigitalOut  LED(D9);   // sortie logique pour la LED de la carte ( 1 allume)
           
 //****variables ***********************************************************
-int   recpt = 0     ; // tampon : arrivée d'un octet de la liaison série  
-float inVs  = 0.5   ; // pour lire la temperature dans Vs , 0 à 1 pour 0 à 3.3V
-float simVs = 0.5   ; // pour lire V potentiomètre pareil , 0 à 1 pour 0 à 3.3V
-float outVk = 0.3681; // pour sortir vK, 0,3681 fait Vk = 1.244  (  20°C +-10mv)
+int   recpt = 0     ; // tampon d' arrivée d'un octet de la liaison série  
+float inVs  = 0.5   ; // tampon pour lire  Vs (temperature) 0 à 1 pour 0 à 3.3V
+float simVs = 0.5   ; // tampon pour lire Vp (potentiomètre)0 à 1 pour 0 à 3.3V
+float outVk = 0.3681; // tampon de sortie vK 0,3681 > Vk = 1.244 (20°C +-10mv)
 float P     = 0.1   ; // tampon de lecture des broches P0 et P1 
 int   out   = 0     ; // variable de sortie à serialiser en duj10
-
-//******** détail vers les sous programmes 
-void interrupt();  // lié à la liaison série   ( en bas de page)
+int   etape = 0     ; // permet au programme de savoir ou il en est 
 
-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 de la résistance de l'inter
-    LED = 0 ;            // led du MicroC off
-    Vk.write(outVk);     // sortie de  outVK sur la broche  vK 
-    }
+//******** préparation des  sous programmes 
+#include "sousprog.h" 
+#include "etape0.h" 
+#include "etape1.h" 
+
+void interrupt();  // obligatoire ici : il est lié à la liaison série 
     
-int main()
+int main()  // boucle principale 
     {
     init(); 
+        
     while(1)
         {
-        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');  
-            
-        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  vK  
-        out = 1000*outVk ;        // mettre dans une echelle 0 à 1000
-        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 
+         if ( etape == 0 ) etape0() ;
+         if ( etape == 1 ) etape1() ;     
         }
     }
     
-void interrupt()//"recepteur"  à chaque carractère reçut ce programme est activé
-    {  // 
-    recpt =  pc.getc();  
-    // action sur la LED carte microC
-    if ( recpt == 'l') LED = 1 ; //allumer   LED 
-    if ( recpt == 'k') LED = 0 ; //eteindre  LED 
-    // augmenter ou baisser Vk ( compensation en température)  
-    if ( recpt == 'm') {outVk = outVk - 0.02  ; if ( outVk < 0.05) outVk = 0.06;} // 20/1000
-    if ( recpt == 'p') {outVk = outVk + 0.02  ; if ( outVk > 0.95) outVk = 0.94;} 
-    if ( recpt == 'r') {outVk = outVk - 0.001 ; if ( outVk < 0.05) outVk = 0.06;} //  1/1000
-    if ( recpt == 's') {outVk = outVk + 0.001 ; if ( outVk > 0.95) outVk = 0.94;} 
-    if ( recpt == 't')  outVk = 0.3681 ; //vK remis à 20°C (environ )
 
-    return;
-    }