Hola amigos, me surgen algunas dudas y me gustaría saber si me pueden ayudar:
Estoy trabajando con un sensor de obstáculo que me envía una señal a arduino (1 o 0) cuando detecta algo, el tema es que quiero enviar es señal a un interfaz de usuario que me muestre en un cuadro un color rojo si esta detectando, o verde si esta sin detectar (eso es trabajo que asigno en el interfaz), ademas quiero enviar esa señal de salida desde el arduino al interfaz, solo si el sensor me detecta por unos "x" segundos un obstaculo, se que debo configurar un contador pero no se como hacerlo. Ademas me surge la duda sobre si debo usar otro pin de salida para enviar esta señal ya trabajada con el contador.
mi interfaz es creada en labview y mostrada en una pantalla lcd, quiero crear un timer que me marque unos 15 segundos, como puedo hacerlo?? este es mi programación....
#include <infrarrojo.h>
infrarrojo estado(13);//DEFINICION DEL PIN DEL ARDUINO A USAR
int VALOR;//VARIBLE QUE RECIBE EL DATO
int led =12;//REDEFINICION DE PIN DE ARDUINO PARA LED INDICADOR DE PULSO(ESTO ES OPCIONAL)
int led_estado;//VARIABLE
//CONFIGURACION DE SETUP
void setup() {
pinMode(led,OUTPUT);//LED QUE INDICA EL ESTADO DEL LED
Serial.begin(9600); //VELOCIDAD COMUNICACION SERIAL
}
//CODIGO PRINCIPAL
void loop() {
Serial.print("\n leyendo estado sensor: \n");//IMPRIME MENSAJE EN PC
Serial.print(estado.lectura(VALOR));//IMPRIME EL ESTADO DEL Vo DEL SENSOR MEDIANTE LA VARIABLE VALOR
led_estado = estado.lectura(VALOR);//LED QUE RECOGE EL ESTADO DEL SENSOR
if(led_estado == 1)//ETAPA DE COMPARACION PARA ACTIVAR UN LED SEGUN EL ESTADO DEL SENSOR
{
digitalWrite(led,HIGH);//PRENDE UN LED SI EL SENSOR DETECTA OBSTACULO
}
else
{
digitalWrite(led,LOW);
}
delay(400);//GENERA UN TIEMPO PARA LEER E IMPRIMIR EN PUERTO SERIE
#define DEMORA 15000 // en milisegundos o sea 15 x 1000 = 15000 mseg
creas una variable
unsigned long retardo = 0;
luego en algun sitio que genere el comienzo del timer inicializas
retardo = millis(); // ojo no lo pongas en el loop para que se ejecuta cada vez,
// sino dentro del evento que da inicio al retardo
if (millis() - retardo > DEMORA) {
// aca se superaron los 15 segundos asi que haces o llamas a la tarea que necesites.
// si quieres hacer algo dentro de los 15 segndos de iniciado el evento entocnes le pones < en
// lugar de mayor al if
}
ok disculpa....ahora ya tengo listo el contador, muchas gracias, por la ayuda. Pero ahora me surge la duda que postee en el otro "doble" post, ¿COMO PUEDO PROGRAMAR DOS SENSORES DE OBSTÁCULO? seria algo así?:
int inPin11 = 11;
int value11 = 0;
int inPin12 = 12;
int value12 = 0;
Fabian, los temas hay que seguirlos y mostrar el progreso y expresar bien lo que se busca.
Si vos dejas de hablar el dia 22 de noviembre hasta hoy poco podemos hacer.
Los temas se mueven en función del empuje que le demos.
Solo tu puedes ponerle TERMINADO O SIN SOLUCION.
Si te volvieras a explicar tal vez encuentres mmotivación en los demás para ayudarte y ser ayudado.