Boa tarde Garagistas!!
Tenho um projeto com contagem progressiva e regressiva de 0 a 10 segundos e de 10 a 0 segundos mostrados no display
Tentei de várias formas,no programa não consigo pausar o tempo em crescente e nem em decrescente.
Se algum dos colegas puder me ajudar agradeço.
Segue programa.

#include
#include
#define botaoregres 2
#define ledregres 3
#define botaoprogres 8
#define ledprogres 5
#define botaopausa 9
// Inicializa o display no endereco 0x27
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
int flagreprogres = 10; //seta o contador:Em 10 para e em 0 entra em andamento
int flagregres = 0; //seta o contador:Em 0 para e em 1 entra em andamento
int segundosprogres = 0; //tempo incial de progressão
int segundosregres = 10;//tempo incial de regressão
int entrada = 0; //monitora o estado da entrada se caso recebeu o pulso para ativar a saida

int pausa = 0; //pausa a contagem
int flag = 6; //seta no pino 6
int statusc = 0; //estatus do contador setado em 0

void setup() {
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Temporizador");
lcd.setCursor(0,1);
lcd.print("Na espera");
delay(2000); //tempo de apresentação no display

pinMode(botaoregres, INPUT); //entrada do botao para iniciar a regressão
pinMode(botaopausa,INPUT); //++++++++++
pinMode(botaoprogres,INPUT); //entrada do botao para iniciar a progressão
pinMode(ledprogres,OUTPUT );
pinMode(ledregres, OUTPUT);
pinMode(flag, OUTPUT);
}

void loop() {
entrada = digitalRead(botaoregres); //variavel que monitora a entrada do botao

if (entrada == HIGH ) { //entrada sendo igual a HIGH seta a flag em 1
flagregres = 1;//flag atribuido a 1
}
while(flagregres == 1){ //enquanto a flag for 1
digitalWrite(ledregres,LOW); // led desligado
segundosregres -- ; //decrementa a variavel segundos
lcd.clear(); //limpa o LCD
lcd.setCursor(0,0);
lcd.print("Tempo: - 10 Seg ");
lcd.setCursor(8,1);
lcd.print("00:"); //implementa dois zeros a frente
if(segundosregres<10){ // enquanto a variavel menor que 10
lcd.print("0"); // imprime um zero na frente
}

lcd.print(segundosregres); //printa a varialvel segundos
delay(1000); //mostra somente no LCD de 1 em 1 segundo
if(segundosregres == 0){ //segundos igual a zero
segundosregres = 0; //tempo inicial de regressão
flagregres = 0; //seta o contador em 0 novamente

digitalWrite(ledregres, HIGH);

lcd.clear();
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Temporiz/Decrescent");
lcd.setCursor(0,1);
lcd.print("Led acionado");

}else
digitalWrite(ledregres, LOW);
}

entrada = digitalRead(botaoprogres); //variavel que monitora a entrada do botao

if (entrada == HIGH ) { //entrada sendo igual a HIGH seta a flag em 1
flagreprogres = 1; //flag atribuido a 1
}

while( flagreprogres == 1){ //enquanto a flag for 1
digitalWrite(ledregres,LOW); // led desligado
segundosprogres ++ ; //incrementa a variavel segundos
lcd.clear(); //limpa o LCD
lcd.setCursor(0,0);
lcd.print("Tempo: + 10 Seg ");
lcd.setCursor(8,1);
lcd.print("00:"); //implementa dois zeros a frente
if(segundosprogres > 10){ // enquanto a variavel menor que 10
lcd.print("0"); // imprime um zero na frente
}

lcd.print(segundosprogres); //printa a varialvel segundos
delay(1000); //mostra somente no LCD de um em um segundo
if(segundosprogres == 10){ //segundos igual a 10

digitalWrite(ledprogres, HIGH);
delay(2000);
segundosprogres = 0; //tempo inicial de progressão
flagreprogres = 10; //seta o contador em 10 novamente

lcd.clear();
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Temporiz/Crescen");
lcd.setCursor(0,1);
lcd.print("Led acionado");

}else
digitalWrite(ledprogres, LOW);
}
}

Exibições: 876

Responder esta

Respostas a este tópico

Boa noite  Sr.R2A, (se não gosta que te chame pelas iniciais, avise),

gostaria muito de te ajudar, mas para isto recomendo as seguintes ações:


1. Remova seu sketch da área de texto do seu tópico;

2. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo"

    e anexe o arquivo  com o seu sketch;


3. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
4. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com cada
     linha e facilita a ajuda.

Outro detalhe, não esqueça de completar as 2 primeiras linha iniciais que no momento só contem #include

RV

Como apago a stektch da aérea de texto??

Abra seu post, procure por "opções"  .

Click em opções e em seguida click em editar tópico.

E dai modifique o tópico.

RV

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço