rewrite the arduino service, add support for interrupts