Proyecto Monedero

Hola a todos, ante todo presentarme y dar las gracias por vuestra labor. me decico a reparacion de maquinas recreativas y para comprobar los monederos tengo un invento muy simple que construí hace años en cual va solo con led, si el monedero esta correcto al meterle una moneda me enciende unos led y si le meto otra moneda me enciende otros, por ejemplo MAQUINAS TIPO A MONEDA LED 0.05 3-4-8 0.10 3-7 0.02 3-4-7 0.50 3-7-8 1€ 3-4-7-8 2€ 3-9

MAQUINAS TIPO B MONEDA LED 0.05 3-4 0.10 5 0.02 4-5 0.50 3-7 1€ 4-7 2€ 3-5-7 Deciros que dichas salidas de monedero son por 1 segundo y el led se enciende. Cada salida es un cable distinto con el mismo positivo en comun. Me he iniciado en el tema de arduino y me gustaría hacer este aparato para ver datos en display, es decir que al meter una moneda me indique que salida usa y que valor tiene la moneda. He realizado un esquema con las conexiones de entradas y de salida ( creo están bien ) Lo que no se es como hacer dicha programación ya que he trasteado con algunas cosas pero con esto no me acabo de enterar... Bueno a ver si alguien me orienta un poco. Gracias

subo el diagrama , no se si estara correcto

|500x386

Revisa este foro Español, hay al menos 2 temas muy parecidos a tu proyecto

Llevo todo el dia buscando por el foro pero no veo nada por el estilo

1ro no puede ser todo el dia porque acabo de mover tu hilo. (1 hora desde que lo moví!!)

2do no has buscado bien porque en 2 seg mira: https://forum.arduino.cc/index.php?topic=453282.0

Busca simplemente Monedero arriba derecha Hay muchos resultados posibles.

Antes de poner mi post estuve buscando .... De todas formas el post que me indicas no tiene nada que ver con lo que intento hace , en el otro post habla de simular un monedero y yo lo que intento hacer es trasladar datos del monedero al arduino y me los refleje en un display.

Bueno pero lo que quieres es controlar los leds?

Eso es controlar los Led y reflejarlo en display

Y cual es el contacto que detecta que introdujiste una moneda? En uno de los casos qeu creo haberte pasado y sino se trata de otro que no has visto, alguien tenia un cable plano con monedas por un lado y billetes por otro. Enviaba pulsos durante 100mseg y debíamos contarlos. Bueno, ese era el que yo queria que vieras.

Esos pulsos entraban al arduino y incrementabamos un contador. Aca tu quieres comandar los leds. En lugar de 100mseg, hablas de 1 seg.

Estoy en lo correcto? porque eso no se ve en tu esquema o le falta al lado izquierdo indicar que son entradas?

Bueno os cuento ya tengo bastante avanzado el tema , no me sirven los post que me comentas por qué esos son monederos que salen pulsos por un mismo pin , ósea si metes una moneda de 10 ctm da un pulso , si metes una de 20 da 2 y así sucesivamente los va multiplicando, yo lo que digo es otro tipo de monedero que cada moneda sale por distintas salidas: 5ctm salen por sus salidas y las demás igual , ojo algunas salidas pueden ser usadas por varias monedas ..... por ejemplo 1€ sale por la 3,4,7,8 2€ sale por la 9 0,50 sale por la 3 y 7 Como veis cada una tiene sus salidas y algunas se comparten. Dicho todo este rollo , ya lo tengo listo y me encienden los led a la perfección, pero ahora quiero que se me refleje en el display y que me diga 2 cosas, una que salidas usa la moneda introducida y a la misma vez el valor de dicha moneda. Que esto último no sé cómo hacer para que use las distintas combinaciones....

Esta bien pero sigues tu sin comprender o esto es un simulador?

No veo en nada de lo que expones ENTRADAS, entonces tu estas haciendo un simulador con los leds para luego probar tus monederos?

Esto es un probador eso es, las entradas van en el conector que está en La foto a la izda al lado de la pila, este conector es el del monedero

Edito el post por que me he dado cuenta que me va a ser innecesario poner led ya que el display me va a decir que salidas usa. ahora tengo un problema que es que cuando introducto una moneda me escribe solo una salida , no se como hacer para que en el dsisplay salgan todas, es decir si meto una moneda y sale por la salida 2 y 3, me escriba SALIDAS 2 3.....

#include 
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int inputPin3 = 41; // ENTRADA MONEDA ( TABACO 0.05, 0.10, 0.20, 0.50, 1€ Y 2€ ) ( TIPO B 0.05, 0.50 Y 2€ )
int inputPin4 = 43; // ENTRADA MONEDA ( TABACO 0.05, 0.20, 1€ Y FICHA ) ( TIPO B 0.05, 0.20, Y 1€ )
int inputPin5 = 45; // ENTRADA MONEDA ( TABACO FICHA ) ( TIPO B 0.10, 0.20, Y 2€ )
int inputPin7 = 47; // ENTRADA MONEDA ( TABACO 0.10, 0.20, 0.50, y 1€ ) ( TIPO B NADA )
int inputPin8 = 49; // ENTRADA MONEDA ( TABACO 0.05, 0.50 y 1€ ) ( TIPO B NADA )
int inputPin9 = 51; // ENTRADA MONEDA ( TABACO 2€) ( TIPO B NADA )
int inputPin10 = 53; // ENTRADA MONEDA Aun no tiene nada, 

