dujardin stephane
/
base_mbed_SAE1_S2
point de depart de la programmation
main.cpp@14:f632015dde70, 2021-12-18 (annotated)
- 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?
User | Revision | Line number | New 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 | } |