Problema con contador de monedas con sensor cny7000

Soy nuevo en esto y estoy haciendo un organizador y contador de monedas usando arduino uno y sensores cny7000 este es el código, se supone que cada que el sensor lance números de 3 dígitos se va a contar la moneda dependiendo el valor que tiene y sumándolo con lo que ya había antes, lo que esta pasando es que como que detecta doble algunas veces o esta sumando de mas, me gustaría que me apoyaran con hacerlo un poco mas exacto y si es posible que el monitor serial solo imprimiera cuando detecte una moneda, gracias de antemano.

int banca=0;
 #define moneda1 A0
 #define moneda2 A5
 #define moneda5 A2
 #define moneda10 A4
void setup() {
  Serial.begin(9600); //Configuracion de la velocidad serial
  pinMode(moneda1, INPUT);
  pinMode(moneda2, INPUT);
  pinMode(moneda5, INPUT);
  pinMode(moneda10, INPUT);

}

void loop() {
  int moenda1=analogRead(A0);
  if(analogRead(A0) >= 100){
    banca++;


  }
int moneda2=analogRead(A5);
  if(analogRead(A5) >= 100){
    banca=banca+2;

  
  }
   int moneda5=analogRead(A2);
   if(analogRead(A2) >= 100){
    banca=banca+5; 
   
  }
   int moneda10=analogRead(A4);
  if(analogRead(A4) >= 100){
    banca=banca+10; 
   
  }

    Serial.print("Lectura: "); 
    Serial.println(banca);
    delay(1000);
}

A ver si esto funciona? No lo he probado de modo que si hay alguna variable que falta agrégala.

#include <Arduino.h>
int banca =0, bancaAnt = 0;
#define moneda1Pin  A0
#define moneda2Pin  A5
#define moneda5Pin  A2
#define moneda10Pin A4

int moneda1, moneda1Ant,
    moneda2, moneda2Ant,
    moneda5, moneda5Ant,
    moneda10, moneda10Ant;

void setup() {
  Serial.begin(9600); //Configuracion de la velocidad serial
  pinMode(moneda1, INPUT);
  pinMode(moneda2, INPUT);
  pinMode(moneda5, INPUT);
  pinMode(moneda10, INPUT);

}

void loop() {
  moneda1 = digitalRead(moneda1Pin);
  if (moneda1 && !moneda1Ant) {
      banca++;
  }
  moneda1Ant = moneda1;
  
  moneda2 = digitalRead(moneda2Pin);
  if (moneda2 && !moneda2Ant) {
      banca=banca+2;
  }
  moneda2Ant = moneda2;

  moneda5 = digitalRead(moneda5Pin);
  if (moneda5 && !moneda5Ant) {
      banca=banca+5; 
  }
  moneda5Ant = moneda5;

  moneda10 = digitalRead(moneda10Pin);
  if (moneda10 && !moneda10Ant) {
      banca=banca+10; 
  }

  moneda10Ant = moneda10;
  if (banca != bancaAnt) {
      Serial.print("Lectura: "); 
      Serial.println(banca);
  }
  bancaAnt = banca;
}
1 Like

Le cambie 3 cosas y funciona tal cual quería, en verdad muchas gracias!

Excelente!!

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.