Me gustaria poner en la segunda linea del display lcd.setCursor(0,1); un temporizador que contara des de 60 asta 0, siempre el mismo minuto
alguien sabe alguna opcion de lcd.print(""); y una cuenta atras o algo?
gracias.
Me gustaria poner en la segunda linea del display lcd.setCursor(0,1); un temporizador que contara des de 60 asta 0, siempre el mismo minuto
alguien sabe alguna opcion de lcd.print(""); y una cuenta atras o algo?
gracias.
defines un contador por ejemplo
int contador = 0;
luego lo disparas de algún modo, supongamos que esta en marcha
contador += 1; // esto lo incrementa en 1
y finalmente en tu instrucción de lcd usas
lcd.setCursor(0,1);
lcd.print(contador);
Me costo encontrarlo, acá tienes un ejemplo que hice con la función millis()
lo saca por monitor serial, pero es fácil de adaptar.
unsigned long tiempo ;
unsigned long tiempo_guardado ;
int contador_atras= 60;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
}
void loop() {
tiempo=millis();
if (tiempo-tiempo_guardado>=1000){ //produce un evento cada 1000 milisegundo (1 seg)
tiempo_guardado=tiempo;
if (contador_atras > 0 ){
contador_atras--;
} else {
contador_atras=59;
}
Serial.println( contador_atras);
digitalWrite(13, HIGH);
}
}
PeterKantTropus:
Me costo encontrarlo, acá tienes un ejemplo que hice con la función millis()...
Me tomé la libertad de modificar un poco el codigo
unsigned long tiempo ;
unsigned long tiempo_guardado ;
int contador_atras= 60;
void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, LOW); //Mantiene led apagado
}
void loop() {
tiempo=millis();
if (tiempo-tiempo_guardado>=1000){ //produce un evento cada 1000 milisegundo (1 seg)
tiempo_guardado=tiempo;
if (contador_atras > 0 ){
contador_atras--;
} else {
digitalWrite(12, HIGH); // Enciende el led
delay (100); // Mantiene unos ms el led encendido
digitalWrite(12, LOW); // Apaga el led hasta el siguiente paso por 0
contador_atras=59;
}
Serial.println( contador_atras);
}
}
Me viene bien ya que esa forma el codigo al llegar a 0 realiza una tarea específica: apagar la PC
tras un minuto de enfriamiento de la máquina.
sige sin salirme, mi codigo principal es este
#include <SPI.h>
#include <Client.h>
#include <Ethernet.h>
#include <Server.h>
#include <Udp.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,1, 177);
EthernetServer server(80);
int PinLed1= 3; //esto sera actuador 1 en algun momento
int PinLed2= 4; //esto sera actuador 2 en algun momento
//int Entrada1= 5;
//int Entrada2=6;
String readString = String(30);
void setup()
{
Ethernet.begin(mac, ip);
server.begin();
pinMode(PinLed1,OUTPUT);
pinMode(PinLed2,OUTPUT);
}
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (readString.length()<30) //leer peticion HTTP caracter por caracter
{
readString += c;
}
if (c=='\n') //Si la peticion HTTP ha finalizado
{
//Determinar lo que se recibe mediante GET para encender el Led o apagarlo
if(readString.indexOf("Led1=On")>0){
digitalWrite(PinLed1,HIGH);
if(readString.indexOf("Led1=On")>0){
digitalWrite(PinLed1,LOW);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Riego");
lcd.setCursor(4,1);
lcd.print("Encendido");
delay(30000);
lcd.clear();
lcd.setCursor(1,0);
lcd.print("Queda 1 minuto");
lcd.setCursor(0,1);
printTheTime();
delay(30000); //definir 30000 para esperar menos de ejemplo.
lcd.clear();
lcd.print("Adrian Salguero");
digitalWrite(PinLed1,HIGH);
}
if(readString.indexOf("Led1=Off")>0){
digitalWrite(PinLed1,LOW);
}
if(readString.indexOf("Led2=On")>0){
digitalWrite(PinLed2,HIGH);
}
if(readString.indexOf("Led2=Off")>0){
digitalWrite(PinLed2,LOW);
}
readString=""; //Vaciar el string que se uso para la lectura
//Enviar cabecera HTTP estandar
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
//Crear pagina web HTML
client.println("");
client.println("");
client.println("Centro de control domestico 1.0");
client.println("");
client.println("");
client.println("
| LED 1 | LED 2 |
client.stop();
}
}
}
}
}
Cuando pongas codigo ,usa los tags adecuados (lee las normas del foro para saber como).
Antes del setup() pones esto:
String readString = String(30);
Supongo que quieres definir un String de 30 caracteres,pero lo que estas haciendo es crear un String y guardar en el numero 30 en ascii .Si bien al final del loop lo vacias ,si se diera el caso de que justo al encenderlo ya hubiera datos ,esa cadena ya tiene un 30 mas lo que le añadas.Simplemente pon:
String readString;
Luego pones:
if(readString.indexOf("Led1=On")>0){
digitalWrite(PinLed1,HIGH);
if(readString.indexOf("Led1=On")>0){
digitalWrite(PinLed1,LOW);
Supongo que la condicion del segundo if seria "Led1=Off" ,si te das cuenta has puesto la misma condicion en los dos ,por lo que si se cumple ,primero lo enciende pero inmediatamente lo apaga.
ese no es mi problema, mi problema es que no me sale la cuenta atras en el display
Hola amigos.
Me ha ayudado este post para un aparte de mi proyecto.
Estoy buscando información sobre cuenta atras ya programada por lcd,como el principio de este post.
Lo que ocurre es que yo tengo una pantalla 20x4 y quiero que tenga dos cuenta atras distintas,unas en las lineas de arriba y otra en las de abajo,con dos botones,uno para cada cuenta atras que se activaran al pulsar el boton.
Hacer uno ya lo conozco al buscar informacion sobre ello y funciona,pero no encuetro nada sobre dos cuenta atras que puedan funcionar a la vez.
¿Conoceis algun lugar donde poder informarme?
Gracias.
Tenéis que hacer un contador (o los que queráis) con millis() y luego lcd.print(contadorX)