Ao acionar uma lâmpada, display LCD inicia a contagem regressiva

Primeiramente agradeço a oportunidade de poder estar participando de um local como esse, sou inexperiente nesse ramo e muito curioso.

Estou realizando um trabalho baseado no Arduino e Android onde pretendo realizar via WiFi algumas tarefas. Por exemplo, pretendo realizar uma função que permita ao usuário escolher um período de tempo entre  minutos que deseja que a lâmpada fique acesa, ao passar o tempo específico, a mesma tem sua função encerrada apagando a lâmpada. Para tentar produzir esse projeto comecei a fazer alguns testes com o Display LCD, porém não consigo fazer isso...

Problemas encontrados:

- não consegui fazer o tempo ficar contabilizando automaticamente (em ambas as ordens crescente ou decrescente);

- ao desligar a lâmpada o tempo não zera e exibe somente o tempo em segundo fixo que a lâmpada foi acesa novamente.

Peço ajuda...

segue o código:

#include <LiquidCrystal.h> // Inclui a biblioteca LiquidCrystal

#define Luz_Fundo 7
LiquidCrystal lcd (12, 11, 5, 4, 3, 2);// cria um objeto tipo LiquidCrystal chamado lcd

int ledPin = 13;


void setup() { 
Serial.begin(9600); 
pinMode(ledPin, OUTPUT);

lcd.begin (16,2);// Iniciando lcd como 2 linhas e 16 colunas
pinMode(Luz_Fundo, OUTPUT);// define o pino 7 como saída
digitalWrite(Luz_Fundo, HIGH); // Liga a luz do display
}


void loop() {

char caracter;
caracter = Serial.read();

//se pressionado "l" liga a lâmpada
if(caracter == 'l' || caracter == 'L')
{
lcd.setCursor (0,0); // seta o cursor para (coluna = 0, linha = 0)
lcd.print("Luz foi acionada a");
lcd.setCursor(0,1);// seta para linha 1
lcd.print(millis() / 1000); //escreve os segudos
lcd.print(" segundos atras");
digitalWrite(ledPin, HIGH);
}

//se pressionado "d" desliga a lâmpada
else if (caracter == 'd' || caracter =='D')
{
lcd.clear();
lcd.setCursor (0,0); // seta o cursor para (coluna = 0, linha = 0)
lcd.print(" Luz foi ");
lcd.setCursor (0,1); // seta o cursor para (coluna = 0, linha = 1)
lcd.print(" desativada ");
digitalWrite (ledPin, LOW);
}
delay(1000);
}

Exibições: 644

Anexos

Responder esta

Respostas a este tópico

Cara pegue os segundos e armazene em uma variavel. Quando voce carregar os segundos em uma variavel qualquer na hora de mostrar os segundos atraz você puxa a variavel.

Para seu programa ficar mais didatico e de melhor entendimento tenta separar bem as coisas e declarar as variaveis no inicio da programação, ficara mais facil.

 

Espero ter ajudado.!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço