Comunicar 2 arduinos por PWM

Hola compañeros,
Estoy haciendo un proyecto y para este tengo 9 botones conectados a un arduino y necesito enviarle la informacion de que botón esta HIGH a otro arduino mediante un solo cable.
Para ello había pensado en enviar un pulso PWM y utilizar el "Pulsein" para leer el valor del PWM que me está enviando el primer arduino en el segundo.
El problema es que los valores que me devuelve el "Pulsein" no son tan precisos como yo me esperaba y debido a sus fluctuaciones no se como hacer que el sistema sea util.

¿Alguna idea de como hacerlo?

hola puedes usar Serial si necesitas comunicacion en un solo sentido solo gastas un pin

si lo quieres hacerlo con pulsein no uses el pwm, puedes hacer tu mismo un pulso de por ejemplo 10 20 30 40 50 .. ms y enviarlo segun la tecla pulsada

Asegura un nivel ya sea con un pull-down o pull-up

No entiendo para que usar PulseIN.
9 botones son leidos por un Arduino, hasta ahi todo bien.
Has como dice javi89, botones con resistencia a tierra o a vcc. Te propongo
projects_c5449483-cfd6-420f-a846-08e4cfc8530a.jpg
Cuando presionas tienes un HIGH y sino tienes LOW.
Luego como dice Go_Zalo envias por serial el dato presionado.
supongamos que detectas pulsador1
defines PinBoton1, p.ejemplo

#define PinBoton1    2
// en el setup configuras el boton como entrada INPUT

// en el loop() preguntas 
if (digitalRead(PinBoton1)) 
   Serial.println("1");

lo mismo para los otros 8 pulsadores.

A ver por que creo que no estamos leyendo los pulsadores estan en un arduino, y se tiene que enviar la info pulsada con un solo cable a otro arduino (bueno seran dos cables, uno + GND)

el quiere hacer uso del PWM y yo le he sugerido que lo haga con serial.

el uso de pulseIn es posible si codificamos cada pulsador como un pulso de una duración determinada y diferente entre si

Use the internal pullup and a button to gnd:

pinMode (pinX, INPUT_PULLUP);

if (digitalRead(pinX) == LOW){
// button is connected to Gnd
}

CrossRoads:
Use the internal pullup and a button to gnd:

pinMode (pinX, INPUT_PULLUP);

if (digitalRead(pinX) == LOW){
// button is connected to Gnd
}

otro que no lee

Bueno. Que lo envie como un codigo de bits como cuando se transmiten datos de RF
Un bit de start, el dato con 4 bits mas que sufiente para 9 valores y uno o dos bits de stop.