mesuring curent

Dependencies:   mbed TextLCD

Committer:
Annequin
Date:
Mon Jun 03 09:33:47 2019 +0000
Revision:
3:45185bc91e89
Parent:
2:ad0b044d0a10
mesuring curent

Who changed what in which revision?

UserRevisionLine numberNew contents of line
simon 1:7418a52375a0 1 // Hello World! for the TextLCD
simon 1:7418a52375a0 2
simon 0:334327d1a416 3 #include "mbed.h"
simon 0:334327d1a416 4 #include "TextLCD.h"
Annequin 3:45185bc91e89 5 #include <math.h>
Annequin 3:45185bc91e89 6 //#include <cmath>
Annequin 3:45185bc91e89 7 Ticker toggle_ueff_ticker;
Annequin 3:45185bc91e89 8 //Ticker toggle_ieff_ticker;
Annequin 3:45185bc91e89 9 TextLCD lcd(p25, p26, p21, p22, p23, p24); // rs, e, d4-d7
Annequin 3:45185bc91e89 10 InterruptIn mybutton(p12);
Annequin 3:45185bc91e89 11 InterruptIn mybutton2(p13);
Annequin 3:45185bc91e89 12 DigitalOut myled(LED1);
simon 0:334327d1a416 13
Annequin 3:45185bc91e89 14 AnalogIn inputu(p15);
Annequin 3:45185bc91e89 15 int vn;
Annequin 3:45185bc91e89 16 int inu;
Annequin 3:45185bc91e89 17 float v2n, v2ninter, anu, anmoy, ueff;
Annequin 3:45185bc91e89 18 //float v2ninter = 0;
Annequin 3:45185bc91e89 19 //float anu = 0;
Annequin 3:45185bc91e89 20 //float anmoy = 0;
Annequin 3:45185bc91e89 21 //float ueff;
Annequin 3:45185bc91e89 22
Annequin 3:45185bc91e89 23 AnalogIn enteri(p17);
Annequin 3:45185bc91e89 24 int in;
Annequin 3:45185bc91e89 25 int ini;
Annequin 3:45185bc91e89 26 float i2n, i2ninter, ani, animoy, ieff;
Annequin 3:45185bc91e89 27 //float i2ninter = 0;
Annequin 3:45185bc91e89 28 //float ani = 0;
Annequin 3:45185bc91e89 29 //float animoy = 0;
Annequin 3:45185bc91e89 30 //float ieff;
Annequin 3:45185bc91e89 31
Annequin 3:45185bc91e89 32 float pactive;
Annequin 3:45185bc91e89 33
Annequin 3:45185bc91e89 34 //AnalogIn A0(p17);
Annequin 3:45185bc91e89 35 //AnalogIn A1(p18);
Annequin 3:45185bc91e89 36 //AnalogIn A2(p19);
Annequin 3:45185bc91e89 37 //AnalogIn A3(p20);
Annequin 3:45185bc91e89 38 int a=0;
Annequin 3:45185bc91e89 39 int n;
Annequin 3:45185bc91e89 40 int n2;
Annequin 3:45185bc91e89 41 int cpt;
Annequin 3:45185bc91e89 42 float nrj = 0;
Annequin 3:45185bc91e89 43 float nrjh;
Annequin 3:45185bc91e89 44 int nrjhint;
Annequin 3:45185bc91e89 45 int nrjhint_1;
Annequin 3:45185bc91e89 46 void toggle_ueff() {
Annequin 3:45185bc91e89 47
Annequin 3:45185bc91e89 48
Annequin 3:45185bc91e89 49 vn = (inputu.read_u16() - 32768);
Annequin 3:45185bc91e89 50 v2ninter = v2n;
Annequin 3:45185bc91e89 51 v2n = (vn * vn);
Annequin 3:45185bc91e89 52 anu = (anu + ((v2ninter + v2n)/2));
Annequin 3:45185bc91e89 53
Annequin 3:45185bc91e89 54
Annequin 3:45185bc91e89 55
Annequin 3:45185bc91e89 56 in = ((enteri.read_u16()*1) - 32768);
Annequin 3:45185bc91e89 57 i2ninter = i2n;
Annequin 3:45185bc91e89 58 i2n = (in * in);
Annequin 3:45185bc91e89 59 ani = (ani + ((i2ninter + i2n)/2));
Annequin 3:45185bc91e89 60
Annequin 3:45185bc91e89 61 n++;
Annequin 3:45185bc91e89 62 if (n >= 5000)
Annequin 3:45185bc91e89 63 {
Annequin 3:45185bc91e89 64 anmoy = (anu/5000.0);
Annequin 3:45185bc91e89 65 ueff = 0.873961*((sqrt((double)anmoy)*353.5533)/32768.0);
Annequin 3:45185bc91e89 66
Annequin 3:45185bc91e89 67 anu = 0;
Annequin 3:45185bc91e89 68
Annequin 3:45185bc91e89 69 animoy = (ani/5000.0);
Annequin 3:45185bc91e89 70 ieff = ((sqrt((double)animoy)*5)/32768.0);
Annequin 3:45185bc91e89 71 ani = 0;
Annequin 3:45185bc91e89 72
simon 0:334327d1a416 73
Annequin 3:45185bc91e89 74 pactive = ueff*ieff;
Annequin 3:45185bc91e89 75 n = 0;
Annequin 3:45185bc91e89 76 cpt++;
Annequin 3:45185bc91e89 77 if(cpt == 2){
Annequin 3:45185bc91e89 78 myled = 0;
Annequin 3:45185bc91e89 79 cpt = 0;
Annequin 3:45185bc91e89 80 nrj = (nrj + pactive);
Annequin 3:45185bc91e89 81 nrjh = nrj / 3600;
Annequin 3:45185bc91e89 82 nrjhint_1 = nrjhint;
Annequin 3:45185bc91e89 83 nrjhint = nrjh;
Annequin 3:45185bc91e89 84
Annequin 3:45185bc91e89 85 if(nrjhint >= (nrjhint_1 + 1))
Annequin 3:45185bc91e89 86 {
Annequin 3:45185bc91e89 87 myled=1;
Annequin 3:45185bc91e89 88 }
Annequin 3:45185bc91e89 89 }
Annequin 3:45185bc91e89 90 }
Annequin 3:45185bc91e89 91
Annequin 3:45185bc91e89 92 }
Annequin 3:45185bc91e89 93
Annequin 3:45185bc91e89 94
Annequin 3:45185bc91e89 95
Annequin 3:45185bc91e89 96
Annequin 3:45185bc91e89 97
Annequin 3:45185bc91e89 98 void pressed()
Annequin 3:45185bc91e89 99 {
Annequin 3:45185bc91e89 100 a++;
Annequin 3:45185bc91e89 101 if(a>=5){
Annequin 3:45185bc91e89 102 a = 0;
Annequin 3:45185bc91e89 103 }
Annequin 3:45185bc91e89 104 }
Annequin 3:45185bc91e89 105
Annequin 3:45185bc91e89 106
Annequin 3:45185bc91e89 107 void pressed2()
Annequin 3:45185bc91e89 108 {
Annequin 3:45185bc91e89 109 a--;
Annequin 3:45185bc91e89 110 if(a<=0){
Annequin 3:45185bc91e89 111 a = 4;
Annequin 3:45185bc91e89 112 }
simon 0:334327d1a416 113 }
Annequin 3:45185bc91e89 114 void clear()
Annequin 3:45185bc91e89 115 {lcd.cls();}
Annequin 3:45185bc91e89 116
Annequin 3:45185bc91e89 117 int main()
Annequin 3:45185bc91e89 118 {
Annequin 3:45185bc91e89 119 toggle_ueff_ticker.attach(&toggle_ueff, 0.0002);
Annequin 3:45185bc91e89 120 //toggle_ieff_ticker.attach(&toggle_ieff, 0.0001);
Annequin 3:45185bc91e89 121 mybutton.fall(&pressed);
Annequin 3:45185bc91e89 122 //mybutton.rise(&clear);
Annequin 3:45185bc91e89 123 mybutton2.fall(&pressed2);
Annequin 3:45185bc91e89 124 //mybutton2.rise(&clear);
Annequin 3:45185bc91e89 125 while(1)
Annequin 3:45185bc91e89 126 {
Annequin 3:45185bc91e89 127 pactive = ueff*ieff;
Annequin 3:45185bc91e89 128 clear();
Annequin 3:45185bc91e89 129 lcd.locate(9,1);
Annequin 3:45185bc91e89 130 lcd.printf("page %d",a);
Annequin 3:45185bc91e89 131
Annequin 3:45185bc91e89 132 if(a == 0){
Annequin 3:45185bc91e89 133 //clear();
Annequin 3:45185bc91e89 134 lcd.locate(0,0);
Annequin 3:45185bc91e89 135 //lcd.putc(a);
Annequin 3:45185bc91e89 136 lcd.printf("Ueff = %f",ueff );
Annequin 3:45185bc91e89 137
Annequin 3:45185bc91e89 138 lcd.locate(0,1);
Annequin 3:45185bc91e89 139 //lcd.putc(a);
Annequin 3:45185bc91e89 140 lcd.printf("Ieff = %f",ieff );
Annequin 3:45185bc91e89 141 // wait(0.2);
Annequin 3:45185bc91e89 142
Annequin 3:45185bc91e89 143 }
Annequin 3:45185bc91e89 144
Annequin 3:45185bc91e89 145
Annequin 3:45185bc91e89 146
Annequin 3:45185bc91e89 147 if(a == 1){
Annequin 3:45185bc91e89 148 // clear();
Annequin 3:45185bc91e89 149 lcd.locate(0,0);
Annequin 3:45185bc91e89 150 //lcd.putc(a);
Annequin 3:45185bc91e89 151 lcd.printf("nrjh = %d",nrjhint );
Annequin 3:45185bc91e89 152 // wait(0.2);
Annequin 3:45185bc91e89 153
Annequin 3:45185bc91e89 154 }
Annequin 3:45185bc91e89 155 if(a == 2){
Annequin 3:45185bc91e89 156 //clear();
Annequin 3:45185bc91e89 157 lcd.locate(0,0);
Annequin 3:45185bc91e89 158 //lcd.putc(a);
Annequin 3:45185bc91e89 159 lcd.printf("Pactive = %f",pactive );
Annequin 3:45185bc91e89 160 //wait(0.2);
Annequin 3:45185bc91e89 161
Annequin 3:45185bc91e89 162 }
Annequin 3:45185bc91e89 163 if(a == 3){
Annequin 3:45185bc91e89 164 // clear();
Annequin 3:45185bc91e89 165 lcd.locate(0,0);
Annequin 3:45185bc91e89 166 //lcd.putc(a);
Annequin 3:45185bc91e89 167 lcd.printf("anu = %f",anu );
Annequin 3:45185bc91e89 168 //wait(0.2);
Annequin 3:45185bc91e89 169
Annequin 3:45185bc91e89 170 }
Annequin 3:45185bc91e89 171 if(a == 4){
Annequin 3:45185bc91e89 172 // lcd.locate(0,0);
Annequin 3:45185bc91e89 173 //lcd.putc(a);
Annequin 3:45185bc91e89 174 //lcd.printf("ueff = %lf",ueff );
Annequin 3:45185bc91e89 175 // wait(0.2);
Annequin 3:45185bc91e89 176 // clear();
Annequin 3:45185bc91e89 177 }
Annequin 3:45185bc91e89 178 wait(1.0);
Annequin 3:45185bc91e89 179 }
Annequin 3:45185bc91e89 180 }