Estou montando um projeto de um misturador para o curso alimentos, muito pouco se fala sobre temporizador cíclico para arduino, alguem tem uma luz de como iniciar, tenho um code aqui e vou postar, preciso apenas em segundos,  com 2 linhas no lcd

 1° tempo acionado    de 0 a 10 s

2° intervalo              de 0 a 10 s

Exibições: 1248

Responder esta

Respostas a este tópico

Oi JC, boa tarde.

Cade o code?

Rui

[code]
#include <LiquidCrystal.h> //Libreria del display LCD

LiquidCrystal lcd(7, 8, 9, 10, 11, 12); // Inicializar a biblioteca com o número de pinos de usar
int led = 5;
int asegundos = 0; //Display LCD variável para segundos
int segundostotal = 0; //Tempo total
int msg= 0; //Barrera para a mensagem de boas-vindas
int start = A1; //Iniciar botão
int empieza = 1024; // Variável para botão de arranque de armazenamento

int buts = A3; //segundos tipo botão de pressão
int varbuts = 0; //Valor Variável para armazenar o valor do botão segundos
void setup()
{
lcd.begin(20, 4); //


pinMode(led, OUTPUT); //Pin de alarma --> Saida
pinMode(buts, INPUT); //Pin botão segundos -> Input
pinMode(start, INPUT); //Pin botão Iniciar -> Input

msg = 0; //Mensagem Barreira da vindas boas
empieza = 1024; //Barrera de inicio

Serial.begin(9600);
}
void loop()
{
if(msg==0) //Mostra a mensagem de boas-vindas apenas uma vez
{
lcd.setCursor(0,0);
lcd.print("Temporizador ");
lcd.setCursor(1,1);
lcd.print("Arduino + LCD");
delay(250);
msg = 1;
lcd.clear();
}

do
{


varbuts = analogRead(buts); //Leia botão segundos


if(varbuts > 0) //Se o botão foi pressionado, o segundo aumento em uma unidade
{
asegundos = asegundos + 1;
if(asegundos == 60) asegundos = 0;
delay(100);
}

lcd.setCursor(0,0);
lcd.print("Selecionar tempo"); //exibida e SS nós vamos aumentar

lcd.setCursor(4,1);
if (asegundos < 10) lcd.print("0"); // Se esta última for menor que 10, define um "0" antes.
lcd.print(asegundos); // Sem esse código, ele também mostra S


} while(analogRead(start) == 0); // Se repite el menu de elegir tiempo hasta que pulsemos el boton de arranque.

segundostotal = asegundos; //Converte o tempo selecionado em segundos

//-------------------------------------------------------------------------------------------------
// Depois de pressionar o botão de início e o tempo acumulado, ao entrar no PRÓXIMO
// E NÃO para encerrar a conta final.
//-------------------------------------------------------------------------------------------------
while (segundostotal > 0)
{
delay (500); //Eu desconto em períodos de um segundo
segundostotal--;


asegundos = segundostotal % 60; //Converte o total de segundos em períodos de 60 segundos
lcd.setCursor(0,0);
lcd.print("Tempo restante"); //Mostra mensagem de tempo restante

lcd.setCursor(4,1);
if (asegundos < 10) lcd.print("0"); // Se o segundo valor está abaixo de 9 (unidade) coloca um zero
lcd.print(asegundos); // Sem esse código, ele também mostra S

if (segundostotal == 0) //Se o tempo expirar
{
while(1) //faz um loop infinito que mostra a mensagem e piscando um LED
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");
digitalWrite(led, HIGH);
delay(250);
digitalWrite(led, LOW);
delay(250);
exit(0);
}
}
}
}
[/code]

Será que nosso velho e amigo millis() ajudaria ela???

estou ajustando o o code 

lcd 20x4    3 linhas no lcd

Linha 1    TEMPO      ( de 0 a 10s)

Linha 2    INTERVALO  ( de 0 a 10)

Linha 3 VELOCIDADE   ( pwm de 0 a 255)

com 4 botoes ,     Set ,-, +, manual

motor inicia desligado, escolhe o tempo , intervalo e velocidde

e então inicia o ciclo,  

difícil é fazer o aciomamento do intervalo

Oi JC, boa noite.

Um code para você testar.

Rui

Anexos

Caraca Rui,

Você além de rápido, faz um código super profissional e bonito.

Fiquei com vergonha do meu, rssss.

Enfim, mesmo assim, aqui está: http://pastebin.com/x7ga0zKs

Gostei do seu código, vi que usou interrupção.

Grande abraço,

  'Eiju

Oi Celso! muito obrigado pela ajuda, vou testar o seu código também! mas como vc disse o Rui estava tinha tomado algo nervoso ontem, tava formiga atômica.

 

Não testei não, mas ficou no capricho !

Rui é o nosso Oráculo da programação !

se tiver um tempinho testa para ser se está em pleno vapor, aguardo

Olá querido Rui!  sem palavras, se com sono vc faz tudo aquilo vc não é da terra não,  uma formiga atômica .

O Rui é fera, e super educado sem contar com o senso de humor com tantos kkkkkk,   muito prazeroso. 

Oi CEI e JGAMe JC bom dia,

obrigado pelos elogios.

Aprendi muito aqui com vocês  com outros amigos daqui.

JC, desculpe, mas postei o code com o LCD I2C.  (eu estava com sono kkkk)

segue o code com LCD normal.

Descobri um erro no code.

O valor da velocidade só pode ir até 10.

Segue o novo code corrigido.

Rui

Anexos

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço