alguem conhece um código para fazer uma contagem regressiva no arduino,realizar uma tarefa apos certo tempo de acionado um botão, e mostrar em um display LCD.

 

Exibições: 8012

Responder esta

Respostas a este tópico

rapaz, procura na net um codigo que tem "blink sem delay" ai vc coloca uma variavel auxiliar decrementando quando um botao for acionado. (um " i-- " ).

eu encontrei o código em C++, porem não sei como adapta-lo para o arduino pois aparece uma séria de erros.

#include <stdlib.h>
#include <time.h>

void wait ( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLK_TCK;
while (clock() < endwait) {}
}

int main ()
{
int n;
printf ("Starting countdown...\n");
for (n=10; n>0; n--)
{
printf ("%d\n",n);
system ("cls"); // apos o numero limpar a tela a o tempo esta muito curto....

wait (1);

}
printf ("FIRE!!!\n");
//return 0;


system ("pause");

}

erros apresentado no arduino

contagem_1.cpp:2:18: error: time.h: No such file or directory
contagem_1.cpp: In function 'void wait(int)':
contagem_1:5: error: 'clock_t' was not declared in this scope
contagem_1:5: error: expected `;' before 'endwait'
contagem_1:6: error: 'endwait' was not declared in this scope
contagem_1:6: error: 'clock' was not declared in this scope
contagem_1:6: error: 'CLK_TCK' was not declared in this scope
contagem_1.cpp: In function 'int main()':
contagem_1:17: error: 'system' was not declared in this scope
contagem_1:26: error: 'system' was not declared in this scope


Amigo no proprio exemplo do arduino ja existe isso, o HELLO WORD com o cristal LCD so que o tempo ele conta progressivamente, Eu n entendi se o sistema tem que mostrar mesmo uma contagem regressiva no LCD ou se vc so quer que ele pare de fazer a tarefa apos um certo tempo...

 

sei la se for pra fazer e mostrar, faz um for d tanto a tanto e da um delay de UM segundo e manda da um print no lcd... rsss deve servir.

 

qualquer coisa passa mais info quem sabe da pra ajudar mais

 

Abraço

 

 

estou fazendo um projeto de lançamento de um mini foguete, a idéia e acionar um botão, então se inicial a contagem regressiva em 10, quando chagar em 0 será armado um relé, eu entendo de eletrônica, não conheço programação, estou apredendo o arduino a pouco tempo. só sei o básico.

Olá!

Seguindo a resposta do Renyer fica muito fácil, pois, o exemplo que tem lá serve para você muito bem obrigado.

Vou passar alguma dica...

1 - Procure estudar algoritmo e treine bastante, depois passe para a linguagem C do arduino mesmo para facilitar sua vida

2 - Qual o LCD q vc comrpou? se for o que tem no exemplo que vem no proprio arduino, basta seguir os passos de ligação, compilar o código e carregar no teu arduino. este aqui é mais completo e já testei pessoalmente http://arduino.hk/index.php?route=information/information&infor...

3 - Crie uma variável com o valor 10 e realize o procedimento de decrementar a contagem, coloque um condicional "if" perguntando se o valor da contagem é igual a ZERO e acione o seu Relé.

Exemplo seguindo o código fonte disponibilizado no menu File-> Examples -> LiquidCrystal-> HelloWorld

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Estes são os pino utilizados pelo LCD

int contador = 10; // Para disparar o Relé no final da contagem

void setup() {

pinMode(13, OUTPUT);  // Definindo o pino 13 como saída para acionar o Relé no final da contagem

// set up the LCD's number of columns and rows: 

lcd.begin(16, 2);
// Print a message to the LCD.
lcd.print("Atencao! Contagem regressiva em andamento."); // Basta alterar a mensagem que vai aparecer
}

void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
//lcd.print(millis()/1000);

//Contando

  lcd.print(contador--);

  //Condicional para ativar o relé

  if(contador <=0){

    digitalWrite(13, HIGH);

  }
}

 

Isso já mais que meio caminho andado e CLARO que falta melhorar algumas coisas.

Boa sorte e espero ter ajudado.

amigo muito obrigado, ajudou muito mesmo.

olá Leonilde, tudo bem?

Sua dica foi de imensa ajuda para mim

gostaria de saber se você poderia mim ajudar com este codigo

quando exucutado acontece os seguintes erros:

 quando ele chega em 0 ele começa a contar de 90 e fica subitraindo por 10 (EX: 90,80,70...)

Daí chega novamente em zero mas não aparece a mensagem

"TEMPO ESGOTADO RETIRE A TELA"

ao inves disso ele continua contando e fica tudo embolado

 

#include<LiquidCrystal.h>

LiquidCrystal lcd(8,9,4,5,6,7);

int Tseg=30;

void setup(){
lcd.begin(16,2);
lcd.setCursor(4,0);
lcd.print("Contando");
lcd.setCursor(5,1);
lcd.print("Segundos");



}

void loop(){


lcd.setCursor(2,1);
lcd.print(Tseg--);
delay(1000);

if(Tseg<=0){
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Tempo Esgotado");
delay(500);
lcd.setCursor(0,1);
lcd.print("Retire a Tela");

}


}

desde já agradeço a atenção.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço