Lecturas PWM de rc

buenos dias, a ver si esta vez lo hago bien,
Me acaba de llegar un Radio Control Microzone MC6C con su receptor MC6RE, una vez conectado y probando todos los canales funciona perfectamente PERO, cuando apago el mando el receptor sigue emitiendo con todos los canales a 0, me ha sorprendido, porque como puedo saber si el mando esta encendido?, gracias de antemano

Perdon, lo he probado con un nano33BLE, pero lo voy a instalar con arduino DUE, el sketch para ver los valores es este

void loop() {
  duration=0;
  duration = pulseIn(A7, HIGH);
  Serial.print(" 1: "+String(duration)+"  ");
  duration=0;
  duration = pulseIn(A6, HIGH);
  Serial.print(" 2: "+String(duration));
  duration=0;
  duration = pulseIn(A5, HIGH);
  Serial.print(" 3: "+String(duration)+"  ");
  duration=0;
  duration = pulseIn(A4, HIGH);
  Serial.print(" 4: "+String(duration));
  duration=0;
  duration = pulseIn(A3, HIGH);
  Serial.print(" 5: "+String(duration)+"  ");
  duration = pulseIn(A2, HIGH);
  Serial.println(" 6: "+String(duration));
  duration=0;
  delay(100);
}

Ademas he leido por ahi(no me acuerdo donde), que se puede utilizar un canal del mando para saber si esta fuera de alcance, alguien me podria orientar, gracias

Otra pregunta, porque ese sketch tan facilito no funciona en DUE, lo compila y se lo envia, pero solo lee 0, gracias

Acá tienes algo que te puede servir

Lo del Due, no tengo idea, no lo he usado.

Saludos

Moderador
Intenta no abrir 6 posts para poner comentarios que tranquilamente podrias haber editado y continuado en alguno anterior. Todos tus post tienen minutos de diferencia.
El post#2 tiene mal colocado el código, corrige por favor.

Normal, si el receptor no recibe ningun pulso del emisor no se lo va a inventar. El receptor quitando lla parte de radiofrecuencia es un simple demultiplexor.

Pues cuando tengas ese cero que te sale, aunque en el emisor pongas un canal al minimo siempre emitira un pulso minimo no un cero.
Esta PAGINA te sera interesante de leer.

