/*
   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);
}