You would need a separate thread to monitor the serial port. You could then set a global variable from it. Then from the audio thread (e.g.: inside render) you would read the content of the global variable and send a message to a receiver in Pd, using a syntax like this:
libpd_float("yourReceiver", state);
this would send to a [r yourReceiver] object in libpd.
In order to do this you'd need a Pd project with a custom render.cpp
file. See the example 08-PureData/customRender
.
On the other hand, the [serial] object is supported by libpd(though I have not tested it), so you may skip all you've done so far and simply try running your Pd patch with the [serial] object in it.
On the other hand again, I would ask you: why do you need Arduino for this application? Is there no way you could connect your device straight into Bela?