Monte el esquematico y probe usando un par de pushbuttons en lugar de los sensores y el monitor serial; coloco una imagen de como lo monté:
Esta dificil ver si funciona correctamente con los pushbuttons (tienen mucho rebote o "ruido" electronico y afectan en las lecturas) o no, pero debe hacerlo ya que responde con "algo" en el monitor serial, aunque me parece bastante incoherente lo que envia pero repito, debe ser por el rebote de los botones
Luego de ver que se veía algo incoherente lo que arroja, le meti mano al codigo y se vio algo mejor, aunque le faltaria agregarle saltos de linea al monitor serial para que se vea mejor; coloco una captura de pantalla de como se vio al final:
REX_007...
Antes no le habia puesto mucha atencion pero ahora al montarlo, cargarlo y todo eso, me surgeron algunas dudas; aqui van:
1. En tus variables:
int led1 = 12;
int led2 = 13;
Esos pines son para los LED infra rojos ¿verdad?, ¿entoces te falto conectarlos en el esquematicos o esas variables son para los sensores y deberia ser:
int led1 = 2;
int led2 = 3;
?
2. Cambié la sintaxis de "attachInterrupt" (ya que segun la ayuda de Arduino puede dar problema cuando se usa en tarjetas diferentes) de esto:
attachInterrupt(0, front, CHANGE)
attachInterrupt(1, rear, CHANGE)
A esto:
attachInterrupt(digitalPinToInterrupt(2), front, CHANGE);
attachInterrupt(digitalPinToInterrupt(3), rear, CHANGE);
3. En el Loop te falto mostrar el resultado en m/s cuando se usa el display LCD.
4. Aqui:
#define Sec 1000000 // Constante para dividir entre segundos y no en micro segundos, ya que la función milis, arroja la medición en us
Mencionas la funcion milis() y en realidad usas micros(); todo esta bien, solo que confunde la mencion que haces de milis ya cuando ves el codigo.
Por cierto, ¿no seria mejor usar milis() en lugar de micros()?; de nuevo, la ayuda de Arduino menciona que micros() tiende a fallar luego de los primeros microsegundos con la funcion "attachInterrupt"; a menos que le haya entendido mal
Definitivamente se necesita hacer pruebas ya con los sensores y ver si lo que resulta es o no coherente o lo esperado; pero en general, parece que pinta bien si acaso algunos toques aqui y alla (yo lo haria con el display LCD) meramente esteticos
Salu2
Monte el esquematico y probe usando un par de pushbuttons en lugar de los sensores y el monitor serial; coloco una imagen de como lo monté:
Esta dificil ver si funciona correctamente con los pushbuttons (tienen mucho rebote o "ruido" electronico y afectan en las lecturas) o no, pero debe hacerlo ya que responde con "algo" en el monitor serial, aunque me parece bastante incoherente lo que envia pero repito, debe ser por el rebote de los botones
Luego de ver que se veía algo incoherente lo que arroja, le meti mano al codigo y se vio algo mejor, aunque le faltaria agregarle saltos de linea al monitor serial para que se vea mejor; coloco una captura de pantalla de como se vio al final:
REX_007...
Antes no le habia puesto mucha atencion pero ahora al montarlo, cargarlo y todo eso, me surgeron algunas dudas; aqui van:
1. En tus variables:
int led1 = 12;
int led2 = 13;
Esos pines son para los LED infra rojos ¿verdad?, ¿entoces te falto conectarlos en el esquematicos o esas variables son para los sensores y deberia ser:
int led1 = 2;
int led2 = 3;
?
2. Cambié la sintaxis de "attachInterrupt" (ya que segun la ayuda de Arduino puede dar problema cuando se usa en tarjetas diferentes) de esto:
attachInterrupt(0, front, CHANGE)
attachInterrupt(1, rear, CHANGE)
A esto:
attachInterrupt(digitalPinToInterrupt(2), front, CHANGE);
attachInterrupt(digitalPinToInterrupt(3), rear, CHANGE);
3. En el Loop te falto mostrar el resultado en m/s cuando se usa el display LCD.
4. Aqui:
#define Sec 1000000 // Constante para dividir entre segundos y no en micro segundos, ya que la función milis, arroja la medición en us
Mencionas la funcion milis() y en realidad usas micros(); todo esta bien, solo que confunde la mencion que haces de milis ya cuando ves el codigo.
Por cierto, ¿no seria mejor usar milis() en lugar de micros()?; de nuevo, la ayuda de Arduino menciona que micros() tiende a fallar luego de los primeros microsegundos con la funcion "attachInterrupt"; a menos que le haya entendido mal
Definitivamente se necesita hacer pruebas ya con los sensores y ver si lo que resulta es o no coherente o lo esperado; pero en general, parece que pinta bien si acaso algunos toques aqui y alla (yo lo haria con el display LCD) meramente esteticos
Salu2
Saludos Vaquero...
Hacia rato que no lo leía +1
Por cierto, si pude compilarlo pero a la hora de querer subirlo a mi arduino este no hace nada, no tengo los sensores (obvio), pero no se si deberia de aparecer algo en la pantalla. Mi arduino tiene I2C
Yo nomás entré a ver si aprendía algo, pero.......Es demasiada tecnología para éste apache :animlol:
y no pudieras pasarnos tu codigo modificado? estoy apenas un pasito adelante de Archer, apenas le intelijo un poquito a esto
Por cierto, si pude compilarlo pero a la hora de querer subirlo a mi arduino este no hace nada, no tengo los sensores (obvio), pero no se si deberia de aparecer algo en la pantalla. Mi arduino tiene I2C
<<1.
No, de hecho son salidas a los LEDs que vienen montados a la tarjeta Arduino, solo con fines de que veas cuando detectó el paso del proyectil por los sensores.
<<2.
Cualquiera de las dos opciones funciona, lo que hiciste es lo mismo, ya que la tarjeta Arduino Uno, entiende que si solo pones 0 & 1 en la función interrupt, serán interrupciones por hardware.
<<3.
Se lo quité porque me interesaba más conocer la energía (FPE) en el software básico, y la lectura de m/s no cabía en el LCD 16x2 jajaja por eso mejor no lo imprimí y lo dejé para monitor serial.
<<4.
Ahí fué error de redacción jejejeje.En efecto es la función micros() la que uso... lo de si funciona mal o no, eso tenemos que probarlo ya con el hardware completo, a ciencia cierta no podemos suponer que va salir mal si no tenemos un patrón para comparar y calibrar.
Considero que mejor pruebe con fototransistores e IR LEDs en el mismo proto o en un tubo para que pruebe.
Yo probé el software tal y como está con fototransistores y una pistola de airsoft; jaló sin problemas.
Creo que en la revisión 1, debo subir comentarios a las líneas de código para no dejar dudas y sea más claro para todos.
Por cierto, no se alcanza a ver su captura ¿Qué fué lo que le modificó?
Saludos!
saludos.
si pues ya vez que el foro estubo un tiempo acaparado por dos tipejos que solo se la pasaban hablando de mendoza y terminaron insultandome y culpandome de sus frustraciones, te acuerdas. por eso me aleje un tiempo.
¡No pasa nada! todos aqui estamos para aprender algo, ¿que no?
Claro kimoleto...
Lo subo aqui mismo en esta respuesta como un archivo TXT, solo hay que copiar y pegar el contenido en un sketch nuevo de arduino y ya.
ADVERTENCIAS:
1. Yo me esperaria a ver los resultados de REX_007, él es el mas indicado para hacer alguna modificacion de forma segun como le resulte el proyecto; el resto es solo cambios de "estetica" ; casi casi no le hagan mucho caso
2. En este TXT le deshabilite (comentado = doble diagonal) todo lo del display LCD, si lo cargan asi como esta solo se veran los resultados en el monitor serial.
Aunque no tenga los sesores deberia mostrar esta parte:
Cronografo
Iniciando...
¡Dispara!
¿Como es eso que el arduino tiene I2C; es que lo tiene conectado a un display via una interfaz I2C? si es asi, si deberia mostrar algo la pantalla
Los Arduino solo traen integrado un LED que puede uno encender y apagar, creo que es el pin3, es el que se usa en el famoso "Hola Mundo" de "Blink" ¿no?.
Supuse que eran para ver el paso del diabolo pero que falto conectarlos en el esquematico, de hecho parecen funcionar asi ya al probarlo. Ahi fue donde note que hace cosas "raras" a veces prenden ambos juntos, a veces primero el segundo, etc etc, yo creo que es por el rebote de los pushbuttons. Como sea, nada como tener al desarrollador aqui
Los dos LED que se ven conectados en el esquematico estan siempre encendidos ¿cierto?, ¿esos son los Infra Rojos?, ¿asi van, siempre encendidos?
Totalmente de acuerdo; solo que la ayuda de Arduino marca esa sintaxis como "No recomendada", dejo el enlace por cualquier cosa:
Arduino Reference
Solo la sintaxis que mencionaba y separe las instrucciones del display y serial; se me hizo mas facil asi incluso para habilitar o deshabilitar una u otra... manias mias por ver ambas asi "revueltas" jejejeje
Subo un TXT con el codigo como lo cambie.
Salu2
Cualquier duda compañero, estamos para apoyarnos en esta comunidad airgunera, usted no se agüite [emoji3]Yo nomás entré a ver si aprendía algo, pero.......Es demasiada tecnología para éste apache :animlol:
Compa Dux, así es, son el pin13 del clásico ejemplo del blink, pero también se puede usar el pin 12. El pin13 es el de arriba y pin12 es el LED de RX. Esto para no agregar más LEDs y no forzar el regulador de nuestra tarjeta con más elementos extra.
Es correcto, siempre deben ir energizados [emoji6][emoji106] para que el haz de luz sea cortado por el diábolo, por eso mandé hacer esa extensión con tan solo 10 mm de diámetro, para que se garantice que el diábolo obstruya la luz infrarroja que va dar al fotodiodo, ya que dejará un espacio de 1.825 mm de cada lado el diábolo y sin problemas, su sombra va obstruir los barrenos de 3 mm.
Saludos!
Jajaja la verdad tiene razón, mejor nos centramos en los resultados del proyecto, de cualquier forma yo estaba pensando quitar esos LEDs, de todas maneras como metí mi tarjeta en la caja que subí en la foto ni voy a poder verlos [emoji23], además ya me cercioré de que si funciona, sólo falta la prueba de fuego... que nervios [emoji51]Mejor ya no nos metamos en asuntos de carcateristicas de Arduino jejejeje ni vale la pena en este caso
Segun yo, el LED de arriba es el del Blink; los otros dos son el de Transmision (TX) y Recepcion (Rx) de la comunicacion serial y en esos uno no puede hacer nada para que prendan o apaguen a nuestra voluntad... como digo, dejemos eso de lado que ni vale la pena +1
Ok... gracias, entonces no queda mas que esperar las pruebas
En mi caso eso sera dentro de 2 meses que me llegue el display , hasta entonces podre meterle mano para dejarlo esteticamente a mi gusto
Salu2
No recibi respuesta ni de la tienda aqui en >Zapopan ni de el vendedor en Inglaterra, seguimos esperando.
No me fije y me conteste solo, parece que su codigo esta escriyto para el arduino "normal" al mio le puse el I2c y por eso no veo nada aunque si lo carga
No recibi respuesta ni de la tienda aqui en >Zapopan ni de el vendedor en Inglaterra, seguimos esperando.
No me fije y me conteste solo, parece que su codigo esta escriyto para el arduino "normal" al mio le puse el I2c y por eso no veo nada aunque si lo carga
Volvi a leer el proyecto y me surgieron un par de dudas:
1.
Tengo la duda sobre como funcionan los sensores OPL550A; revise el datasheet y quede igual
Cuando ya estan energizados y con los LED infrarojos encendidos, al pasar el diabolo sensan la sombra que provoca el diabolo al atravezar la luz del LED, ¿correcto?.
La duda: ¿Cuando eso ocurre, el sensor envia la señal por su pin de salida (2 o 3) o siempre esta enviando la señal y al sensar la sombra se corta la señal?; es decir, ¿funcionan como normalmente abiertos o normalmente cerrados?
2.
Segun veo el esquematico, los LED infrarojos, los sensores OPL550A y en caso de usarse, el display 1602; estan conectados al Arduino a la salida de 5 volts.
Los LED infrarrojo menciona que llevarian una resistencia de 220ohms c/u, el display otras 3 de 330ohm (creo que no son necesarias) y los sensores van directo sin pasar por resistencias.
La duda es: ¿Va poder el Arduino con toda esa corriente que se le pide?
En un calculo rapido segun yo, la corriente para los 2x LEDs IR seria de unos 45.5mA, mas la corriente para los 2x sensores ( creo que deben andar entre 8mA y 15mA) de unos 20mA... ya van unos 65mA sin contar el display.
Segun yo el arduino solo puede con 40mA, o 50mA no recuerdo bien; asi que creo que se va freir ¿no?
Salu2
Del sensor tampoco estoy seguro jajaja, pero no me preocupa, ya que la interrupción está a la espera de un cambio (CHANGE), así que si me llegan primero, armo el circuito y les cuento que es lo que hace.
Las resistencias se las puedes quitar, las puse para un contraste y luz cómodas para mi vista y para no usar POT.
Según leí, si alimentas Arduino con el cable USB, lo máximo que te va dar son 500 mA, pero si alimentas con 7 V en el jack, lo máximo es hasta 1 A, sólo que no encuentro la fuente donde lo leí. Probé el circuito con 10 LED's infrarrojos y el regulador se puso tibio, creo que con esos pocos LEDs de esta configuración va poder el Arduino sin problemas, ya que esos 40 mA que comentas, los da por salida de pin.
P.D. Tengo un software en fase Beta con una máquina de estados. Hasta el momento llevo solamente el cambiar el parámetro del peso del diábolo para que lo muevan a su gusto, sólo que hay que montar 4 botones a nuestro proyecto. Lo pulo y se los comparto para que le encuentren fallos y mejorarlo. Me falta agregar la función para que nos arroje estadísticas (min, max, promedio, etc.
No p'ssss ni hablar, si que hace falta poder tener los componentes para salir de dudas
¿Maquina de estados finitos?.... Jejeje, de hecho mis dudas eran por eso, estuve probando con un programa desde cero (no le entiendo bien a como funciona el attachinterrupt y no he encontrado mas que la referencia de Arduino y el ejemplillo que ponen que no me aclara nada) haciendo pruebas solo con pushbuttons y me salio la duda de si los sensores son NA o NC; para luego partir de ese y meterle el display con "Menus"
Si esto caminara bien, yo incluso habia considerado desarrollar un PCB especifico para el proyecto, con un ATMEGA328P como StandAlone y el resto de componentes en un solo PCB, en lugar de un Arduino; y ahi se podria meter reguladores de voltaje y demas para sacar todas esas cargas del arduino... Pero bueno, por el momento solo posibilidades
Salu2
Su idea está genial, que si hubiera algún centro donde me maquinen la placa en mi pueblo, haría algo así para integrar todo; por lo pronto me tendré que conformar con Arduino [emoji28]
La verdad soy rewey programando jajaja, pero mañana subo mi avance para que le eche un ojo, ya que por lo que veo tiene usted práctica en esto y nos podría ser de mucha ayuda para terminar de agregar las funciones.
Saludos!