Ola galera sou novo na programação do arduino e preciso de uma ajuda de vcs ,

preciso temporizar um rele assim que eu acionar um botão ,e esse tempo ajustávele  por um potenciômetro e esse valor me de em uma tela de lcd ... se alguem puder ajudar eu agradeço  

Exibições: 167

As respostas para este tópico estão encerradas.

Respostas a este tópico

Boa tarde  IM,

voce já tem um sketck, mesmo que não funcione?

Rui

Ola Rui ainda Nw ,estou estudando ainda para desenvolver um .

Rui montei esse ,esta dando um erro que nw consegui identificar 

#include <LiquidCrystal.h> //Libreria del display LCD
#define TONO_ERROR 600
#define TIME_INTERVAL 3000


LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //Inicializamos la libreria con el numero de los pines a utilizar

int rele = 6;
int buzzer = 5; //Alarme
int ahoras = 0; //Variable a mostrar por LCD de las horas
int aminutos = 0; //Variable a mostrar por LCD de los minutos
int asegundos = 0; //Variable a mostrar por LCD de los segundos
int segundostotal = 0; //Tiempo total
int msg= 0; //Barrera para el mensaje de bienvenida


int start = A1; //Pulsador de arranque
int empieza = 1024; // Variable para almacenaje del pulsador de arranque


int buth = A5; //Pulsador de Horas
int butm = A4; //Pulsador de Minutos
int buts = A3; //Pulsador de segundos


int varbuth = 0; //Variable para almacenar el valor del pulsador de horas
int varbutm = 0; //Variable para almacenar el valor del pulsador de minutos
int varbuts = 0; //Variable para almacenar el valor del pulsador de segundos


void setup()
{
lcd.begin(16, 2); // Configuramos el numero de columnas y filas del LCD.

pinMode(buzzer, OUTPUT); //Pin de alarma --> Salida
pinMode(buth, INPUT); //Pin de pulsador de horas --> Entrada
pinMode(butm, INPUT); //Pin de pulsador de minutos --> Entrada
pinMode(buts, INPUT); //Pin de pulsador de segundos --> Entrada
pinMode(start, INPUT); //Pin de pulsador de arranque --> Entrada

msg = 0; //Barrera del mensaje de bienvenida
empieza = 1024; //Barrera de arranque

varbuth = 1; //Barrera de horas
varbutm = 1; //Barrera de minutos
varbuts = 1; //Barrera de segundos

Serial.begin(9600);
}


void loop()
{
if(msg==0) //Mostramos el mensaje de bienvenida solo una vez
{
lcd.setCursor(0,0);
lcd.print("Temporizador con");
lcd.setCursor(1,1);
lcd.print("Arduino + LCD");
delay(2500);
msg = 1;
lcd.clear();
}

//-------------------------------------------------------------------------------------------------
// LECTURA DE LOS BOTONES Y ELECCIÓN DEL TIEMPO, NO SALE DEL BUCLE HASTA PULSAR
// EL BOTON DE ARRANQUE
//-------------------------------------------------------------------------------------------------

do
{

varbuth = analogRead(buth); //Leemos boton de horas
varbutm = analogRead(butm); //Leemos boton de minutos
varbuts = analogRead(buts); //Leemos boton de segundos

if(varbuth > 0) //Si el boton ha sido pulsado, aumentamos las horas en una unidad
{
ahoras = ahoras + 1 ;
delay(250);
}

if(varbutm > 0) //Si el boton ha sido pulsado, aumentamos los minutos en una unidad
{
aminutos = aminutos + 1;
if(aminutos == 60) aminutos = 0;
delay(250);
}

if(varbuts > 0) //Si el boton ha sido pulsado, aumentamos los segundos en una unidad
{
asegundos = asegundos + 1;
if(asegundos == 60) asegundos = 0;
delay(250);
}

lcd.setCursor(0,0);
lcd.print("Elige el tiempo"); //Muestra mensaje y las HH:MM:SS que vayamos aumentando

lcd.setCursor(4,1);


if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S)
lcd.print(":");


if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S)


