Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
codigo arduino
#1
hola, soi nuevo por aqui.haber si me podeis ayudar con este codigo. soi novato.

#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal.h>

#define ONE_WIRE_BUS 10
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temp=27;

int rele1 =6;
int rele2 =7;
int rele3 =8;
int rele4 =9;
int rele5 =14;


void setup() {
pinMode(rele1,OUTPUT);
pinMode(rele2,OUTPUT);
pinMode(rele3,OUTPUT);
pinMode(rele4,OUTPUT);
pinMode(rele5,OUTPUT);
digitalWrite(rele1,HIGH);
digitalWrite(rele2,HIGH);
digitalWrite(rele3,HIGH);
digitalWrite(rele4,HIGH);

lcd.begin(20, 4);
pinMode(13,OUTPUT);
digitalWrite(13, HIGH);
sensors.begin();
lcd.setCursor(4, 1);
lcd.print("HOLA ");

lcd.setCursor(4, 2);
lcd.print("CARGANDO ");
lcd.setCursor(4, 3);
lcd.print(" SISTEMA ");

delay(5000);
digitalWrite(rele5,LOW);
}

void loop() {
sensors.requestTemperatures();
lcd.setCursor(0, 0);
lcd.print("Deposito 1: ");
lcd.print(sensors.getTempCByIndex(0));
lcd.print("C");

lcd.setCursor(0, 1);
lcd.print("Deposito 2: ");
lcd.print(sensors.getTempCByIndex(1));
lcd.print("C");

lcd.setCursor(0, 2);
lcd.print("Deposito 3: ");
lcd.print(sensors.getTempCByIndex(2));
lcd.print("C");

lcd.setCursor(0, 3);
lcd.print("Deposito 4: ");
lcd.print(sensors.getTempCByIndex(3));
lcd.print("C");
if (sensors.getTempCByIndex(0)>temp)
{
digitalWrite(rele1,LOW);

}

else
{
digitalWrite(rele1,HIGH);

}
/////////////////////////////////////////////////////////////////

if (sensors.getTempCByIndex(1)>temp)
{
digitalWrite(rele2,LOW);

}

else
{
digitalWrite(rele2,HIGH);

}
/////////////////////////////////////////////////////////////////

if (sensors.getTempCByIndex(2)>temp)
{
digitalWrite(rele3,LOW);

}
else
{
digitalWrite(rele3,HIGH);

}
/////////////////////////////////////////////////////////////////


if (sensors.getTempCByIndex(3)>temp)
{
digitalWrite(rele4,LOW);

}
else

{
digitalWrite(rele4,HIGH);

}

/////////////////////////////////////////////////////////////////
if (rele1 && rele2 == HIGH);
digitalWrite(rele5,LOW);

if (rele1 && rele3 == HIGH);
digitalWrite(rele5,LOW);

if (rele1 && rele4 == HIGH);
digitalWrite(rele5,LOW);

if (rele2 && rele3 == HIGH);
digitalWrite(rele5,LOW);

if (rele3 && rele4 == HIGH);
digitalWrite(rele5,LOW);

if (rele3 && rele4 == HIGH);
digitalWrite(rele5,LOW);


/////////////////////////////////////////////////////////////////////
if (rele1 && rele2 && rele3 == LOW);
digitalWrite(rele5,HIGH);

if (rele1 && rele2 && rele4 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele3 && rele2 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele3 && rele1 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele2 && rele1 == LOW);
digitalWrite(rele5,HIGH);

if (rele1 && rele2 && rele3 == LOW);
digitalWrite(rele5,HIGH);

}
en la pantalla funciona bien y los reles tan bien pero el rele5 no.
Gracias de antemano.
Citar
#2
Código:
/////////////////////////////////////////////////////////////////
if (rele1 && rele2 == HIGH);
digitalWrite(rele5,LOW);

if (rele1 && rele3 == HIGH);
digitalWrite(rele5,LOW);

if (rele1 && rele4 == HIGH);
digitalWrite(rele5,LOW);

if (rele2 && rele3 == HIGH);
digitalWrite(rele5,LOW);

if (rele3 && rele4 == HIGH);
digitalWrite(rele5,LOW);

if (rele3 && rele4 == HIGH);
digitalWrite(rele5,LOW);


/////////////////////////////////////////////////////////////////////
if (rele1 && rele2 && rele3 == LOW);
digitalWrite(rele5,HIGH);

if (rele1 && rele2 && rele4 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele3 && rele2 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele3 && rele1 == LOW);
digitalWrite(rele5,HIGH);

if (rele4 && rele2 && rele1 == LOW);
digitalWrite(rele5,HIGH);

if (rele1 && rele2 && rele3 == LOW);
digitalWrite(rele5,HIGH);

Posiblemente tengas el error en esa logica ya que se pueden dar varios casos afectado a los siguientes, y tienes condiciones repetidas, posiblemente te este pasando el rele de LOW a HIGH en cuestion de milisegundos y el rele al ser tan lento ni cierra el circuitopor eso no "funciona", te falta algun que otro delay y revisar esa logica utilizando un case o un elseif.

Mi recomendacion que pongas delay y escribas en la pantalla la condicion asi sabras por que condicion esta pasando siempre, y poder depurarlo.

PD: si explicas un poco el proyecto o lo que quieres consegir a lo mejor te podemos orientar con el codigo.
Citar
#3
Hola, muchas gracias por comtestar. el proyecto es para enfriar unas depositos, con un sensor de temperatura y unas valvulas que hacen que pase agua fria. el quinto rele es para una quinta valvula que hace baipass. cuando uno o varios reles esten activados que el quinto se apage y cuando esten apagados que el quinto encienda. Eso es la idea.(tengo que mirar el caudal de la bonba, que a lo mejor hay activar o dessactivar con un rele o dos). gracias otra vez por tu tiempo. un saludo.
Citar
#4
hola, alguien me puede ayudar, gracias de todos modos, sigo con las pruebas
Citar
#5
buenaas jhony, lo que intentas hacer es a nivel bit, prueba con un sólo &

Por otro lado, elimina parte de los casos ya que tienes casos repetidos en distinto orden
Citar
#6
Hola gracias por responder. Pero ya dí con la solución, lo estoi probando. Ya colgare el código aquí.
Citar
#7
hola. Aqui os dejo el codigo por si alguno le interesa.


Archivos adjuntos
.rar   sensor_.rar (Tamaño: 1.14 KB / Descargas: 37)
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  conversión código arduino ethernet 5100 a wemos d1 mini nbaglietto 0 129 24-11-2017, 02:05 AM
Último mensaje: nbaglietto
  Problemas subiendo codigo al ESP8266 igargi 6 2,287 18-09-2017, 04:04 AM
Último mensaje: CarlosTM
  Ayuda con codigo boton de pause motor PaP fredyr 2 246 22-08-2017, 08:48 PM
Último mensaje: fredyr
  Codigo morse con arduino antonio_gt_9.2 0 786 08-12-2016, 08:06 PM
Último mensaje: antonio_gt_9.2
  problema con shield para arduino para cargar el codigo homer32 6 955 17-10-2016, 07:49 AM
Último mensaje: homer32