estoy tratando de manejar un modulo de 4 relés que irán conectados a unos focos y a su veces estar sensor de temperatura max6675 funcionando, la cuestión es que no logro que haga las 2 funciones a la vez.
#include <max6675.h>
#define push 38
#define rele_1 30
#define rele_2 31
#define rele_3 32
#define rele_4 33
float temperatura=0;
int So =46;
int Cs=47;
int Clk=48;
MAX6675 ktc(Clk,Cs,So);
int cuenta= 0;
int val =0;
int estado =0;
int old_val =0;
void setup() {
pinMode(push, INPUT_PULLUP);
pinMode(rele_1,OUTPUT);
pinMode(rele_2,OUTPUT);
pinMode(rele_3,OUTPUT);
pinMode(rele_4,OUTPUT);
digitalWrite(rele_1,LOW);
digitalWrite(rele_2,LOW);
digitalWrite(rele_3,LOW);
digitalWrite(rele_4,LOW);
Serial.begin(9600);
delay(500);
}
void temp(){
unsigned long t =900;
static unsigned long old_t=0;
if((millis()-old_t)>t){
do{
temperatura=ktc.readCelsius();
Serial.println("temperatura");
Serial.println(temperatura);
Serial.println("c");
delay(1000);
old_t+=t;
}while(true);
t=millis();
}
}
void rele (){
unsigned long t =300;
static unsigned long old_t=0;
if((millis()-old_t)>t){
while(1){
val=digitalRead(push);
if ((val==LOW)&& old_val==HIGH){
if(cuenta==4){
cuenta=0;
}else {
cuenta++;
}
estado=!estado;
delay(19);
}
old_val=val;
t=millis();
if (cuenta==1){
digitalWrite(rele_1,LOW);
}if (cuenta==2){
digitalWrite(rele_2,LOW);
}
if (cuenta==3){
digitalWrite(rele_3,LOW);
}
if (cuenta==4){
digitalWrite(rele_4,LOW);
}
if (cuenta==0){
digitalWrite(rele_1,HIGH);
digitalWrite(rele_2,HIGH);
digitalWrite(rele_3,HIGH);
digitalWrite(rele_4,HIGH);
}
}
old_t+=t;
}
}
void loop() {
temp();
rele();
}