/*
calcRH002
Bereken de spanningen bij een bepaalde temperatuur voor een RH002 vochtsensor
Pros 2013
*/
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#define ROWS 7
double R[ROWS][15] = {
{4000.0, 2100.0, 1175.0, 612.0, 335.0, 210.0, 125.0, 89.0, 62.0, 41.0, 30.0, 21.5, 15.3, 10.2, 7.93}, // 5
{4000.0, 1620.0, 874.0, 465.0, 275.0, 166.0, 107.8, 76.1, 50.7, 35.1, 25.6, 18.3, 12.8, 8.98, 7.05}, // 10
{2290.0, 1250.0, 650.0, 353.0, 226.0, 131.0, 93.0, 65.0, 41.5, 30.0, 21.9, 15.6, 10.7, 7.91, 5.75}, // 15
{1822.0, 942.0, 482.0, 286.0, 175.0, 112.0, 79.5, 52.9, 35.9, 25.1, 18.6, 13.1, 9.4, 6.54, 4.75}, // 20
{1450.0, 710.0, 358.0, 232.0, 145.0, 95.0, 68.0, 43.0, 31.0, 21.0, 15.8, 11.0, 8.2, 5.4, 3.9}, // 25
{1063.0, 523.0, 292.0, 187.0, 114.0, 78.6, 55.3, 37.1, 26.6, 18.6, 13.1, 9.32, 6.59, 4.58, 3.23}, // 30
{780.0, 385.0, 238.0, 150.0, 97.0, 65.0, 45.0, 32.0, 22.9, 16.5, 10.8, 7.9, 5.3, 3.89, 2.66} // 35
};
double V = 1140.0;
// result=$(echo "x=((1140/(${R}+31))*31)+0.5; scale=0; x/1" | bc -l)
int main(int argc, char *argv[])
{
int col, row;
unsigned int result;
double val, tmp;
printf("const unsigned int U[%d][15] PROGMEM = {\n { ", ROWS);
for (row = 0; row < ROWS; row++) {
for (col = 0; col < 15; col++) {
val = R[row][col];
tmp = V / (val + 31.0);
tmp *= 31.0;
tmp += 0.5;
result = (unsigned int) tmp;
if (col < 14) {
printf("%d, ", result);
} else {
if (row < (ROWS - 1)) {
printf("%d },\n { ", result);
} else {
printf("%d }\n};\n ", result);
}
}
}
}
return (0);
}