Scientific task box V1

Dependencies:   HX711 DS1820

Dependents:   Scientific_RTOS Scientific_RTOS

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?

UserRevisionLine numberNew 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 }