Code for our FYDP -only one IMU works right now -RTOS is working

Dependencies:   mbed

Committer:
majik
Date:
Wed Mar 18 22:23:48 2015 +0000
Revision:
0:964eb6a2ef00
This is our FYDP code, but only one IMU works with the RTOS.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
majik 0:964eb6a2ef00 1 #include "ACS712.h"
majik 0:964eb6a2ef00 2
majik 0:964eb6a2ef00 3 ACS712::ACS712() : sensor(SENSOR_PIN),
majik 0:964eb6a2ef00 4 currentSwitch(SWITCH_PIN)
majik 0:964eb6a2ef00 5 {
majik 0:964eb6a2ef00 6 currentSwitch = 1; //turn off the currentSwitch (1 = off, 0 = on)
majik 0:964eb6a2ef00 7 m = 0;
majik 0:964eb6a2ef00 8 b = 0;
majik 0:964eb6a2ef00 9 }
majik 0:964eb6a2ef00 10
majik 0:964eb6a2ef00 11 void ACS712::calibrate(){
majik 0:964eb6a2ef00 12 float V1,V2,A1,A2;
majik 0:964eb6a2ef00 13 A1 = LOW_CURRENT;
majik 0:964eb6a2ef00 14 A2 = HIGH_CURRENT;
majik 0:964eb6a2ef00 15
majik 0:964eb6a2ef00 16 currentSwitch = 1;
majik 0:964eb6a2ef00 17 wait_ms(100);
majik 0:964eb6a2ef00 18 //wait_ms(5000);//MARK
majik 0:964eb6a2ef00 19 V1 = read_sensor(CALIBRATION_SAMPLES,10);
majik 0:964eb6a2ef00 20
majik 0:964eb6a2ef00 21 currentSwitch = 0;
majik 0:964eb6a2ef00 22 //Thread::wait(100);
majik 0:964eb6a2ef00 23 //wait_ms(5000);//MARK
majik 0:964eb6a2ef00 24 wait_ms(100);
majik 0:964eb6a2ef00 25 V2 = read_sensor(CALIBRATION_SAMPLES,10);
majik 0:964eb6a2ef00 26 currentSwitch = 1;
majik 0:964eb6a2ef00 27 m = (A2-A1)/(V2-V1);
majik 0:964eb6a2ef00 28 b = A1 - V1*m;
majik 0:964eb6a2ef00 29 }
majik 0:964eb6a2ef00 30 float ACS712::get_current(){
majik 0:964eb6a2ef00 31 return m*read_sensor(10,0) + b;
majik 0:964eb6a2ef00 32 }
majik 0:964eb6a2ef00 33 float ACS712::read_sensor(){
majik 0:964eb6a2ef00 34 sensor_val = sensor.read();
majik 0:964eb6a2ef00 35 return sensor_val;
majik 0:964eb6a2ef00 36 }
majik 0:964eb6a2ef00 37 float ACS712::read_sensor(int n, int t){
majik 0:964eb6a2ef00 38 sensor_val = 0;
majik 0:964eb6a2ef00 39 for(int i = 0; i<n; i++){
majik 0:964eb6a2ef00 40 sensor_val += sensor.read();
majik 0:964eb6a2ef00 41 wait_ms(t);
majik 0:964eb6a2ef00 42 //Thread::wait(10);
majik 0:964eb6a2ef00 43 }
majik 0:964eb6a2ef00 44 sensor_val = sensor_val/float(n);
majik 0:964eb6a2ef00 45 return sensor_val;
majik 0:964eb6a2ef00 46 }