71 lines
1.5 KiB
Arduino
71 lines
1.5 KiB
Arduino
|
|
||
|
#define FAN_PIN 12
|
||
|
#define L_LED_PIN 13
|
||
|
|
||
|
#define BMP280_I2C_ADDRESS 0x76 // BMP280 conneciton: D1 = SCL; D2 = SDA
|
||
|
|
||
|
// minimum value to start both fan's is 110
|
||
|
// without queeking noise is 255
|
||
|
#define FAN_ON_TEMP 26
|
||
|
#define FAN_OFF_MAX_TEMP 24
|
||
|
|
||
|
#define FAN_ON_STATE HIGH
|
||
|
#define FAN_OFF_STATE LOW
|
||
|
|
||
|
#define BMP280_CHECK_INTERVAL_MS 60000 // every 60000 = 60 seconds
|
||
|
|
||
|
float bmp280_temp = -99.9;
|
||
|
uint32_t bmp280_lastcheck_millis = BMP280_CHECK_INTERVAL_MS;
|
||
|
|
||
|
uint8_t fan_state = LOW;
|
||
|
|
||
|
void setup()
|
||
|
{
|
||
|
// put your setup code here, to run once:
|
||
|
|
||
|
// setup serial
|
||
|
Serial.begin(115200);
|
||
|
Serial.println();
|
||
|
delay(1000);
|
||
|
|
||
|
// setup BMP280
|
||
|
Serial.println("Sensor BMP280 init status: " + String(sensor_bmp280_begin(BMP280_I2C_ADDRESS)));
|
||
|
bmp280_temp = sensor_bmp280_temperature();
|
||
|
|
||
|
// setup FAN Pin
|
||
|
pinMode(FAN_PIN, OUTPUT);
|
||
|
|
||
|
pinMode(L_LED_PIN, OUTPUT);
|
||
|
}
|
||
|
|
||
|
void loop()
|
||
|
{
|
||
|
// put your main code here, to run repeatedly:
|
||
|
|
||
|
if ((bmp280_lastcheck_millis + BMP280_CHECK_INTERVAL_MS) <= millis())
|
||
|
{
|
||
|
bmp280_temp = sensor_bmp280_temperature();
|
||
|
Serial.println("Temperature: " + String(bmp280_temp) + "°C");
|
||
|
digitalWrite(L_LED_PIN, HIGH);
|
||
|
|
||
|
if (fan_state > 0 && bmp280_temp <= FAN_OFF_MAX_TEMP)
|
||
|
{
|
||
|
fan_state = FAN_OFF_STATE; // off
|
||
|
}
|
||
|
|
||
|
if (bmp280_temp >= FAN_ON_TEMP)
|
||
|
{
|
||
|
fan_state = FAN_ON_STATE;
|
||
|
}
|
||
|
|
||
|
Serial.println("FAN state: " + String(fan_state));
|
||
|
|
||
|
analogWrite(FAN_PIN, fan_state);
|
||
|
|
||
|
digitalWrite(L_LED_PIN, LOW);
|
||
|
|
||
|
bmp280_lastcheck_millis = millis();
|
||
|
}
|
||
|
|
||
|
}
|