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.
Diff: main.cpp
- Revision:
- 13:b19e2f833926
- Parent:
- 12:09b5ebdca214
- Child:
- 14:f632015dde70
diff -r 09b5ebdca214 -r b19e2f833926 main.cpp --- 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; }