117 lines
2.2 KiB
C++
117 lines
2.2 KiB
C++
/*
|
|
modified on Apr 10, 2021
|
|
Modified by MehranMaleki from Arduino Examples
|
|
Home
|
|
*/
|
|
|
|
// this is using the HiLetgo 5V 4 Channel Relay Shield
|
|
// pinout is apparently 7,6,5,4
|
|
|
|
#define USE_SHT30
|
|
|
|
#ifdef USE_SHT30
|
|
|
|
#include "SHT85.h"
|
|
#define SHT85_ADDRESS 0x44
|
|
|
|
SHT85 sht30;
|
|
|
|
#else
|
|
#include <Wire.h>
|
|
#include "DFRobot_SHT20.h"
|
|
|
|
TwoWire twowire;
|
|
DFRobot_SHT20 sht20(&twowire);
|
|
#endif
|
|
|
|
void fanOn() {
|
|
digitalWrite(7, HIGH);
|
|
}
|
|
|
|
void fanOff() {
|
|
digitalWrite(7, LOW);
|
|
}
|
|
|
|
|
|
void setup()
|
|
{
|
|
pinMode(4, OUTPUT);
|
|
pinMode(5, OUTPUT);
|
|
pinMode(7, OUTPUT);
|
|
digitalWrite(7, LOW);
|
|
|
|
Serial.begin(115200);
|
|
#ifdef USE_SHT30
|
|
Wire.begin();
|
|
sht30.begin(SHT85_ADDRESS);
|
|
Wire.setClock(10000);
|
|
#else
|
|
twowire.setClock(10000);
|
|
sht20.initSHT20(); // Init SHT20 Sensor
|
|
#endif
|
|
delay(100);
|
|
//sht20.checkSHT20(); // Check SHT20 Sensor
|
|
}
|
|
|
|
// relay 4
|
|
void toggle() {
|
|
digitalWrite(4, HIGH);
|
|
delay(100);
|
|
digitalWrite(4, LOW);
|
|
}
|
|
|
|
// relay 3
|
|
void toggle2() {
|
|
digitalWrite(5, HIGH);
|
|
delay(100);
|
|
digitalWrite(5, LOW);
|
|
}
|
|
|
|
void toggle_test(int p) {
|
|
digitalWrite(p, HIGH);
|
|
delay(100);
|
|
digitalWrite(p, LOW);
|
|
}
|
|
|
|
|
|
void loop()
|
|
{
|
|
while (Serial.available()) {
|
|
const int c = Serial.read();
|
|
if (c == 's') {
|
|
// TODO dump the current status
|
|
#ifdef USE_SHT30
|
|
sht30.read();
|
|
float humd = sht30.getHumidity();
|
|
float temp = sht30.getTemperature();
|
|
#else
|
|
float humd = sht20.readHumidity(); // Read Humidity
|
|
float temp = sht20.readTemperature(); // Read Temperature
|
|
#endif
|
|
const int NUM_AVG = 64;
|
|
float volts = 0.0f;
|
|
float volts2 = 0.0f;
|
|
for (int i = 0; i < NUM_AVG; i++) {
|
|
volts += (5.0f/1024.0f)*analogRead(A2);
|
|
volts2 += (5.0f/1024.0f)*analogRead(A0);
|
|
}
|
|
volts *= 1.0f/NUM_AVG;
|
|
volts2 *= 1.0f/NUM_AVG;
|
|
Serial.print(humd);
|
|
Serial.print(",");
|
|
Serial.print(temp);
|
|
Serial.print(",");
|
|
Serial.print(volts);
|
|
Serial.print(",");
|
|
Serial.println(volts2);
|
|
} else if (c == 'h') {
|
|
toggle();
|
|
} else if (c == 'i') {
|
|
toggle2();
|
|
} else if (c >= 'A' && c <= 'Z') {
|
|
toggle_test(c - 'A');
|
|
}
|
|
}
|
|
delay(1);
|
|
}
|