Go Down

Topic: Proyecto Monedero (Read 3072 times) previous topic - next topic

noter

#30
Jan 20, 2018, 11:59 pm Last Edit: Jan 20, 2018, 11:59 pm by noter
No entiendo tu última respuesta. ¿Puedes detallar un poco más lo que ocurre?

TELO2254

EL 3 sigue sin salir y al quitar la pausa se queda el lcd dando salidas en blanco hasta que meto moneda que da las salidas correctas menos el 3 que no lo da y abajo simpre pone un valor, lo de abajo como me has dicho antes ya lo veremos pero la 3 no sale nunca, a menos que meta muchas veces la misma moneda que rara vez si lo da

surbyte

No te preocupes pero te das cuenta que no estamos en tu cabeza asi que de haber leído bien las normas, hubieras entendido lo importante que es explicar bien toda la idea y su contexto pero bueno ya se comprende.

Tenemos un monedero alimentado x 12V que realmente a nosotros no nos importa ( a ti si claro). Las salidas a probar/detectar entregan tensiones de entre 2 a 3V.
Necesitamos que se visualicen en un LCD.
El código hecho por noter seguramente funciona bien.

Esto

Code: [Select]
struct {
      byte numeroLed;
      int pin;
} leds [] = {
      {3, 41}, {4, 43}, {5, 45}, {7, 47}, {8, 49}, {9, 51}, {10, 53}
};


es una estructura que contiene el número de Led y el Pin con el que se detecta.
numeroLed Pin
 3 41
 4 43
 5 45
 7 47
 8 49
 9 51
10 53

Esa estructura se identifica por led y cuenta con dos valores i,j

que van de 0 al máximo
entonces el leds[0][0] = 3 y en cambio leds[0][1] = 41
para terminar
leds[6][0] = 10
leds[6][1] = 53

eso para que entiendas mejor como funciona la estructura.


 

TELO2254

se que empece mal explicando, y ya me disculpe y vuelvo a hacerlo....
mas o menos entiendo lo que me dices pero no acabo de entender por que el 3 no llega a salir, y si quito todas las entradas menos esa ( 3 ) si que funciona sola......
espero explicarme bien

noter

Pues te comento, pero primero una pregunta: ¿Cuánto tiempo permanecen los led activados tras detectar una moneda?
Creo que el código funciona correctamente. Hace un barrido de los pines de entrada y los anota en valor. Pensé que tal vez lo que ocurría era que cuando se producía el cambio era a mitad de barrido, y por lo tanto sólo se anotaban los cambios en los pines posteriores del barrido. Al estar la pausa de un segundo, se estaría mostrando, por tanto, el valor erróneo durante todo ese segundo. Sin embargo, al quitar la pausa, aunque puede producirse ese mismo error en la primera lectura, inmediatamente se hace otro barrido que debería leer los valores correctos.
Me decanto a pensar que puede ser entonces problema hardware. Máxime si estás trabajando con voltajes en el límite de detección (entre 2V-3V no está bien definido el estado de una entrada. HIGH y LOW deberían estar por encima y debajo de esos valores). Además, en contra de la lógica "natural" estamos recibiendo lógica invertida. Aunque eso es fácil de solventar, como hemos visto, si lo has hecho así "sin querer" tal vez tu esquema de conexión no sea el correcto.
Intenta explicar un poco más detalladamente tu esquema de conexión y seguro que surbyte u otro forero (yo no, tristemente   :-[ ) te podrá asesorar en ello.

surbyte

Ya lo dije antes. si no usa un adaptador de nivel apropiado, eso no va a funcionar.

Go Up