Доброго времени суток!
Нужна помощь со следующей проблемой. Хотели сделать коптильню, а все управление через ардуино, однако столкнолись с постоянными зависаниями скетча. Чтобы упростить поиск ошибки, все железо было убрано. Осталось только по минимуму:
Сама плата, датчик SHT35, стандартный модуль реле для ардуино и реле для печки на 3кв.
Работает все следующим образом: Каждые 5 секунд на 5 секунд подаются на модуль сигнал, который открывает питание на индустриальное реле, которое запускает печку. Во время отключения печки выполнение программы зависает. Скетч банальный, схема простая до безобразия, но решения так и не могу найти. Если убрать печку и оставить работать реле "в холостую", все работает часами. Как только добавляется печка, все зависает после двух-трех циклов.
Нужна помощь со следующей проблемой. Хотели сделать коптильню, а все управление через ардуино, однако столкнолись с постоянными зависаниями скетча. Чтобы упростить поиск ошибки, все железо было убрано. Осталось только по минимуму:
Сама плата, датчик SHT35, стандартный модуль реле для ардуино и реле для печки на 3кв.
Работает все следующим образом: Каждые 5 секунд на 5 секунд подаются на модуль сигнал, который открывает питание на индустриальное реле, которое запускает печку. Во время отключения печки выполнение программы зависает. Скетч банальный, схема простая до безобразия, но решения так и не могу найти. Если убрать печку и оставить работать реле "в холостую", все работает часами. Как только добавляется печка, все зависает после двух-трех циклов.
Скетч:
#include <Arduino.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
#define HEATER_ONE 22 //PIN for heater one
bool enableHeater = false;
int loopCnt = 0;
bool r_on_off = false;
Adafruit_SHT31 sht31 = Adafruit_SHT31();
void setup() {
Serial.begin(9600);
Serial.println("SHT31 test");
if (! sht31.begin(0x44)) { // Set to 0x45 for alternate i2c addr
Serial.println("Couldn't find SHT31");
}
Wire.setClock(100000);
Serial.print("Heater Enabled State: ");
if (sht31.isHeaterEnabled())
Serial.println("ENABLED");
else
Serial.println("DISABLED");
pinMode(HEATER_ONE, OUTPUT); digitalWrite(HEATER_ONE, HIGH); //Steam generator
}
unsigned long now_millis = 0;
unsigned long current_millis = 0;
void loop() {
float t = sht31.readTemperature();
float h = sht31.readHumidity();
if (! isnan(t)) { // check if 'is not a number'
Serial.print("Temp *C = "); Serial.print(t); Serial.print("\t\t");
} else {
Serial.println("Failed to read temperature");
}
if (! isnan(h)) { // check if 'is not a number'
Serial.print("Hum. % = "); Serial.println(h);
} else {
Serial.println("Failed to read humidity");
}
Serial.println("TEST");
now_millis = millis();
if(now_millis - current_millis >= 5000){
if(!r_on_off){
digitalWrite(HEATER_ONE, HIGH); //Steam generator
r_on_off = true;
} else {
digitalWrite(HEATER_ONE, LOW); //Steam generator
r_on_off = false;
}
current_millis = now_millis;
}
}