quizas no me he explicado bien, yo leo los valores correctos del mando, pero cuando apago el mando sigo leyendo valores 0,(quiero decir, no son cero, son 1000,1500 o 2000 segun como se quedara al apagar.
Por tanto, como siguo leyendo valores aparentemente reales, como puedo detectar si el mando esta encendido, apagado o fuera de alcance?
alguna idea, gracias

El mando va a controlar un vehiculo con dos ruedas motrices, segun la documentacion tiene un alcance de "800 metros", a esa distancia sencillamente no lo veo(incluso mucho antes), por lo que deberia detenerse.

Y por lo del DUE, ya no me preocupa, lo he probado, es un maquinon, pero lo unico que se parece al mega es que los dos tienen muchas entradas/salidas, y en cuanto a programacion hacen falta muchos conocimientos de c, que yo no tengo. Solo el sketch de arriba ya me complicaba la vida, he leido bastante de lo que hay disponible y si necesito mucho mas procesamiento del mega siempre puedes pasar al portenta y programar en microPithon, conclusion me he comprado un mega 2560 y devolvere el DUE.

Perdon, lo siento, cada vez que escribo algo me llamas la atencion (con razon), intentare mejorar,
que te parece si abro un hilo para el proyecto completo, en proyectos por supuesto

Está en el link que te dejé en #7 y que obviamente no leíste.

Saludos

Ahora si que lo he leido, pero tengo que probarlo, no se exactamente el funcionamiento de map, pero creo que esa funcion dara valores entre [-255,255], valores por debajo de res_min=1100, como por ejemplo los que yo leo, desde 998 devolverá -255, aunque tengo que probarlo. Muchas gracias.
Lo que yo lei y no se donde se referia a utilizar un canal de seguridad para cuando estuviera fuera de alcance o apagado y asi apagar los motores.
Me acaba de llegar el mega 2560, voy a ir probando. Esto lleva un rato.


Os dejo esta foto, creo que es muy ambicioso el proyecto, sino llega al final nadie me va a quitar lo que voy a aprender por el camino.
Eso que veis ahi, seguramente mas grande, tiene que llegar a ser un vehiculo autonomo capaz de barrer una superficie determinada (seguramente en maps) esquivando obstaculos(arboles) y enviar informacion a la nube en tiempo real o guardarla si no hay cobertura, la verdad es que es un reto.
Ya he probado el codigo del post 7, la funcion map() no limita valores, solo los escala, habria que usar la funcion "constrain(map(pulsein(),1000,2000,-255,255)))" para conseguir valores del radio control entre -255 y 255. Pero sigo teniendo el mismo problema cuando apago el emisor, el receptor sigue emitiendo los ultimos valores que tuvo. Alguna idea?

Necesito ayuda, sigo sin haber resuelto el problema, y creo que tiene que ser sencillo, si un dron sale del alcance del mando. que pasa? lo pierdo? tiene que haber alguna forma de controlar eso,

muchas gracias

En el post#1 del link que te dejó @anon90500195 tienes la respuesta

int mode = 0;
//-1 - transmeter not connected or out of range
//0- trans connected and ready
//1 - low speed
//2 = high speed mode

Y mas abajo cuando realmente lee los datos en 1 momento si no detecta actividad entonces pone mode = -1 que es fuera de rango.

boolean activevalues = true;
  for (int i = 0; i < 6; i++) {
    if (prt) {
      Serial.print("CH");
      Serial.print(i);
      Serial.print(" : ");
      Serial.print(receiver_values[i]);
      Serial.print(",\t");
    }
    if (receiver_values[i] < -500) {  // Acá comienza la cosa, si no detecta valores
      activevalues = false;               // pone el flag en falso
    }
  }
  mode = 0;
  if (!activevalues) {                     //  si esta en falso es porque esta fuera de alcance.
    mode = -1;                               // mode indica con -1 fuera de alcance.
  } else if (receiver_values[4] > -100) {
    mode = 2;
  } else if (receiver_values[5] > -100) {
    mode = 1;
  }
  if (prt) {
    Serial.println("");
  }

gracias por el interés, pero en ese skecth comprueba que el valor del receptor esté fuera de rango "valor>-500", eso debe ser algo especifico del mando y receptor flysky. Mi receptor M6RE, como te comente esta siempre emitiendo y sus valores estan fuera de rango solo cuando esta apagado.
A ver si me explico bien. yo estoy leyendo valores correctos y si apago el mando sigo leyendo valores correctos. He leido por ahi lo de Failsafe Mode pero no se si mi mando lo tiene ni como implementarlo. Seguiré investigando.
Gracias.

Pero probaste colocar el receptor a una distancia tal que no reciba comandos y ver que entrega el monitor serie?

Bueno, te lo diré sin rodeos, me parece un producto que le falta información y una buena página (la del fabricante no responde, supuestamente www.microzone.hk) , para ser un transmisor y receptor francamente muy vendidos en todos lados me sorprende la falta de información que se encuentra. Un manual del transmisor no hay problemas. Del receptor no encuentro casi nada. Todo muy justo, como para conectar lo necesario y nada mas.
Tal vez algun foro especializado tenga mas data pero.. yo no encontré mucho.
Asi que te dejo el trabajo a ti.

LLevas toda la razon, la unica documentacion son los foros. No he probado a irme tan lejos pero si apagar y encender el mando, y el receptor sigue repitiendo la ultima señal que también puede ser un problema. En fin, lo unico que me queda por probar es la señal MBUS, quizas este ahi el meollo, en las señales primera y ultima. He leido por ahi, que si hay 6 canales emite 8 pulsos, se descartan el primero y el ultimo, lo mirare haber si ahi esta la respuesta.
Mucahs gracias a todos. Un saludo. sigo con mi robot.

Mira tu post? No has aportado un solo link para ayudarte.
De paso lee las normas del foro para que entiendas cómo debe presentarse un problema.

RESUELTO. Voy a intentar explicarlo. El receptor MC6RE tiene ya implementado el modo Failsafe,
Me explico, cuando apago el mando, el acelerador se pone a cero (1000uS aprox),y los canales que tienen un punto medio se van a ese punto, los canales como potenciómetros para mi mando el canal 6 y interruptores el canal 5, sigo leyendo el valor que tenia al apagar el mando.
Como mi robot, es un car, cuando lo apago se para (acelerador a cero). Lo he probado.
Como saber si esta desconectado o fuera de rango?
En realidad para mi al ser un coche de da igual, mi sketch sigue ejecutándose bien, (brújula, gps, bluetooth) solo que parado.
Si fuera un dron, (yo no tengo dron) habría que estar continuamente mirando por ejemplo, el acelerador y la altura. Si la altura>0 y acelerador=0 (hay un problema) y tendría el software que tomar el control del dron.
No se si me he explicado bien. Lo que me ha quedado claro, es que he perdido varios días en resolver un problema que no tenia.
De nuevo gracias a todos por vuestra paciencia