Помогите новичку

Borg2442
Offline
Зарегистрирован: 26.07.2016

Прошу помощи у знающих людей. Немогу понять как приравнять значение измеренной температуры с int value.

 

Borg2442
Offline
Зарегистрирован: 26.07.2016
#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);
   
  }  
}

 

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

int value = sensors.getTempCByIndex(0);

 

Borg2442
Offline
Зарегистрирован: 26.07.2016

Странно, вроде до этого пробывал но не проходила компиляция. Спасибо большое в следующий раз буду повнимательней.

Borg2442
Offline
Зарегистрирован: 26.07.2016

возник еще вопрос, делаю горелку на отработке с адруино с температурным датчиком, электро розжигом, монитором nextion и электронагревом. и столкнулся с проблеммой что прерывающийся сигнал который должен выдавать ардуино с частотой 10мс на коммутатор не соответствует, и искра в место постоянной дуги бьет импульсами гдето через 1 сек. Вопрос: это из-за большого количества задач которые должна обработать ардуино?

Borg2442
Offline
Зарегистрирован: 26.07.2016
#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));
}

 

Borg2442
Offline
Зарегистрирован: 26.07.2016

или имеется ошибка? ногами прошу сильно не пинать много чего не допонимаю)

b707
Offline
Зарегистрирован: 26.05.2017

считывание температуры с датчика (строки 57-58). занимает примерно 750-800мс. так что ни о каких импульсах раз в 10мс с этим кодом можете и не мечтать.

Выход - работать с датчиком температуры напрямую, без библиотек, на форуме есть отдельная ветка об этом.

Borg2442
Offline
Зарегистрирован: 26.07.2016

Понел, спасибо проштудирую)

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Borg244, у Вас код опроса nextion блокирующий - пока дисплей что-нибудь не напишет, программа его тупо ждет.