diff options
author | Anthony Wang | 2022-02-11 15:25:16 -0600 |
---|---|---|
committer | Anthony Wang | 2022-02-11 15:25:16 -0600 |
commit | 0f1a894cfb90257f767a76417072243be8c20243 (patch) | |
tree | a92467a25ab75ba621332726e0da138c2f917140 /Detector-Building.ino | |
parent | 6a32a6ec293ebdefab104d24bd4b0a0c764c7d8a (diff) |
Get code to actually compile
Diffstat (limited to 'Detector-Building.ino')
-rw-r--r-- | Detector-Building.ino | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/Detector-Building.ino b/Detector-Building.ino new file mode 100644 index 0000000..5a50dde --- /dev/null +++ b/Detector-Building.ino @@ -0,0 +1,64 @@ +/* + ____ __________________________________ ____ + / __ \/ ____/_ __/ ____/ ____/_ __/ __ \/ __ \ + / / / / __/ / / / __/ / / / / / / / / /_/ / + / /_/ / /___ / / / /___/ /___ / / / /_/ / _, _/ +/___________/ __________/\____/ _____\__________| + / __ )/ / / / _/ / / __ \/ _/ | / / ____/ + / __ / / / // // / / / / // // |/ / / __ + / /_/ / /_/ // // /___/ /_/ // // /| / /_/ / +/_____/\____/___/_____/_____/___/_/ |_/\____/ + +Ladue Horton Watkins High School Science Olympiad + +Licensed under the Parity Public License +*/ + + +#include <curveFitting.h> + + +const int LED_R = 8, LED_G = 10, LED_B = 12, THERM = 0; // Device component pins +const double R_k = 10000, V_in = 5, analog_max = 1023; // Device constants + +// Analog to digital conversion +double a2d(int a) { return V_in * a / analog_max; } +int d2a(double d) { return d * analog_max / V_in; } + +// Voltage to resistance conversion +double v2r(double V_out) { return R_k * (V_in / V_out - 1); } + +double vol[100]; +int con[100]; + +const int order = 2; +double coeff[order + 1]; + +void setup() { + Serial.begin(9600); + Serial.setTimeout(1000000); + Serial.println("Starting calibration"); + Serial.println("Place sensor in water and enter the concentration into the console"); + Serial.println("When you are finished, type c to continue"); + + int n = 0; + while (1) { + String s = Serial.readStringUntil('\n'); + if (s == "c") break; + vol[n] = a2d(analogRead(THERM)); + con[n] = s.toInt(); + Serial.println(n); + Serial.println((double)vol[n]); + Serial.println(con[n]); + ++n; + } + + fitCurve(order, n, vol, con, coeff); +} + +void loop() { + double v = a2d(analogRead(THERM)); + double c = 0; + for (int i = order; i >= 0; --i) c = v*c + coeff[i]; + Serial.println((double)c); +} |