Scientific task box V1

Dependencies:   HX711 DS1820

Dependents:   Scientific_RTOS Scientific_RTOS

Committer:
Alessio_Zaino
Date:
Thu Sep 05 20:55:56 2019 +0000
Revision:
4:d9c5d93963a8
Parent:
3:442e7d2ab496
final;

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 3:442e7d2ab496 3 BOX::BOX (PinName pinCLK_HX711, PinName pinDAT_HX711, PinName pin_temp, PinName pin_cond, int HX711_coefficent, PinName pin_servo):ds1820(pin_temp),balance(pinDAT_HX711, pinCLK_HX711),servo(pin_servo)
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 2:f8120bb54b69 14
Alessio_Zaino 2:f8120bb54b69 15
Alessio_Zaino 2:f8120bb54b69 16
Alessio_Zaino 2:f8120bb54b69 17
Alessio_Zaino 2:f8120bb54b69 18 BOX::~BOX(){}
Alessio_Zaino 2:f8120bb54b69 19
Alessio_Zaino 2:f8120bb54b69 20
Alessio_Zaino 2:f8120bb54b69 21 void BOX::initialize(){
Alessio_Zaino 2:f8120bb54b69 22
Alessio_Zaino 2:f8120bb54b69 23 check=ds1820.begin();
Alessio_Zaino 3:442e7d2ab496 24 servo.period(0.02f);
Alessio_Zaino 3:442e7d2ab496 25 balance.setTare(balance.averageValue(20));
Alessio_Zaino 2:f8120bb54b69 26
Alessio_Zaino 2:f8120bb54b69 27 }
Alessio_Zaino 0:01deb85101c9 28
Alessio_Zaino 0:01deb85101c9 29 float BOX::get_temp()
Alessio_Zaino 0:01deb85101c9 30 {
Alessio_Zaino 2:f8120bb54b69 31 int result=0;
Alessio_Zaino 2:f8120bb54b69 32 float temp=0;
Alessio_Zaino 2:f8120bb54b69 33 ds1820.startConversion(); // start temperature conversion from analog to digital
Alessio_Zaino 2:f8120bb54b69 34 wait(1.0); // let DS1820 complete the temperature conversion
Alessio_Zaino 2:f8120bb54b69 35 result = ds1820.read(temp); // read temperature from DS1820 and perform cyclic redundancy check (CRC)
Alessio_Zaino 2:f8120bb54b69 36 switch (result) {
Alessio_Zaino 2:f8120bb54b69 37 case 0: // no errors -> 'temp' contains the value of measured temperature
Alessio_Zaino 2:f8120bb54b69 38
Alessio_Zaino 2:f8120bb54b69 39 break;
Alessio_Zaino 2:f8120bb54b69 40
Alessio_Zaino 2:f8120bb54b69 41 case 1: // no sensor present -> 'temp' was not updated
Alessio_Zaino 2:f8120bb54b69 42 printf("no sensor present\n\r");
Alessio_Zaino 2:f8120bb54b69 43 break;
Alessio_Zaino 2:f8120bb54b69 44
Alessio_Zaino 2:f8120bb54b69 45 case 2: // CRC error -> 'temp' was not updated
Alessio_Zaino 2:f8120bb54b69 46 printf("CRC error\r\n");
Alessio_Zaino 2:f8120bb54b69 47
Alessio_Zaino 2:f8120bb54b69 48 default:
Alessio_Zaino 2:f8120bb54b69 49 break;
Alessio_Zaino 2:f8120bb54b69 50
Alessio_Zaino 2:f8120bb54b69 51
Alessio_Zaino 2:f8120bb54b69 52 }
Alessio_Zaino 2:f8120bb54b69 53
Alessio_Zaino 2:f8120bb54b69 54
Alessio_Zaino 2:f8120bb54b69 55 return temp;
Alessio_Zaino 0:01deb85101c9 56 }
Alessio_Zaino 0:01deb85101c9 57
Alessio_Zaino 2:f8120bb54b69 58
Alessio_Zaino 2:f8120bb54b69 59
Alessio_Zaino 0:01deb85101c9 60 int BOX::get_resistance()
Alessio_Zaino 0:01deb85101c9 61 {
Alessio_Zaino 0:01deb85101c9 62 AnalogIn cond_value(_pincond); // reads voltage on the conductimeter pin.
Alessio_Zaino 4:d9c5d93963a8 63 /* float meas_v;
Alessio_Zaino 4:d9c5d93963a8 64 float current;*/
Alessio_Zaino 0:01deb85101c9 65 float resistance;
Alessio_Zaino 0:01deb85101c9 66 _tmp = 0;
Alessio_Zaino 0:01deb85101c9 67 for(int i = 0; i < 20; i++)
Alessio_Zaino 0:01deb85101c9 68 {
Alessio_Zaino 4:d9c5d93963a8 69 resistance = cond_value.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
Alessio_Zaino 4:d9c5d93963a8 70 /*current = (1 - meas_v) / (2000000); // kvl and V/R to get current
Alessio_Zaino 0:01deb85101c9 71 _tmp = (meas_v / current); // Ohm law gives us the soil resistence
Alessio_Zaino 4:d9c5d93963a8 72 resistance = resistance + _tmp;*/
Alessio_Zaino 0:01deb85101c9 73 }
Alessio_Zaino 0:01deb85101c9 74 return (int) (resistance / 20);
Alessio_Zaino 0:01deb85101c9 75 }
Alessio_Zaino 0:01deb85101c9 76
Alessio_Zaino 0:01deb85101c9 77 void BOX::tare(unsigned char times)
Alessio_Zaino 0:01deb85101c9 78 {
Alessio_Zaino 0:01deb85101c9 79 balance.setTare(balance.averageValue(times));
Alessio_Zaino 0:01deb85101c9 80 }
Alessio_Zaino 0:01deb85101c9 81
Alessio_Zaino 0:01deb85101c9 82 int BOX::get_weight()
Alessio_Zaino 0:01deb85101c9 83 {
Alessio_Zaino 0:01deb85101c9 84 return (int) (balance.getGram() / _coefficent);
Alessio_Zaino 0:01deb85101c9 85 }
Alessio_Zaino 3:442e7d2ab496 86 void BOX::move_servo(float ang)
Alessio_Zaino 3:442e7d2ab496 87 {
Alessio_Zaino 3:442e7d2ab496 88 servo.pulsewidth(ang/1000000.0f);
Alessio_Zaino 3:442e7d2ab496 89 }
Alessio_Zaino 3:442e7d2ab496 90