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:
- 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; - }