Coin Acceptor DG600F Inconsistent Signal

Good morning. I have a DG600F 6 coin programmable coin acceptor that I’m trying to interface with an Arduino R4 Wifi. I have confirmed that the coin acceptor turns on and programs fine (I am able to see all expected output on the LED display). I have hooked up the white “Serial Signal Output” wire to my R4 board 0 pin (labeled “RX”). I have a very simple sketch that I’ll include below that simply looks for input greater than 0 on the Serial1 input and outputs text on the Serial monitor as well as pressing a key using USB HID.

#include <Keyboard.h>

void setup() {
  Serial.begin(9600);
  Serial1.begin(9600);
  Keyboard.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  while(Serial1.available() >0){
  Serial.println("Got something");
  Serial.println(Serial1.read());
  Keyboard.press('1');
  delay(100);
  Keyboard.releaseAll();
  delay(1000);
}

}

The problem I’m having is that the signal is inconsistent. I’ll see the correct output on the acceptor’s LED display every time (“25”) but the signal I get on the serial monitor is not the same. Sometimes I drop a coin and get the correct display on the device, but the arduino serial monitor reads nothing. Sometimes it reads 1, others anything from 240-255. Every so often it reads a double input. I’ve even had it read an input when there is no coin (just sitting plugged in and waiting, it’ll output on the serial monitor and a keypress).

I need this to be consistent every time or it won’t work. Worth noting that I had previously interfaced the acceptor with a raspberry pi pico and saw similar results (I was assuming it had something to do with the 5v output the acceptor sends and the fact that the pico only use 3.3v, but the arduino should be able to handle the 5v and I’m getting the same results).

That’s a good thought. I’ve always used 9600 on the Arduino, I don’t know how I’d check the rate on the acceptor.