Go Down

Topic: Sensor Optico (Read 2963 times) previous topic - next topic

Hola,
estoy empezando con Arduino y voy perdido. a ver si alguien me puede ajudar:
necesito usar un sensor optico (V69 001 TCST 2103) que al detectar un algo encienda un Led.
Muchas gracias.

Gente he conseguido con este codigo:
int potPin = 0; //nombre se puede modificar = la salida del Arduion. edgar
int LedA1 = 13; //nombre se puede modificar = la salida del Arduion. edgar
int val = 0;    //nombre se puede modificar = la salida del Arduion. edgar
void setup() {
  pinMode (LedA1, OUTPUT); //crec q demano al pin 13 ara anomenat LedA1 que tregi energy.
}
void loop(){
  val = analogRead(potPin);
  digitalWrite(LedA1, HIGH);
  delay(val);
  digitalWrite(LedA1, LOW);
  delay(val);
}

.....
Y con este codigo he conseguido qe funcione el sensor optico con el Led pero: el led me hace intermitente y al poner el dedo en el sensor hace mas intermitente. Como puedo solucionar esto? lo que quiero es: Led encendido al 100% sensor Leds apagado.
Alguien sabe como decir eso a Arduino?

nayma

Que sensor es ese, un PIR?

Tengo dos diferentes:
V69 001 TCST2103
o
el
ONI 120 JAPAN 56

nayma

cuando pongo estas referencias en google no me sale nada, prueba a poner alguna referencia que nos pueda ayudar.

http://www.google.com/search?q=TCST2103&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:es-ES:official&client=firefox-a

http://www.cooking-hacks.com/index.php/shop/sensors/photo-interrupter-os25b10.html

nayma

Hola Edgar,
lo primero mirate el datasheet y sabras como hacer el montaje,
segundo:
  val = analogRead(potPin);
  digitalWrite(LedA1, HIGH);
  delay(val);
  digitalWrite(LedA1, LOW);
  delay(val);

Con este código lo que hace es leer el valor analógicamente, yo lo leería digitalmente porque este sensor te va a dar 1 o 0.
después entre cada HIGH y LOW solo va a pasar 0 o 1 milisegundos.
podrías poner un if , si el sensor te da un 1 que se encienda i si te da un cero que se apage, por ejemplo.

Igor R

Para que cojas ideas:
http://mckgyver.pbworks.com/w/page/20654133/Arduino_Tachometer

;)

Sabes mas de lo que puedo entender. lo de progrmar en If es lo que veo com mas para mi projecto pero no se hacerlo a dia de hoy. me puedes hacer una idea.
voy a intentar acer algo con tus ideas.
muchas gracias

He crado esto pero no funciona jejeeje
int potPin = 8;
int LedA1 = 13;
int val = 0;   


void setup() {
  pinMode (LedA1, OUTPUT);
}


void loop(){
  val = digitalRead(potPin);
  digitalWrite(LedA1, HIGH);
  delay(val);
  digitalWrite(LedA1, LOW);
  delay(val);
}

Alcafuz

Lo más simple que puedes hacer, si lo que intentas es que funcione como interruptor es usa uno de los ejemplos que vienen en el software de arduino, especificamente el ejemplo 'button', conecta en los pines correctos tus componentes y listo. Luego puedes usar también el 'StateChangeDetection'.

Pero a la vez deberías leer un poco en reference de la pagina arduino.cc, asi entiendes el codigo que usas.

Saludos.

xlopez

Hola Edgar,

El código que has puesto lo que hace es lo siguiente:
Lee el valor (analógico) de lo que haya conectado en la entrada pinpot.
Ese valor es un número entre 0 y 1023.
Luego enciende el led esa cantidad de milisegundos y lo mantiene apagado el mismo tiempo.

El problema es que el PIR que estás usando no es analógico sino digital. En función de como lo hayas conectado al Arduino te dará dos valores distintos según este bloqueado o no, por eso tienes dos velocidades de parpadeo diferente.

Tu no quieres eso, tu lo que quieres es usarlo para mantener encendido o apagado el led según esta el PIR.

Para eso tienes ya un ejemplo en el IDE del Arduino.
Utiliza el ejemplo de File > Examples > Digital > Button tal y como está.
Lo único que tienes que hacer es poner el PIR en el pin Ddigital 2 para que funcione, o cambiar en el sketch de ejemplo el pin que lee.

Go Up