lcd.print(":");
if (asegundos < 10) lcd.print("0"); // Si los segundos son menor que 10, pone un "0" delante.
lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1)


} while(analogRead(start) == 0); // Se repite el menu de elegir tiempo hasta que pulsemos el boton de arranque.
}
if(segundos > 0 )digitalWrite(rele, HIGH); //Se o tempo for maior que 0 segundos inicia o rele
segundostotal = segundos + (minutos * 60) + (horas * 60 * 60); //Converte o tempo selecionado em segundos!!
while (segundostotal > 0)
{
segundostotal = asegundos + (aminutos * 60) + (ahoras * 60 * 60); //Convierte el tiempo elegido en segundos!!

//-------------------------------------------------------------------------------------------------
// UNA VEZ PULSADO EL BOTON DE ARRANQUE Y ACUMULADO EL TIEMPO, ENTRA EN EL SIGUIENTE WHILE
// Y NO FINALIZA HASTA TERMINAR LA CUENTA.
//-------------------------------------------------------------------------------------------------


while (segundostotal > 0)
{
delay (1000); //Descontamos en periodos de 1 segundo
segundostotal--;

ahoras = ((segundostotal / 60)/ 60); //Convertimos los segundos totales en horas
aminutos = (segundostotal / 60) % 60; //Convertimos los segundos totales en minutos
asegundos = segundostotal % 60; //Convertimos los segundos totales en periodos de 60 segundos


lcd.setCursor(0,0);
lcd.print("Tiempo restante"); //Mostramos mensaje de tiempo restante

lcd.setCursor(4,1);
if (ahoras < 10) lcd.print("0"); // Si las horas son menor que 10, pone un "0" delante.
lcd.print(ahoras); // Sin este codigo, se muestra asi: H:M:S (1:M:S)
lcd.print(":");


if (aminutos < 10) lcd.print("0"); // Si los minutos son menor que 10, pone un "0" delante.
lcd.print(aminutos); // Sin este codigo, se muestra asi: H:M:S (H:1:S)


lcd.print(":");
if (asegundos < 10) lcd.print("0"); // si el valor de segundo esta por debajo de 9 (unidad) antepone un cero
lcd.print(asegundos); // Sin este codigo, se muestra asi: H:M:S (H:M:1)

if (segundostotal == 0) //Si finaliza el tiempo
{
while(1) //Bucle infinito mostrando mensaje y haciendo parpadear un led
{
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Tiempo");
lcd.setCursor(3,1);
lcd.print("Finalizado");
digitalWrite(rele, LOW); //Ao finalizar o processo desliga o rele
Inicio = 0;
contagem = 0;

sonarTono(TONO_ERROR,TIME_INTERVAL);
exit(0);
}
}
}

}


//------------------------------------
// SONAR TONO
//------------------------------------
void sonarTono(int tono, int duracion)
{
tone(buzzer,tono,duracion);
delay(duracion);
}

http://labdegaragem.com/forum/topics/sugest-o-de-como-postar

Ao postar sketchs, dê preferência postando em arquivos, ou em sites como

www.pastebin.com, pois postando na área de texto do seu post, caracteres

podem ser perdidos

não está pronto, mas vai por aqui...

int potenciometro = A0; // entrada analógica do potenciômetro
int pinoBotao = 4; // pino de entrada - botão
int pinoRele = 5; // pino de saída para ativar relé
int tempoDesejado = 0; // variável que vai guardar o tempo desejado para ser temporizado
int tempoSelecionado = 0;

void setup() {
tempoSelecionado = 10; //digamos que seja 10 minutos
pinMode(pinoRele, OUTPUT);
}

void loop() {

tempoDesejado = analogRead(potenciometro); //faz a leitura entre 0-1023
tempoDesejado = map(tempoDesejado, 0, 1023, 0, tempoSelecionado); //faz a relação entre 0 e o tempoDesejado com 0-1023

if (digitalRead(pinoBotao)){ //se apertou o botão
//fazer o que deseja pelo tempo selecionado
}

Valeu muito obrigado ,vou tentar fazer com esse ...

O pessoal costuma usar encoder rotativo também, para ajustar tempo.

http://labdegaragem.com/profiles/blog/show?id=6223006%3ABlogPost%3A...

Nesse caso é usado para controlar motor:

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2017   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço