Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Presentación de proyecto y dudas (RADIOCONTROL)
#1
Hola amigos,

Tenía ganas de hacer un proyecto nuevo con Arduino y me propuse investigar los NRF24L01, y como ni me gustan los drones ni los aviones, y los coches brushless son caros, me he decidido a radiocontrolar un velero de regatas a escala UE compre por 60€ por qué válgame la casualidad, le faltaba el mando y yo tenía una radio antigua.

Ahora me encuentro con problemas que he ido solucionando... Los módulos no se comunicaban bien o erraban, primero puse una pila 9v al Arduino, de la salida 5v alimente los servos, y de la 3,3 los NRF24L01... Solución-> LM7806 para servos, LM7805 para Arduino y LD111V33 para los NRF24L01, al parecer los servos crean una caída de tensión que interrumpia la comunicación de los módulos... (Esto lo pongo por si le sirve a alguien)

Ahora tengo mi barco y mi radio, el timón funciona bien, pero mi problema está en que no me aclaro en mandar información de dos dispositivos (2 potenciómetros) al barco para controlar vela, y timón. He pensado en usar un struct, a ver cómodo lo veis. Os subo los .ino

Os aclaro... La librería ServoPot es de mi autoría, no la vais a encontrar, la hice para controlar fácilmente un servo desde un potenciómetro cualquiera añadiendo unos valores, hace automáticamente el mapeo de los grados que le digamos (setSAV) y los valores de potenciómetro según este nos marque ya que no todos regulan entre 0 y 1024 (setPotval), hay otras funciones, si veis algo dudoso en el código preguntar.

EMISORA
Código:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <ServoPot.h>
#include <LiquidCrystal.h>
int var1;


ServoPot potTimon;
LiquidCrystal lcd(2,4,5,6,9,10);
RF24 radio(7, 8); // CE, CSN
int AMP;
const byte address[6] = "00001";
int var[1];


void setup() {
  Serial.begin(9600);
  lcd.begin(16, 2);
  radio.begin();
  radio.openWritingPipe(address);
  radio.setPALevel(RF24_PA_MIN);
  radio.stopListening();
  potTimon.setInput(A5);
  potTimon.setSAV(0,180);
  potTimon.setPotval(550,915);
  AMP = 3;
  pinMode(AMP, INPUT);
}


void loop() {
  if(var1 != var[0]) lcd.clear();
  var1 = var[0];
  lcd.setCursor(0,0);
  lcd.print("Timon: ");
  lcd.print(potTimon.GetValue() );
  lcd.print((char)223);
  lcd.setCursor(0,1);
  lcd.print("Analog: ");
  lcd.print(analogRead(A5) );
  potTimon.anglesMap(3);
  var[0] = potTimon.GetValue();
  radio.write(&var[0], sizeof(var[0]));
  Serial.print(analogRead(A5));
  Serial.print(" - ");
  Serial.println(var[0]);
  
}

RECEPTOR
Código:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>

Servo timon;
RF24 radio(7, 8);

const byte rxAddr[6] = "00001";

void setup()
{
  timon.attach(3);
  
  while (!Serial);
    Serial.begin(9600);
    radio.begin();
    radio.openReadingPipe(0, rxAddr);
    radio.startListening();
}

void loop()
{
  if (radio.available())
  {
    int pot[1];
    radio.read(&pot, sizeof(pot));
    timon.write( pot[0] );
    Serial.println(pot[0]);
  }
}

Gracias de antemano

Enviado desde mi Mi A2 Lite mediante Tapatalk
resimresimresimresimresim
Citar
#2
Dificil poder ayudarte cuando no has posteado la librería de tu autoria por un lado.
Pero tampoco esta claro los dos valores que quieres enviar.

Al menos una nota explicando, envio esto y esto.

Aca se ve que lees dos datos

Código:
 lcd.print("Timon: ");
 lcd.print(potTimon.GetValue() );
 lcd.print((char)223);
 lcd.setCursor(0,1);
 lcd.print("Analog: ");
 lcd.print(analogRead(A5) );
 potTimon.anglesMap(3);
 var[0] = potTimon.GetValue();


Supongo que eso es el envió del timon.
Los dos potenciométros no se donde estan?

Como bien has dicho una struct podria ayudarte y también un vector

Código:
radio.write(&var[0], sizeof(var[0]));


esto corresponde a un dato pero si var[3] tuviera tamaño 3 podrias cargar 

var[0] con el valor del timon
var[1] con un potenciometro
var[2] con el 2do potenciometro.


lo envías así

Código:
radio.write(&var, sizeof(var));

y si te daerror pones 

var[] no recuerdo cual funciona

lo mismo del lado receptor.
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  Proyecto sckay 46 3,673 23-11-2015, 04:17 PM
Último mensaje: Iván
  Novato - Dudas proyecto First Person View para coche o Heli pedrotronic 3 715 29-10-2014, 11:28 AM
Último mensaje: pedrotronic
  Dudas Arduino walter white 20 1,650 28-02-2014, 11:17 PM
Último mensaje: walter white
  Problema con proyecto Electromecánico 8 875 02-01-2014, 11:58 PM
Último mensaje: Electromecánico
  Dudas Liberia y EEPROM Triggerr 31 12,879 25-08-2013, 10:40 PM
Último mensaje: Triggerr