Correcto y diplomático como es su costumbre el señor moderador tiene toda la razón, pero en mi opinión llega un poquito tarde, mi último post ya estaba muy calmado.
Y como también se me ha echado en cara que no he aportado nada positivo, solo incorrecciones, voy a subsanar este hecho... y sin acalorarme.
int entrada = 7; // pin en el que metermos la señal que viene del receptor
unsigned long pulso; // variable en la que almacenaremos la lectura
void setup()
{
pinMode(entrada, INPUT); // configuramo el pin como entrada
Serial.begin(9600); // habilitamos puerto serie
}
void loop()
{
pulso = pulseIn(entrada, HIGH); // leemos el pulso
Serial.println(pulso); // mandamos el dato al monitor serie
delay(500); // pausa para no volver loco al monitor serie
}
Este sencillo Sketch recien programado por mi lee los pulsos procedentes de un receptor y los muestra por el puerto serie.
Como lo que Adrib quería hacer era leer la información que viene del receptor para jugar con ella en ese Sketch tiene todo lo necesario para entenderlo y comentado en castellano, aun así, si algo no le queda claro que pregunte y trataré de explicarlo de la forma más sencilla que pueda.
Acerca del Sketch comentar solo que, como básicament lo que queremos leer es un pulso de una duración de entre 1000 y 2000 microsegundos, tras el cual va una pausa cuya duración no nos importa, con el comando pulseIn() lo podemos hacer de forma sencilla. Lo he probado con uno de mis receptores y tal cual está ha funcionado perfectamente. También he comprobado una cosa muy curiosa, que no sabía y que paso a compartir para que sea de dominio público, por que a alguien le puede ser de interes: cuando he apagado el conjunto receptor-variador y he retirado la batería me seguían llegando pulsos, así que con sorpresa me he enterado de que Arduino puede alimentar al receptor.
Otra cosa, para leer los pulsos haría falta un comando pulseIn() para cada canal. Yo he utilizado un receptor Team Losi 2.4GHz DSM de 3 canales para la prueba, abrirlo para buscar una señal interna que lleve la información de todos los canales codificada en ella me parece, a título puramente personal, innecesario. Pero si algún valiente se atreve yo le paso fotografías de 8MP del circuito, me señala donde buscar y me ofrezco para hacer mas pruebas.
Esta mañana, mientras iba en bici al trabajo no he podido dejar de pensar en el tipo de señal tan particular que sirve para comunicar los distintos elementos de un sistema de radio control. Hemos quedado que es una señal PWM de 50Hz y que su pulso tiene una duración comprendida entre 1 y 2ms ¿y si el pulso fuese de 10ms? seguiría siendo PWM, pero no funcionaría ¿y si el pulso fuese de 0.25ms? también sería PWM y tampoco funcionaría.
Si tenemos que especificar que se trata de una señal PWM de 50Hz con el pulso comprendido entre 1 y 2ms resulta que tenemos que puntualizar tanto para referirnos a este tipo de señal que decir sólo que es PWM resulta incompleto, tanto como decir que se trata de una señal digital. Realmente ofrece la misma información en este caso decir que es digital y decir que es PWM. En este caso simplificar hasta el punto de que trata de una señal pulso-pausa-pulso-pausa, diciento que los pulsos son de entre 1 y 2 ms y que las pausas son de 20ms ofrece mucha más información y es más comprensible que decir solo que se trata de una señal PWM. Y aunque la simplificación no sea técnicamente correcta resulta que es cierta y que si le enviamos esa señal a un servo funciona.
La temperatura no habría subido si el lugar de saltarme al cuello por un par de incorrecciones en ningún momento intencionadas (vuelvo a pedir disculpas por haberme equivocado con la frecuencia de salida de la señal PWM de los pines de Arduino) nos hubiesemos centrado en lo que importa: despejar dudas con información útil.
Espero con esto haber aportado mi conocimiento para esclarecer dudas y no para generarlas, aunque si ha sido este el caso, siempre estoy dispuesto a disiparlas en base a mis conocimientos y a mi experiencia.