Pages: [1]   Go Down
Author Topic: arduino error con el tiempo  (Read 796 times)
0 Members and 1 Guest are viewing this topic.
MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

buenas compañeros...
poco a poco eh creado este ciodigo en arduino
no esta muy bien desarrollado pues soy nuevo en esto...
el error que tengo y quiero solucionar es en la parte de el tiempo de lectura de temperatura
mi programa en fisico funciona bien pero no eh dado con como
pones los botones subir y  bajar en tiempo normal, es que tengo que dejarlos oprimido medio segundo
para que me los tome en cuenta el arduino... como podria corregir este error y poner muy aparte
el tiempo de lectura del sensor a el de los pulsadores? saludos

Code:
#include <LiquidCrystal.h>//libreria para el display lcd
float tempC=0;//datos de la temperatura
int tempPin=0;//sensor
int suma=7;//boton subir
int resta=8;//boton bajar
int contador=20;//ajuste de temperatur
int buttonPin = 9;
int ledPin =  10;

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//salidas tx rx para el display lcd

void setup()
{
  pinMode(ledPin, OUTPUT);     
  pinMode(buttonPin, INPUT);
  pinMode(resta,INPUT);//valor configurado como entrada
  pinMode(suma,INPUT);//valor configurado como entrada
  pinMode(13,OUTPUT);//pin 13 de arduino configurado como salida
 
 
  lcd.begin(16, 2);//ajuste del lcd a las columnas y sus filas de inicio
  lcd.setCursor(0, 0);
  lcd.print("Set Point: ");
  lcd.print(contador);//mostrar en lcd "..."
}

void loop()
{
  if (digitalRead(buttonPin) == HIGH) {       
    digitalWrite(ledPin, HIGH); 
  }
  else {
    digitalWrite(ledPin, LOW);
  }
  {

     if (digitalRead(suma)==HIGH)//comparativa de lecturas en el pin de entrada suma
  {
         while (digitalRead(suma)==HIGH )//mientras...
        {
          delay(10);
        }
             //Si lo soltó, Apagar Led y Contar
            if (digitalRead(suma)==LOW)//comparativa de la lectura digital en el pin de entrada suma
          { contador++;
            lcd.setCursor(0,0);
            lcd.clear();
            lcd.print("Set Point: ");
            lcd.print(contador);
          }
   }
     if (digitalRead(resta)==HIGH)//comparativa de lecturas en el pin de entrada resta
  {
         while (digitalRead(resta)==HIGH )//mientras...
        {
          delay(10);
        }
       
            if (digitalRead(resta)==LOW)//comparativa de lecturas en el pin de entrada resta
          { contador--;
            lcd.setCursor(0,0);
            lcd.print("Set Point: ");
            lcd.print(contador);
          }
   }
}
    tempC=(5*analogRead(tempPin)*100.0)/1024.0;// calculo de lectura analogica en el pin de entrada 0A
  lcd.setCursor(0, 1);
    lcd.print("Temp Act:  ");
    lcd.print(tempC);//mostrar en lcd "temperatura"
  delay(1000);//retraso antes de repetir el ciclo
  if(tempC < contador)//condicional si... diferencia para activar el relevador
  {
   digitalWrite(13, HIGH);
   }
  else//si no...
  {
  digitalWrite(13, LOW);//escritura digital de ajuste del pin de salida
   }
}
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 30
Intentando hacer algo.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

De leer sobre codigo se que arregla cambiando los delay() por interrupciones. Busca sobre ello.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1407
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

tienes que deshacerte de los delays()

Code:
delay(1000);//retraso antes de repetir el ciclo

estos te bloquean el programa por eso no leen las pulsaciones.
puedes usar interrupciones pero si tu codigo es suficientemente rapido con quitar los delays sera suficiente.
mira el ejemplo que viene con arduino de blinkwithoutdelay
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

MEXICO
Offline Offline
Newbie
*
Karma: 0
Posts: 42
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

gracias copañero ya lo habia hecho solo por curiosidad para ver que pasaba y funciono,
claro no sabia que era la diferencia y tu la explicaste muy bien saludos y gracias
Logged

Pages: [1]   Go Up
Jump to: