Go Down

Topic: la funcion millis en lugar de delay  (Read 81 times) previous topic - next topic

antomexita

Nov 14, 2018, 11:56 pm Last Edit: Nov 14, 2018, 11:58 pm by antomexita
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

Code: [Select]
#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);
  }
}

Adrian_E

este tutorial esta en ingles, pero le decis a chrome que te lo traduzca y es como yo lo entendi al 100% https://forum.arduino.cc/index.php?topic=503368.0

surbyte

Y este tutorial esta en español hecho por gente de este foro

Ve a Documentación => Indice de temas tutoriales => Millis()

Go Up