cuentarrevoluciones con cny70

Hola
he encontrado este programa en el forum de arduino y me funciona bien pero quiero que el sensor cny70 solo cuente las vueltas un cierto tiempo 5 0 10 seg.
alguien me puede echar una mano porfa!!!!!!
Aqui esta el codigo

boolean estado = false;
int counter = 0;
int pinCNY70 = 3;

void setup()
{
pinMode(pinCNY70, INPUT);
Serial.begin(9600);
}

void loop()
{
if(digitalRead(pinCNY70))
{
if(!estado)
{
estado = TRUE;
counter++;
Serial.println(counter);
}
}
else
{
estado = FALSE;
}
}

This might be useful (but I'm not entirely sure what you're doing, I don't know much spanish - but digitalRead() is probably not right.):

http://forum.arduino.cc/index.php?topic=101156.0

Also, this is an english forum - I think we have sections for other languages.

En el propio ide tienes un ejemplo llamado blinkwithoutdelay que es la base para hacer lo que quieres. Si lo entiendes, no deberías tener problemas para aplicarlo a tu código:

#define TIEMPOCUENTA 5000UL
boolean estado = false;
int counter = 0;
int pinCNY70 = 3;

void setup()
{
	pinMode(pinCNY70, INPUT);
	Serial.begin(9600);
}

void loop()
{
	unsigned long millisInicio=millis();
	do {
		if (digitalRead(pinCNY70))
		{
			if (!estado)
			{
				estado = true;
				counter++;
			}
		}
		else
		{
			estado = false;
		}
	} while ((millis() - millisInicio) < TIEMPOCUENTA);
	Serial.println(counter);
}

juni9876:
Hola
he encontrado este programa en el forum de arduino y me funciona bien pero quiero que el sensor cny70 solo cuente las vueltas un cierto tiempo 5 0 10 seg.
alguien me puede echar una mano porfa!!!!!!
Aqui esta el codigo

boolean estado = false;
int counter = 0;
int pinCNY70 = 3;

void setup()
{
pinMode(pinCNY70, INPUT);
Serial.begin(9600);
}

void loop()
{
if(digitalRead(pinCNY70))
{
if(!estado)
{
estado = TRUE;
counter++;
Serial.println(counter);
}
}
else
{
estado = FALSE;
}
}

gracias voy a ver si funciona

Solo por preguntar, que sentido tiene contar durante 5 segundos? o 10 seg?
Para contar vueltas el programa no esta convertiendo cuentas en RPM o tienes un disco con 60 orificios?

para saber el tiempo que funciona el cny70 y asi luego pasar las vueltas a rpm

Debes contar pulsos por segundo (normalmente ese el tiempo que se usa), no cada 5,10,15... no existe la acumulación porque no deberías promediarlo.
Si quieres mejorar la lectura se mejora el elemento que genera los pulsos, sea una rueda dentada si usas un sensor de efecto hall o mas orificios si usas un enconder con 60 orificios por decir una cantidad que directamente te da las RPM.

Nada te prohibe medir en 5 segundos, te lo aclaro. Solo te comento que hace un instrumento que mide RPM.
Jamas tienen una ventana de 5 seg.

ok gracias

Pero yo lo que quiero hacer es el cny70 solo detecte las linias blancas que iran pegadas sobre un cd y cada vez que haga eso arduino cuente. PEro no lo acabo de conseguir.Este programa me cuenta las veces que detecta algo el cny70 y no lo blanco. Ayuda porfa!!

Primero resuelve lo que el cny70 lee y no al revés.
El CNY70 es un sensor reflexivo, obviamente refleja sobre el CD y no sobre lo blanco asi que ponte a resolver eso, porque estarás dando vueltas todo el tiempo sobre lo mismo.
CD opaco, y láminas tipo aluminio o papel de aluminio (es lo que se me ocurre ahora) o algun elemento que actúe como espejo.

Eso ya lo suponia y por eso le puse cinta negra en todo el CD y luego una linia de cinta blanca. Lo que me falta es las vueltas qe cuenta las pase a rpm y la funcion millis no lo acabo de entender muy bien.

Cinta blanca no. Probaste si la cinta blanca refleja, si lo hace supongo que será algo errática.
Prueba con papel de aluminio o el envoltorio de los cigarrillos (espero que no fumes) u otra cosa que use papel de alumunio.

surbyte:
Cinta blanca no. Probaste si la cinta blanca refleja, si lo hace supongo que será algo errática.
Prueba con papel de aluminio o el envoltorio de los cigarrillos (espero que no fumes) u otra cosa que use papel de alumunio.

Nunca has usado un CNY70? la cinta blanca refleja perfectamente, depende que resistencias pongas te refleja hasta la cinta negra si no es mate

Vamos por pasos.
Primero me dice que reflejaba sobre el CD y no habló de la cinta negra hasta que le dije que revisara el problema en el CNY.

Este programa me cuenta las veces que detecta algo el cny70 y no lo blanco. Ayuda porfa!!

Entonces me dice que tiene cinta blanca y negra. Pero por lo anterior yo deduzco que no refleja en lo blanco y que lo hace en el CD en algun punto sin buena cobertura.

Yo cuando lo he hecho nunca usé cinta blanca y si fuera un CD, dejo sin tapar la zona que quiero que refleje que ya es reflectante y el resto pongo algo que no refleje como un papel negro pegado con muchos orificios con un sacabocados como el que se usa para agujerear las hojas de papel.

Me manejo con lo que creo mas seguro.