Update Detector_Building.ino

This commit is contained in:
Anthony Wang 2020-02-10 10:34:11 -06:00 committed by GitHub
parent 54871f203e
commit 130d8ca372
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -16,7 +16,6 @@ const bool CALIB = false; // Calibration mode
const int LED_R = 4, LED_G = 3, LED_B = 2, THERM = 0; // Device component pins const int LED_R = 4, LED_G = 3, LED_B = 2, THERM = 0; // Device component pins
const double R_k = 10000, V_in = 5, analog_max = 1023; // Device constants const double R_k = 10000, V_in = 5, analog_max = 1023; // Device constants
// Calibration data // Calibration data
const int n = 3, m = n / 3; // Number of data points, MUST be multiple of 3 const int n = 3, m = n / 3; // Number of data points, MUST be multiple of 3
double V[n] = { 2.12, 3.26, 3.96 }; // Voltage measurements double V[n] = { 2.12, 3.26, 3.96 }; // Voltage measurements
@ -85,6 +84,7 @@ void blink(int pin) {
delay(1000); delay(1000);
digitalWrite(pin, LOW); digitalWrite(pin, LOW);
} }
// More Arduino stuff
void setup() { void setup() {
Serial.begin(9600); Serial.begin(9600);
pinMode(LED_R, OUTPUT); pinMode(LED_R, OUTPUT);
@ -125,7 +125,10 @@ void setup() {
void loop() { void loop() {
int V_raw = analogRead(THERM); // Read in raw analog value int V_raw = analogRead(THERM); // Read in raw analog value
double V_out = a2d(V_raw); // Convert analog to digital double V_out = a2d(V_raw); // Convert analog to digital
double R_t = R_k * (V_in / V_out - 1); // Thermistor resistance
if (CALIB) { if (CALIB) {
// Calibration mode
Serial.print("Raw analog reading: "); Serial.print("Raw analog reading: ");
Serial.print(V_raw); Serial.print(V_raw);
Serial.print(" Voltage (V): "); Serial.print(" Voltage (V): ");
@ -134,7 +137,7 @@ void loop() {
delay(500); delay(500);
return; return;
} }
double R_t = R_k * (V_in / V_out - 1); // Thermistor resistance
int s = 0; int s = 0;
while (s + 1 < m && V_out > V_mid[s + 1]) s++; // Find correct segment while (s + 1 < m && V_out > V_mid[s + 1]) s++; // Find correct segment
@ -144,28 +147,30 @@ void loop() {
double C = k2c(K); double C = k2c(K);
double F = c2f(C); double F = c2f(C);
// LED stuff // LED stuff
if (C <= 25) { if (C <= 25) { // Cold
digitalWrite(LED_R, LOW); digitalWrite(LED_R, LOW);
digitalWrite(LED_G, LOW); digitalWrite(LED_G, LOW);
digitalWrite(LED_B, HIGH); digitalWrite(LED_B, HIGH);
} }
else if (C <= 50) { else if (C <= 50) { // Medium
digitalWrite(LED_R, LOW); digitalWrite(LED_R, LOW);
digitalWrite(LED_G, HIGH); digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, LOW); digitalWrite(LED_B, LOW);
} }
else if (C <= 75) { else if (C <= 75) { // Hot
digitalWrite(LED_R, HIGH); digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, LOW); digitalWrite(LED_G, LOW);
digitalWrite(LED_B, LOW); digitalWrite(LED_B, LOW);
} }
else { else { // Something seriously wrong
digitalWrite(LED_R, HIGH); digitalWrite(LED_R, HIGH);
digitalWrite(LED_G, HIGH); digitalWrite(LED_G, HIGH);
digitalWrite(LED_B, HIGH); digitalWrite(LED_B, HIGH);
} }
// Output voltage, temperature // Output voltage, temperature
Serial.print("Raw analog reading: "); Serial.print("Raw analog reading: ");
Serial.print(V_raw); Serial.print(V_raw);
@ -175,8 +180,9 @@ void loop() {
//Serial.print(R_t); //Serial.print(R_t);
Serial.print(" Temperature (°C): "); Serial.print(" Temperature (°C): ");
Serial.print(C); Serial.print(C);
Serial.print(" Temperature (°F): "); // For reference // For reference
Serial.print(F); //Serial.print(" Temperature (°F): ");
//Serial.print(F);
// Debug stuff // Debug stuff
/*Serial.print(" Segment lower bound: "); /*Serial.print(" Segment lower bound: ");