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.
main.cpp
- Committer:
- dujardin
- Date:
- 2021-12-18
- Revision:
- 14:f632015dde70
- Parent:
- 13:b19e2f833926
- Child:
- 15:41977c40cfbe
File content as of revision 14:f632015dde70:
#include "mbed.h" // // 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 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 *********************************************************** 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) 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) 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 } int main() { 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 } } 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; }