Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 13:b19e2f833926, committed 2021-12-17
- Comitter:
- dujardin
- Date:
- Fri Dec 17 17:42:00 2021 +0000
- Parent:
- 12:09b5ebdca214
- Child:
- 14:f632015dde70
- Commit message:
- mise en relation carte MicroC et carte Temp
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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;
}