Hola a todos,
llevo semanas con un problema que no puedo resolver.
Tengo un pulsador conectado al pin A0, los valores en el monitor serial son 0 y 1023 cuando es apretado.
Lo que que quiero es que cuando aprieto este pulsador se detenga por X minutos el sonido del zumbador pinbuzzer conectado al pin A2.
Como saben si uso el delay con tiempos de minutos esto me bloquea la tarjeta hasta que se acabe el tiempo.
Se que para evitar esto se usa la funcion millis pero hice varias pruebas y no entiendo como se usa, y donde colocarlo. Por favor si me pueden ayudar tambien con un enlace a algo parecido.
Muchas gracias
#include "max6675.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
float temperatura = 0;
float temperatura2 = 0;
int ktcSO = 11;
int ktcCS = 12;
int ktcCLK = 13;
int ktcCS2 = 3;
int umbral = 26 ;
int sensorgas = A1;
int sensorThres = 400;
const int pinBuzzer = A2;
const int pinBuzzer2 = A3;
const int sensorPin = A0;
int sensorValue;
MAX6675 ktc(ktcCLK, ktcCS, ktcSO);
MAX6675 ktc2(ktcCLK, ktcCS2, ktcSO);
unsigned long time;
void setup() {
pinMode(10, OUTPUT);
pinMode(14, INPUT);
pinMode(16, OUTPUT);
pinMode(17, OUTPUT);
pinMode(sensorgas, INPUT);
digitalWrite(10, HIGH);
lcd.begin(16, 2);
delay(500);
Serial.begin(9600);
delay(500);
void loop() {
temperatura = ktc.readCelsius();
temperatura2 = ktc2.readCelsius();
sensorValue = analogRead(sensorPin);
int analogSensor = analogRead(sensorgas);
Serial.print("PISO = ");
Serial.print(temperatura);
Serial.println(" C");
Serial.print("DOMO = ");
Serial.print(temperatura2);
Serial.println(" C");
Serial.print("PULSANTE = ");
Serial.println(sensorValue);
Serial.print("GAS ");
Serial.println(analogSensor);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("PISO ");
lcd.print(temperatura);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("DOMO ");
lcd.print(temperatura2);
lcd.print(" C");
delay(1000);
if (temperatura >= umbral) {
tone(pinBuzzer, 2440, 400);
delay(500);
}
if (sensorValue > 300 && temperatura >= umbral )
{
noTone(pinBuzzer);
delay(500);
}
if (temperatura <= umbral) {
noTone(pinBuzzer);
delay(500);
}
if (analogSensor <= 50) {
noTone(pinBuzzer2);
delay(500);
}
if (analogSensor > 100) {
tone(pinBuzzer2, 2040, 1000);
delay(500);
}
}