Scientific task box V1
Dependents: Scientific_RTOS Scientific_RTOS
BOX.cpp@0:01deb85101c9, 2019-05-13 (annotated)
- Committer:
- Alessio_Zaino
- Date:
- Mon May 13 13:55:19 2019 +0000
- Revision:
- 0:01deb85101c9
- Child:
- 2:f8120bb54b69
TEAM DIANA SCIENTIFIC TASK
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Alessio_Zaino | 0:01deb85101c9 | 1 | #include "BOX.h" |
Alessio_Zaino | 0:01deb85101c9 | 2 | |
Alessio_Zaino | 0:01deb85101c9 | 3 | BOX::BOX (PinName pinCLK_HX711, PinName pinDAT_HX711, PinName pin_temp, PinName pin_cond, int HX711_coefficent):therm(pin_temp, DS18B20::RES_12_BIT),balance(pinDAT_HX711, pinCLK_HX711) |
Alessio_Zaino | 0:01deb85101c9 | 4 | { |
Alessio_Zaino | 0:01deb85101c9 | 5 | _pinCLK = pinCLK_HX711; |
Alessio_Zaino | 0:01deb85101c9 | 6 | _pinDAT = pinDAT_HX711; |
Alessio_Zaino | 0:01deb85101c9 | 7 | _pintemp = pin_temp; |
Alessio_Zaino | 0:01deb85101c9 | 8 | _pincond = pin_cond; |
Alessio_Zaino | 0:01deb85101c9 | 9 | _coefficent = HX711_coefficent; |
Alessio_Zaino | 0:01deb85101c9 | 10 | |
Alessio_Zaino | 0:01deb85101c9 | 11 | |
Alessio_Zaino | 0:01deb85101c9 | 12 | } |
Alessio_Zaino | 0:01deb85101c9 | 13 | |
Alessio_Zaino | 0:01deb85101c9 | 14 | //BOX::~BOX(){} |
Alessio_Zaino | 0:01deb85101c9 | 15 | |
Alessio_Zaino | 0:01deb85101c9 | 16 | float BOX::get_temp() |
Alessio_Zaino | 0:01deb85101c9 | 17 | { |
Alessio_Zaino | 0:01deb85101c9 | 18 | float temperature; |
Alessio_Zaino | 0:01deb85101c9 | 19 | _tmp = 0; |
Alessio_Zaino | 0:01deb85101c9 | 20 | for (int i = 0; i < 20; i++) |
Alessio_Zaino | 0:01deb85101c9 | 21 | { |
Alessio_Zaino | 0:01deb85101c9 | 22 | _tmp = therm.GetTemperature(); |
Alessio_Zaino | 0:01deb85101c9 | 23 | temperature = temperature + _tmp; |
Alessio_Zaino | 0:01deb85101c9 | 24 | } |
Alessio_Zaino | 0:01deb85101c9 | 25 | return temperature / 20; |
Alessio_Zaino | 0:01deb85101c9 | 26 | } |
Alessio_Zaino | 0:01deb85101c9 | 27 | |
Alessio_Zaino | 0:01deb85101c9 | 28 | int BOX::get_resistance() |
Alessio_Zaino | 0:01deb85101c9 | 29 | { |
Alessio_Zaino | 0:01deb85101c9 | 30 | AnalogIn cond_value(_pincond); // reads voltage on the conductimeter pin. |
Alessio_Zaino | 0:01deb85101c9 | 31 | float meas_v; |
Alessio_Zaino | 0:01deb85101c9 | 32 | float current; |
Alessio_Zaino | 0:01deb85101c9 | 33 | float resistance; |
Alessio_Zaino | 0:01deb85101c9 | 34 | _tmp = 0; |
Alessio_Zaino | 0:01deb85101c9 | 35 | for(int i = 0; i < 20; i++) |
Alessio_Zaino | 0:01deb85101c9 | 36 | { |
Alessio_Zaino | 0:01deb85101c9 | 37 | meas_v = cond_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range) |
Alessio_Zaino | 0:01deb85101c9 | 38 | current = (1 - meas_v) / (2000000); // kvl and V/R to get current |
Alessio_Zaino | 0:01deb85101c9 | 39 | _tmp = (meas_v / current); // Ohm law gives us the soil resistence |
Alessio_Zaino | 0:01deb85101c9 | 40 | resistance = resistance + _tmp; |
Alessio_Zaino | 0:01deb85101c9 | 41 | } |
Alessio_Zaino | 0:01deb85101c9 | 42 | return (int) (resistance / 20); |
Alessio_Zaino | 0:01deb85101c9 | 43 | } |
Alessio_Zaino | 0:01deb85101c9 | 44 | |
Alessio_Zaino | 0:01deb85101c9 | 45 | void BOX::tare(unsigned char times) |
Alessio_Zaino | 0:01deb85101c9 | 46 | { |
Alessio_Zaino | 0:01deb85101c9 | 47 | balance.setTare(balance.averageValue(times)); |
Alessio_Zaino | 0:01deb85101c9 | 48 | } |
Alessio_Zaino | 0:01deb85101c9 | 49 | |
Alessio_Zaino | 0:01deb85101c9 | 50 | int BOX::get_weight() |
Alessio_Zaino | 0:01deb85101c9 | 51 | { |
Alessio_Zaino | 0:01deb85101c9 | 52 | return (int) (balance.getGram() / _coefficent); |
Alessio_Zaino | 0:01deb85101c9 | 53 | } |