Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

04/11/2011 #1


PIC 24FJ64GA008 contador y trabajar con variables
Hola a todos, Estoy haciendo un proyecto con un PIC24FJ64GA008, y lo que quiero hacer es que mediante dos sensores infrarrojos, al pasar un objeto por el primer sensor, el pic empiece a contar y al pasar por el segundo sensor deje de contar. El tiempo quiero almacenarlo en una varaible porque necesito multiplicarlo por 2 y mostarlo por un display o lcd, eso me da igual.

Les muestro lo que llevo hecho, el contador empieza a contar , pero luego no soy capaz de que pare, ademas me gustaria saber como hacer que el contador vaya mas rapido,(para tener mas precision) porque el Pic tiene un reloj de 40Mhz.

Espero que me puedan ayudar lo antes posible.
Gracias
08/11/2011 #2


Nadie???, venga por favor algo de ayuda!!!!
08/11/2011 #3

Avatar de arrivaellobo

Hola zerek, el contador no para, porque no hay ninguna condición que le saque del bucle For.
Para simularlo, deberías colocar dos interruptores en algún puerto libre, éstos emularán los sensores infrarrojos.
Debes programarlo de tal manera que al activarse el primer sensor, entre al bucle For, y dentro del bucle, leer continuamente el segundo sensor, y en caso de activarse, puedes usar la instrucción break; para salir del For, y parar de contar.

Un saludo
08/11/2011 #4


ah!!, vale, lo del break no lo sabia, por eso no podia parar el bucle for.jeje

Voy a probar y te cuento.

Gracias.
08/11/2011 #5

Avatar de arrivaellobo

Ahora mismo te estoy modificando el circuito y el código para que veas cómo lo haría yo, a ver quien lo hace antes! jajaja
08/11/2011 #6


jajaj ok, intentaré hacerlo yo antes......

Otra pregunta, como hago para que el contador vaya mas deprisa??? Es decir para que sea mas preciso, que tenga mas decimales. Porque yo lo que quiero es que me cuente desde que se activa el primer sensor hasta que se activa el segundo, y ese tiempo guardarlo en una variable para poder trabajar con ella.... Es decir multiplicarla, dividirla......con enteros, y el resultado después de operar, mostarlo por LCD.
Espero que me haya explicado bien, es que tengo un poco de jaleo en la cebeza, jeje
08/11/2011 #7


Hola arrivaellobo, lo has conseguido hacer??, yo es que lo de la interrupcion aun no me sale.
A ver si me puedes enseñar como lo harias tu, mas que nada para tener algun proyecto como base y poder desarrollar el mio.
Espero tus noticias
Un saludo
08/11/2011 #8

Avatar de arrivaellobo

Hoy estoy generoso, y he montado el circuito en Proteus, y he hecho el código, todo nuevo. Sólo que he usado el 16F877, ya que el 24 "no se qué" que tenías se me quedaba demasiado grande... jajaja
Tiene los dos sensores que necesitas, inicio y de final. Muestra el tiempo en milisegundos en una LCD, pero no es totalmente exacto el contador, ya que para eso, me imagino que habría que usar los Timer, cosa que todavía desconozco.
Seguramente mi código y diseño se pueden mejorar de mil maneras y hacerlos más eficientes, pero con mis conocimientos es lo que he podido hacer.
Archivos Adjuntos
Tipo de Archivo: rar Contador sensores.rar (44,8 KB (Kilobytes), 12 visitas)
08/11/2011 #9


Puf!!!! es INCREIBLE!!!! y que poquito codigo has necesitado, muchisimas gracias por tu aportacion, me viene genial, tendré que cambiar cosas pero como base me viene perfecto........
Cuando lo modifique, lo subiré aqui para que me digas que te parece y en lo que puedo mejor y eso...
Gracias y un saludo.
08/11/2011 #10

Avatar de arrivaellobo

Me alegro de que te haya servido, de verdad.
Estaré atento al post, esperando tu modificación.

Un saludo
08/11/2011 #11


una pregunta mas que he visto al ejecutar paso a paso tu codigo, el contador no va incrementado una unidad, como puedo hacer para que vaya sumando 1 en cada ciclo???
08/11/2011 #12

Avatar de arrivaellobo

No te entiendo..
La variable "tiempo" si se incrementa de 1 en 1, con cada pasada del bucle for.
08/11/2011 #13


pues que yo al ejecutar paso a paso el programa, el LCD no me muestra 1,2,3,4,5,6........sino que me muestra 1,15,30,45,..........no se si me explico......., (los numeros me los he iventado yo)
y otra cosa, lo que muestra el LCD son milisegundos "reales", los puedo usar como cronometro??
gracias.
08/11/2011 #14

Avatar de arrivaellobo

El problema es probable a que se deba porque los LCD tardan un tiempo en escribir, y volver a estar operativos, por lo que aunque el microcontrolador le envíe más datos, el display no puede con todos, y se salta algunos.
Ya dije más arriba que no es un contador exacto, ya que para ello habrá que usar los Timer. Esto sirve como referencia nada más, ya que si lo usas como cronómetro, no te dará medidas exactas.

Un saludo
08/11/2011 #15


ah vale, aclarado entonces, de todas formas me viene fenomenal como base sobre la que trabajar.
Por ahora es todo, si tengo alguna duda mas, la ire poniendo aqui.
Gracias por tu ayuda.
Un saludo.

Una pregunta mas, ese tiempo que muestro por LCD, lo puedo guardar en una variable, para trabajar con ella???
08/11/2011 #16

Avatar de arrivaellobo

Ese tiempo, esta ya guardado en la variable "tiempo" jajaja
Te recomiendo leer algún tutorial de programación de aquí del foro, hay alguno muy bueno que a mi me está ayudando bastante.

Un saludo
09/11/2011 #17


Por favor, dime que totorial de programacion consideras bueno , para empezar, ya que estoy ansioso, jejej
Gracias
09/11/2011 #18

Avatar de arrivaellobo

Pues mira, usando lo mínimo el buscador he encontrado ésto, pero seguro que hay muchas mas cosas, y casi todas las dudas que te surjan estarán ya solucionadas en algún rincón del foro.

Un saludo
23/11/2011 #19


Hola otra vez, tengo una duda nueva:
Me gustaria hacer dos contadores independientes, habia pensado en dos bucles for, y cada uno dentro lo unico que hace es incrementar las variables tiempo1 y tiempo2, para contar el tiempo.
El proble es que,me gustaria que esos bucles se ejecutara a la vez, ¿hay alguna forma de hacerlo?, no primero un bucle y luego el otro, sino los dos a la vez.
Gracias.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.