Coin acceptor CH-923


#1

Bom dia a todos…já alguém trabalhou com: Coin acceptor CH-923.

Do lado moedeiro, tenho tudo configurado e à passagem da moeda dá sempre o mesmo código de impulso.

Do lado da arduino, no código, detecta diferentes moedas(monitor serie) à passagem quando estou a utilizar a mesma moeda.

CODIGO:

volatile byte CoinPulseCount = 0;
byte NewCoinInserted;
byte Command = 0;
int OpticalCountPin = 3;
volatile unsigned long PulseTime;

String OnePulse = "0,05";
String TwoPulses = "0,10";
String ThreePulses = "0,20";
String FourPulses = "0,50";
String FivePulses = "1 €";
String SixPulses = "2 €";

void setup(){
Serial.begin(9600);
Serial.println("Waiting...");
Serial.println();
pinMode(OpticalCountPin, INPUT);
attachInterrupt(1, CoinPulse, RISING);
}

void loop(){
if(CoinPulseCount > 0 && millis() - PulseTime > 200){
NewCoinInserted = CoinPulseCount;
CoinPulseCount = 0;
}
switch(NewCoinInserted){
case 1:
Serial.println(OnePulse + " inserted");
NewCoinInserted = 0;
break;
case 2:
Serial.println(TwoPulses + " inserted");
NewCoinInserted = 0;
break;
case 3:
Serial.println(ThreePulses + " inserted");
NewCoinInserted = 0;
break;
case 4:
Serial.println(FourPulses + " inserted");
NewCoinInserted = 0;
break;
case 5:
Serial.println(FivePulses + " inserted");
NewCoinInserted = 0;
break;
case 6:
Serial.println(SixPulses + " inserted");
NewCoinInserted = 0;
break;
}
}

void CoinPulse(){
CoinPulseCount ++;
PulseTime = millis();
}

Obrigado


#2

X[quote=“Nblade, post:1, topic:391”]
String OnePulse = “0,05”;
String TwoPulses = “0,10”;
String ThreePulses = “0,20”;
String FourPulses = “0,50”;
String FivePulses = “1 €”;
String SixPulses = “2 €”;
[/quote]

A primeira vista, porque não usar um float/double? E remover o tipo string ? Ou então manter a consistência de usar o símbolo euro em tudo


#3

Faz um serial print desta variável e vê o que de da


#4

Boas, detecta para mais ou para menos?