Kiko Ishimoto / Mbed 2 deprecated Nucleo_Propo

Dependencies:   mbed

Committer:
kikoaac
Date:
Thu Mar 24 00:59:25 2016 +0000
Revision:
0:ba6deb20e42e
???????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kikoaac 0:ba6deb20e42e 1 #include "mbed.h"
kikoaac 0:ba6deb20e42e 2
kikoaac 0:ba6deb20e42e 3 PwmOut mypwm(PWM_OUT);
kikoaac 0:ba6deb20e42e 4
kikoaac 0:ba6deb20e42e 5 DigitalOut myled(LED1);
kikoaac 0:ba6deb20e42e 6 //InterruptIn Propo(A5);
kikoaac 0:ba6deb20e42e 7
kikoaac 0:ba6deb20e42e 8 class propoRead
kikoaac 0:ba6deb20e42e 9 {
kikoaac 0:ba6deb20e42e 10 public:
kikoaac 0:ba6deb20e42e 11
kikoaac 0:ba6deb20e42e 12 float High , Sum;
kikoaac 0:ba6deb20e42e 13 float Max,Min,Normal,outMax,outMin;
kikoaac 0:ba6deb20e42e 14 propoRead(PinName Pin , Timer *T) : Inter(Pin)
kikoaac 0:ba6deb20e42e 15 {
kikoaac 0:ba6deb20e42e 16 t = T;
kikoaac 0:ba6deb20e42e 17 Inter.rise(this,&propoRead::Rise);
kikoaac 0:ba6deb20e42e 18 Inter.fall(this,&propoRead::Fall);
kikoaac 0:ba6deb20e42e 19 t->start();
kikoaac 0:ba6deb20e42e 20 propoCalibration();
kikoaac 0:ba6deb20e42e 21 outMax = 1;
kikoaac 0:ba6deb20e42e 22 outMin = -1;
kikoaac 0:ba6deb20e42e 23 }
kikoaac 0:ba6deb20e42e 24 void propoCalibration(float max = 1900,float min = 1100,int normal = 1500)
kikoaac 0:ba6deb20e42e 25 {
kikoaac 0:ba6deb20e42e 26 Max = max-normal;
kikoaac 0:ba6deb20e42e 27 Min = min-normal;
kikoaac 0:ba6deb20e42e 28 Normal = normal;
kikoaac 0:ba6deb20e42e 29 }
kikoaac 0:ba6deb20e42e 30 operator float()
kikoaac 0:ba6deb20e42e 31 {
kikoaac 0:ba6deb20e42e 32 float width = Max-Min;
kikoaac 0:ba6deb20e42e 33 float outWidth = outMax - outMin;
kikoaac 0:ba6deb20e42e 34 float ratio = outWidth / width;
kikoaac 0:ba6deb20e42e 35
kikoaac 0:ba6deb20e42e 36 float ans = ratio * (High - Normal);// outMin;
kikoaac 0:ba6deb20e42e 37 if(fabs((double)ans)<0.1) ans=0;
kikoaac 0:ba6deb20e42e 38 return ans;
kikoaac 0:ba6deb20e42e 39 }
kikoaac 0:ba6deb20e42e 40 private:
kikoaac 0:ba6deb20e42e 41
kikoaac 0:ba6deb20e42e 42 Timer *t;
kikoaac 0:ba6deb20e42e 43 float prevTime;
kikoaac 0:ba6deb20e42e 44 float readTime()
kikoaac 0:ba6deb20e42e 45 {
kikoaac 0:ba6deb20e42e 46 float ans = t->read_us() - prevTime;
kikoaac 0:ba6deb20e42e 47 prevTime = t->read_us();
kikoaac 0:ba6deb20e42e 48 return ans;
kikoaac 0:ba6deb20e42e 49 }
kikoaac 0:ba6deb20e42e 50 void Fall()
kikoaac 0:ba6deb20e42e 51 {
kikoaac 0:ba6deb20e42e 52 High = readTime();
kikoaac 0:ba6deb20e42e 53 }
kikoaac 0:ba6deb20e42e 54 void Rise()
kikoaac 0:ba6deb20e42e 55 {
kikoaac 0:ba6deb20e42e 56 prevTime = t->read_us();
kikoaac 0:ba6deb20e42e 57 }
kikoaac 0:ba6deb20e42e 58 InterruptIn Inter;
kikoaac 0:ba6deb20e42e 59 };
kikoaac 0:ba6deb20e42e 60 int main() {
kikoaac 0:ba6deb20e42e 61 Timer T;
kikoaac 0:ba6deb20e42e 62 propoRead p1(A5,&T);
kikoaac 0:ba6deb20e42e 63 /*
kikoaac 0:ba6deb20e42e 64 mypwm.period_ms(10);
kikoaac 0:ba6deb20e42e 65 mypwm.pulsewidth_ms(1);
kikoaac 0:ba6deb20e42e 66 */
kikoaac 0:ba6deb20e42e 67 //printf("pwm set to %.2f %%\n", mypwm.read() * 100);
kikoaac 0:ba6deb20e42e 68
kikoaac 0:ba6deb20e42e 69 //t.start();
kikoaac 0:ba6deb20e42e 70 while(1) {
kikoaac 0:ba6deb20e42e 71 printf("%f\r\n",(float)p1);
kikoaac 0:ba6deb20e42e 72 //wait(1);
kikoaac 0:ba6deb20e42e 73 }
kikoaac 0:ba6deb20e42e 74 }