La cuestión que planteo es "Como reducir tiempos de respuesta al activar reles en la programación adjunta" ya que me tarda como 6 segundos en actuar en el rele una vez pulso el boton correspondiente en la pantalla Nextion.
#include "OneWire.h"
#include "DallasTemperature.h"
#include "Arduino.h"
#include "Nextion.h"
#include "EasyNextionLibrary.h"
OneWire datos(2); // Pin de datos
DallasTemperature sensors(&datos);
#define RELE1 3
#define RELE2 4
#define RELE3 5
#define RELE4 6
char dato;
String cadena;
String d1, d2, d3, d4;
bool R1, R2, R3, R4;
byte p1, p2, p3, p4;
byte temp1[]={0x28, 0xFF, 0x20, 0xCE, 0xA4, 0x16, 0x05, 0x8D};
byte temp2[]={0x28, 0xFF, 0x74, 0xDA, 0xA2, 0x16, 0x04, 0xBE};
byte temp3[]={0x28, 0xFF, 0xD6, 0xBD, 0xA4, 0x16, 0x04, 0xC9};
byte temp4[]={0x28, 0xFF, 0x03, 0xDC, 0xA2, 0x16, 0x04, 0x8B};
float t1,t2,t3,t4;
void setup(void)
{
pinMode(RELE1, OUTPUT);
pinMode(RELE2, OUTPUT);
pinMode(RELE3, OUTPUT);
pinMode(RELE4, OUTPUT);
Serial.begin(9600);
sensors.begin();
}
void loop(void)
{
if (Serial.available() > 0) {
dato = Serial.read();
cadena = cadena + dato;
if (dato == '*') {
p1 = cadena.indexOf('|');
p2 = cadena.indexOf('|', p1 + 1);
p3 = cadena.indexOf('|', p2 + 1);
p4 = cadena.indexOf('|', p3 + 1);
d1 = cadena.substring(0, p1);
d2 = cadena.substring(p1 + 1, p2);
d3 = cadena.substring(p2 + 1, p3);
d4 = cadena.substring(p3 + 1, p4);
R1 = d1.toInt();
R2 = d2.toInt();
R3 = d3.toInt();
R4 = d4.toInt();
digitalWrite(RELE1, R1);
digitalWrite(RELE2, R2);
digitalWrite(RELE3, R3);
digitalWrite(RELE4, R4);
cadena = "";
}
}
sensors.requestTemperatures();
while(!sensors.isConversionComplete())
{
delay(1);
}
t1=sensors.getTempC(temp1);
t2=sensors.getTempC(temp2);
t3=sensors.getTempC(temp3);
t4=sensors.getTempC(temp4);
//Serial.print(t1);
//Serial.print("C,");
//Serial.print(t2);
//Serial.print("C,");
//Serial.print(t3);
//Serial.print("C,");
//Serial.print(t4);
//Serial.println("C,");
Serial.print("t11.txt=");
Serial.print("\"");
Serial.print(t1);
Serial.print("\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t12.txt=");
Serial.print("\"");
Serial.print(t2);
Serial.print("\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t13.txt=");
Serial.print("\"");
Serial.print(t3);
Serial.print("\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
Serial.print("t14.txt=");
Serial.print("\"");
Serial.print(t4);
Serial.print("\"");
Serial.write(0xff);
Serial.write(0xff);
Serial.write(0xff);
delay(1);
//if(Serial.available() > 0){
// boton1= Serial.read();
// Serial.print(boton1);
// if(boton1 == "a") {
// digitalWrite(Rele1, HIGH);
// }
// if(boton1 == "b") {
// digitalWrite(Rele1, LOW);
// }
}
@diegoing
Intente eliminar la lectura de los sensores de temperatura del código (temporalmente, para realizar pruebas): ¿responderá el relé más rápido?
Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.