void setup() 
   {
       lcd.begin(16, 2);           // Fijamos el numero de caracteres y filas
       lcd.clear();
       lcd.print("    PROBADOR ");  // Aqui va la primera linea con mensaje en espera
       lcd.setCursor(0, 1);    // Ponte en la linea de abajo 1, posicion 5
       lcd.print("   DE MONEDAS "); // Aqui va la segunda linea con mensaje en espera
       delay(2000);
       lcd.clear();

pinMode(inputPin3, INPUT);            // Decimos que la salida 3 del monedero 
pinMode(inputPin4, INPUT);            // Decimos que la salida 4 del monedero  
pinMode(inputPin5, INPUT);            // Decimos que la salida 5 del monedero 
pinMode(inputPin7, INPUT);            // Decimos que la salida 7 del monedero 
pinMode(inputPin8, INPUT);            // Decimos que la salida 8 del monedero 
pinMode(inputPin9, INPUT);            // Decimos que la salida 9 del monedero 
pinMode(inputPin10, INPUT);           // Decimos que la salida 10 del monedero
  
   }

void loop()
{

   while( digitalRead(inputPin3) == LOW ) //salida 3
  {
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS 3      ");     // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000);
  }
   while( digitalRead(inputPin4) == LOW ) //salida 4
  {
    
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS  4    ");      // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000); 
  }
   while( digitalRead(inputPin5) == LOW ) //Salida 5
  {
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS   5     ");    // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000);
  }
   while( digitalRead(inputPin7) == LOW ) //salida 7
  {
    
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS    7   ");     // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000); 
  }
   while( digitalRead(inputPin8) == LOW ) //Salida 8
  {
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS     8  ");     // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000);
  }
   while( digitalRead(inputPin9) == LOW ) //Salida 9
  {
    
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS      9 ");     // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000); 
  }
   while( digitalRead(inputPin10) == LOW ) //Salida 10
  {
    
    lcd.setCursor(0, 0);               // Ponte en la linea de arriba 0, posicion 0
    lcd.print(" SALIDAS       10  ");  // Aqui va el numero de salida del monedero
    lcd.setCursor(0, 1);               // Ponte en la linea de abajo 1, posicion 0
    lcd.print("    VALOR ");           // Aqui va la segunda linea con mensaje del valor de la moneda
    delay(1000); 
  }
  
}

Bueno. Confieso que hasta ahora no había entendido nada de lo que estabas intentando hacer. Ahora he releído tu primer post, y la parte en la que hablas de una máquina para COMPROBAR monederos, no un monedero en sí. Antes de empezar a ayudarte, para intentar simplificar el código lo máximo posible, me gustaría que me dijeras cuántos leds tiene la máquina comprobadora y qué funciones tienen los que no usas aquí (1, 2 y 6, si no me equivoco).

Vigila con las salidas de J1 ,si son a 12v no las puedes meter directamente a las entradas de arduino…

Gracias , te cuento El 1 es 12v 2 y 6 gnd Cada salida sale por gnd más su salida, no sé si me explico bien. Gnd usa en común el Arduino y el monedero A parte de esto en el último post suprimo los de los led pero que lo veo que no tiene para esto mucho sentido encender un led y que al mismo tiempo en el lcd me diga que salida es, solo con indicarme en el lcd que salida es me vale

La j1 del monedero va con fuente de alimentación a parte

Tendras que intercalar algo entre el conector J1 y las entradas del arduino que funcionan con 5v.Suponiendo que ese conector J1 esta en el monedero de la maquina que quieres verificar,y que esta alimentado por la propia fuente de la maquina ,quizas lo mas adecuado serian optoacopladores.Tal vez pudieras hacerlo con divisores de tension,los mas expertos en electronica te diran si en esas condiciones es lo mas adecuado.Si aun no has comprado el lcd ,te recomiendo uno para conexion I2C ,ahorraras cableado ,aunque veo que usas un mega y vas sobrado de pines.

Mejor que divisores sería usar optoacopladores. Y garantizas 0 problemas entre entrada y salida.

Algo asi solo para entender la idea

|500x236

los 12V de tu salida monedero solo accionan los leds del optoacoplador. Digamos a 10mA o menos por led. Algo que debe poder entregar asi que una R de 120 ohms para 10 o mas para tener menos corriente irá bien.

Del lado del transistor optoacoplado una R de 4k7 o 10k y de la salida olvida el esquema que es para un PIC y es lo mismo para Arduino, a tus entradas

Eso lo repites por cada entrada.