Помогите новичку
- Войдите на сайт для отправки комментариев
Пт, 19/01/2018 - 19:56
Прошу помощи у знающих людей. Немогу понять как приравнять значение измеренной температуры с int value.
Прошу помощи у знающих людей. Немогу понять как приравнять значение измеренной температуры с int value.
#include <OneWire.h> #include <DallasTemperature.h> #include <SoftwareSerial.h> #include <Nextion.h> #define ONE_WIRE_BUS 10 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); const int VALVE=8; const int FIRE=9; SoftwareSerial nextion(2, 3); Nextion myNextion(nextion, 9600); void setup() { Serial.begin(9600); myNextion.init(); pinMode (VALVE, OUTPUT); pinMode (FIRE, OUTPUT); digitalWrite(VALVE, LOW); digitalWrite(FIRE, LOW); } void loop() { Serial.println("Requesting temperatures..."); sensors.requestTemperatures(); Serial.print("Temperature "); Serial.println(sensors.getTempCByIndex(0)); delay(1000); int value = ???????; // как приравнять значения температуры??? myNextion.setComponentText("t3", String(value)); String message = myNextion.listen(); if(message == "65 0 4 1 ffff ffff ffff"){ digitalWrite(VALVE, HIGH); } if(message == "65 0 5 1 ffff ffff ffff"){ digitalWrite(VALVE, LOW); } if(message == "65 0 1 1 ffff ffff ffff"){ digitalWrite(FIRE, HIGH); } if(message == "65 0 7 1 ffff ffff ffff"){ digitalWrite(FIRE, LOW); } if(message != ""){ Serial.println(message); } }Странно, вроде до этого пробывал но не проходила компиляция. Спасибо большое в следующий раз буду повнимательней.
возник еще вопрос, делаю горелку на отработке с адруино с температурным датчиком, электро розжигом, монитором nextion и электронагревом. и столкнулся с проблеммой что прерывающийся сигнал который должен выдавать ардуино с частотой 10мс на коммутатор не соответствует, и искра в место постоянной дуги бьет импульсами гдето через 1 сек. Вопрос: это из-за большого количества задач которые должна обработать ардуино?
#include <OneWire.h> #include <DallasTemperature.h> #include <SoftwareSerial.h> #include <Nextion.h> #define ONE_WIRE_BUS A0 OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); const int BZZZ = 7; int ledState = LOW; long previousMillis = 0; long interval = 1; int i=sensors.getTempCByIndex(0); const int VALVE=8; const int FIRE=9; const int HEAT=5; SoftwareSerial nextion(2, 3); Nextion myNextion(nextion, 9600); void setup() { pinMode(BZZZ, OUTPUT); Serial.begin(9600); myNextion.init(); pinMode (VALVE, OUTPUT); pinMode (FIRE, OUTPUT); pinMode (HEAT, OUTPUT); digitalWrite(VALVE, LOW); digitalWrite(FIRE, LOW); digitalWrite(HEAT, LOW); } void loop() { unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (ledState == LOW) ledState = HIGH; else ledState = LOW; digitalWrite(BZZZ, ledState); } if(sensors.getTempCByIndex(0)>=85) { digitalWrite(HEAT, LOW); } else { digitalWrite(HEAT, HIGH); } sensors.requestTemperatures(); int value = sensors.getTempCByIndex(0); String message = myNextion.listen(); if(message == "65 0 4 1 ffff ffff ffff") { Serial.println(message); digitalWrite(VALVE, HIGH); } if(message == "65 0 5 1 ffff ffff ffff"){ digitalWrite(VALVE, LOW); } if(message == "65 0 1 1 ffff ffff ffff"){ digitalWrite(FIRE, HIGH); } if(message == "65 0 7 1 ffff ffff ffff"){ digitalWrite(FIRE, LOW); } myNextion.setComponentText("t3", String(value)); }или имеется ошибка? ногами прошу сильно не пинать много чего не допонимаю)
считывание температуры с датчика (строки 57-58). занимает примерно 750-800мс. так что ни о каких импульсах раз в 10мс с этим кодом можете и не мечтать.
Выход - работать с датчиком температуры напрямую, без библиотек, на форуме есть отдельная ветка об этом.
Понел, спасибо проштудирую)
Borg244, у Вас код опроса nextion блокирующий - пока дисплей что-нибудь не напишет, программа его тупо ждет.