point de depart de la programmation

Dependencies:   mbed

Committer:
dujardin
Date:
Sat Dec 18 08:29:22 2021 +0000
Revision:
14:f632015dde70
Parent:
13:b19e2f833926
Child:
15:41977c40cfbe
suite1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dujardin 2:6566f09256dc 1 #include "mbed.h" //
dujardin 13:b19e2f833926 2 // SAE1-S2 programme d'interface carte MICROC et Temp
dujardin 2:6566f09256dc 3 //****************** déclaration des broches ****************
dujardin 1:1779a3279496 4 Serial pc(SERIAL_TX, SERIAL_RX); // PORT SERIE SUR usb !!
dujardin 13:b19e2f833926 5 AnalogIn Ch1(A0) ; // pour mesure de Vs de carte capteur
dujardin 13:b19e2f833926 6 AnalogOut Vk(A4) ; // sortie compensation temperature vers capteur
dujardin 13:b19e2f833926 7 AnalogIn P1(A1) ;AnalogIn P0(A3) ; // temp = 3.3v et 3.3V
dujardin 13:b19e2f833926 8 AnalogIn simulVs(A2) ;// potentiometre de simulation de Vs
dujardin 13:b19e2f833926 9 DigitalOut plus(D1); // alim pull up interupteur 2 pins
dujardin 13:b19e2f833926 10 DigitalIn inter(D2); // entrée mesure inter 0 ou 1 logique
dujardin 13:b19e2f833926 11 DigitalOut LED(D9); // sortie pour la LED de la carte MicroC
dujardin 12:09b5ebdca214 12
dujardin 12:09b5ebdca214 13 //****variables ***********************************************************
dujardin 14:f632015dde70 14 int recpt = 0 ; // tampon : arrivée d'un octet de la liaison série
dujardin 14:f632015dde70 15 float inVs = 0.5 ; // pour lire la temperature dans Vs , 0 à 1 pour 0 à 3.3V
dujardin 14:f632015dde70 16 float simVs = 0.5 ; // pour lire V potentiomètre pareil , 0 à 1 pour 0 à 3.3V
dujardin 14:f632015dde70 17 float outVk = 0.3681; // pour sortir vK, 0,3681 fait Vk = 1.244 ( 20°C +-10mv)
dujardin 14:f632015dde70 18 float P = 0.1 ; // tampon de lecture des broches P0 et P1
dujardin 14:f632015dde70 19 int out = 0 ; // variable de sortie à serialiser en duj10
dujardin 10:32b5218ff304 20
dujardin 14:f632015dde70 21 //******** détail vers les sous programmes
dujardin 14:f632015dde70 22 void interrupt(); // lié à la liaison série ( en bas de page)
dujardin 0:5945217144be 23
dujardin 13:b19e2f833926 24 void init(void) // initialisations hard
dujardin 3:032c516c2ffa 25 {
dujardin 12:09b5ebdca214 26 pc.baud(115200); // vitesse liaison série
dujardin 7:7b0c1a910ccc 27 pc.attach(&interrupt, Serial::RxIrq); // autorise IT de liaison serie
dujardin 13:b19e2f833926 28 plus = 1; // polarisation de la résistance de l'inter
dujardin 12:09b5ebdca214 29 LED = 0 ; // led du MicroC off
dujardin 13:b19e2f833926 30 Vk.write(outVk); // sortie de outVK sur la broche vK
dujardin 3:032c516c2ffa 31 }
dujardin 3:032c516c2ffa 32
dujardin 3:032c516c2ffa 33 int main()
dujardin 3:032c516c2ffa 34 {
dujardin 3:032c516c2ffa 35 init();
dujardin 12:09b5ebdca214 36 while(1)
dujardin 3:032c516c2ffa 37 {
dujardin 13:b19e2f833926 38 wait(1); // boucle d'une seconde
dujardin 13:b19e2f833926 39
dujardin 13:b19e2f833926 40 if( inter == 1) // test inter sur carte MicroC
dujardin 13:b19e2f833926 41 { pc.putc('w'); }
dujardin 13:b19e2f833926 42 if( inter == 0) // test inter sur carte MicroC
dujardin 13:b19e2f833926 43 { pc.putc('v'); }
dujardin 13:b19e2f833926 44
dujardin 13:b19e2f833926 45 P = P0.read(); // regarde la tension sur P0
dujardin 13:b19e2f833926 46 if ( P > 0.51 ) pc.putc('s');
dujardin 13:b19e2f833926 47 if ( P < 0.49 ) pc.putc('r');
dujardin 13:b19e2f833926 48 P = P1.read(); // regarde la tension sur P1
dujardin 13:b19e2f833926 49 if ( P > 0.51 ) pc.putc('u');
dujardin 13:b19e2f833926 50 if ( P < 0.49 ) pc.putc('t');
dujardin 12:09b5ebdca214 51
dujardin 13:b19e2f833926 52 simVs = simulVs.read(); // lire le potentiomètre
dujardin 13:b19e2f833926 53 out = 333*simVs ; // mettre dans une echelle 0 à 333
dujardin 13:b19e2f833926 54 pc.putc('D'); // ouvrir transfert
dujardin 13:b19e2f833926 55 pc.printf("%d", out); // duj10 du pot ( de 0 à 333)
dujardin 13:b19e2f833926 56 pc.putc('P'); // fermer et utiliser
dujardin 13:b19e2f833926 57
dujardin 13:b19e2f833926 58 inVs = Ch1.read(); // lire l'entrée temp
dujardin 13:b19e2f833926 59 out = 333*inVs ; // mettre dans une echelle 0 à 333
dujardin 13:b19e2f833926 60 pc.putc('D'); // ouvrir transfert
dujardin 13:b19e2f833926 61 pc.printf("%d", out); // duj10 de la temperature ( de 0 à 333)
dujardin 13:b19e2f833926 62 pc.putc('T'); // fermer et utiliser
dujardin 13:b19e2f833926 63
dujardin 14:f632015dde70 64 // LIRE vK
dujardin 14:f632015dde70 65 out = 1000*outVk ; // mettre dans une echelle 0 à 1000
dujardin 13:b19e2f833926 66 pc.putc('D'); // ouvrir transfert
dujardin 13:b19e2f833926 67 pc.printf("%d", out); // duj10 de vK en fait
dujardin 13:b19e2f833926 68 pc.putc('C'); // fermer et utiliser
dujardin 13:b19e2f833926 69 Vk.write(outVk); // sortie outVk sur broche vK
dujardin 12:09b5ebdca214 70 }
dujardin 3:032c516c2ffa 71 }
dujardin 7:7b0c1a910ccc 72
dujardin 10:32b5218ff304 73 void interrupt()//"recepteur" à chaque carractère reçut ce programme est activé
dujardin 13:b19e2f833926 74 { //
dujardin 7:7b0c1a910ccc 75 recpt = pc.getc();
dujardin 14:f632015dde70 76 // action sur la LED carte microC
dujardin 13:b19e2f833926 77 if ( recpt == 'l') LED = 1 ; //allumer LED
dujardin 13:b19e2f833926 78 if ( recpt == 'k') LED = 0 ; //eteindre LED
dujardin 14:f632015dde70 79 // augmenter ou baisser Vk ( compensation en température)
dujardin 14:f632015dde70 80 if ( recpt == 'm') {outVk = outVk - 0.02 ; if ( outVk < 0.05) outVk = 0.06;} // 20/1000
dujardin 14:f632015dde70 81 if ( recpt == 'p') {outVk = outVk + 0.02 ; if ( outVk > 0.95) outVk = 0.94;}
dujardin 14:f632015dde70 82 if ( recpt == 'r') {outVk = outVk - 0.001 ; if ( outVk < 0.05) outVk = 0.06;} // 1/1000
dujardin 14:f632015dde70 83 if ( recpt == 's') {outVk = outVk + 0.001 ; if ( outVk > 0.95) outVk = 0.94;}
dujardin 14:f632015dde70 84 if ( recpt == 't') outVk = 0.3681 ; //vK remis à 20°C (environ )
dujardin 13:b19e2f833926 85
dujardin 7:7b0c1a910ccc 86 return;
dujardin 7:7b0c1a910ccc 87 }