arduino2/ads1115/AdsBuf2Float.java
2020-11-06 13:17:55 +01:00

91 lines
1.6 KiB
Java

/*
* class zum auslesen des Buffers das ADS115
*
* union dual
{
char charBuff[8];
int intBuff[4];
}
dual myData;
Variable wird im Arduino belegt über myData.intBuff und seriell mit myData.charBuff übertragen
*
*
*
* ads.setGain(GAIN_TWOTHIRDS); +/- 6.144V 1 bit = 0.1875mV (default) 0
* ads.setGain(GAIN_ONE); +/- 4.096V 1 bit = 0.125mV 1
* ads.setGain(GAIN_TWO); +/- 2.048V 1 bit = 0.0625mV 2
* ads.setGain(GAIN_FOUR); +/- 1.024V 1 bit = 0.03125mV 3
* ads.setGain(GAIN_EIGHT); +/- 0.512V 1 bit = 0.015625mV 4
* ads.setGain(GAIN_SIXTEEN); +/- 0.256V 1 bit = 0.0078125mV 5
*
*
*
*
*/
public class AdsBuf2Float {
byte[] bb ;
int[] ii ;
float[] ff;
float multi;
public AdsBuf2Float(byte[] b, int bbi, int mm) {
bb = new byte[bbi];
ii = new int[bbi/2];
ff = new float[bbi/2];
multi = getMulti(mm);
for (int i = 0; i < bbi; i++) {
bb[i]=b[i];
}
}
public float getMulti(int i ){
float f = 0;
switch (i) {
case 1:
f = (float) 0.125;
break;
case 2:
f = (float) 0.0625;
break;
case 3:
f = (float) 0.03125;
break;
case 4:
f = (float) 0.015625;
break;
case 5:
f = (float) 0.0078125;
break;
default:
f = (float) 0.1875;
break;
}
return f;
}
public int unToBy(byte a)
{
int b = a & 0xFF;
return b;
}
public float[] convert(byte[] bb2) {
for (int i = 0; i < bb2.length; i++) {
bb[i]=bb2[i];
}
int c=0;
for (int i = 0; i < ii.length; i++) {
ii[i] = bb[c+1]*256 + unToBy(bb[c]);
c+=2;
ff[i] = ii[i]*multi;
}
return ff;
}
}