Boa tarde Amigos.

Tenho uma duvida que é muito básica, mas acaba atrapalhando um pouco em alguns projetos.

Quando coloco uma condição em um projeto tipo:

Faça tal coisa com "delay (250);"   , mas se apertar o botão 1 faça tal coisa com com delay(2000);

 Vou colocar um código exemplo mais pra baixo para ficar mais claro.

Como devo fazer nesses casos ??

#include <LiquidCrystal.h>

const int botaoMenu = 11;     // Pino Botão Menu
const int sirene = 8;
int contador = 0; 
int quantMenu = 3;
LiquidCrystal lcd(10, 9, 5, 4, 3, 2);

void setup(){
  lcd.begin(16, 4);
  pinMode(botaoMenu, INPUT);
  pinMode(sirene, OUTPUT);
  Serial.begin(9600);
  digitalWrite(sirene, LOW);
}

void loop(){
    if (digitalRead(botaoMenu) == HIGH) {     
   contador=contador+1;
   Serial.println("Botao Menu Apertado");
   Serial.println(contador);
  }
  if (contador>quantMenu){
    contador=0;
  }
  if (contador == 2){
    digitalWrite(sirene, HIGH);
    delay (2000);
    digitalWrite(sirene, LOW);
  }
   
  lcd.setCursor(0,0);
  lcd.print("  Ola Mundo  !  ");
  lcd.setCursor(0,1);
  lcd.print("  Menu Examplo  ");
  lcd.setCursor(0,2);
  lcd.print(contador);

  delay(250);
}

Obrigado, e grande abraço

Michael Araújo

Exibições: 237

Responder esta

Respostas a este tópico

No caso, o que atrapalha? o delay né? Em qualquer microcontrolador qualquer delay que você coloca ele para de fazer todas suas funções e fica preso no delay. Como exemplo sua sirene vai tocar por 2 segundos e você não vai conseguir desligar ela ou mudar para outro estado até que os 2 segundos passem. Sempre por toda sua vida de programação tente fazer programas sem delays. Nesse caso seria legal fazer acionar a sirene por interrupção, ou seja, estude INTERRUPÇÕES.
Acredito que é essa sua dúvida.
Valeu!

Oi MA, boa noite,

use a função millis(), ao invés de delay.

https://www.arduino.cc/en/reference/millis

Rui

Mas a pergunta principal é:

Você quer fazer (forçar) a pausa ? se sim, use o delay(x)...

Só que nesse seu caso, quando contador for "2", além da pausa de 2 segundos, ele fara uma pausa de 250ms, também. Caso as pausas sejam condicionadas, eles devem ficar dentro de seus respectivos IFs.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço