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
RECEPTOR
Gracias de antemano
Enviado desde mi Mi A2 Lite mediante Tapatalk
![[Imagen: 3c600284f7d26c53899992cf61f86d33.jpg]](https://uploads.tapatalk-cdn.com/20181121/3c600284f7d26c53899992cf61f86d33.jpg)
![[Imagen: 2422b1645ad47bb30f86928f2f86e6f8.jpg]](https://uploads.tapatalk-cdn.com/20181121/2422b1645ad47bb30f86928f2f86e6f8.jpg)
![[Imagen: 41154e3afe944ec50716c2276af09ab9.jpg]](https://uploads.tapatalk-cdn.com/20181121/41154e3afe944ec50716c2276af09ab9.jpg)
![[Imagen: aabebf4dc76cdf8d49893df041c506fa.jpg]](https://uploads.tapatalk-cdn.com/20181121/aabebf4dc76cdf8d49893df041c506fa.jpg)
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
![[Imagen: 3c600284f7d26c53899992cf61f86d33.jpg]](https://uploads.tapatalk-cdn.com/20181121/3c600284f7d26c53899992cf61f86d33.jpg)
![[Imagen: 2422b1645ad47bb30f86928f2f86e6f8.jpg]](https://uploads.tapatalk-cdn.com/20181121/2422b1645ad47bb30f86928f2f86e6f8.jpg)
![[Imagen: 41154e3afe944ec50716c2276af09ab9.jpg]](https://uploads.tapatalk-cdn.com/20181121/41154e3afe944ec50716c2276af09ab9.jpg)
![[Imagen: aabebf4dc76cdf8d49893df041c506fa.jpg]](https://uploads.tapatalk-cdn.com/20181121/aabebf4dc76cdf8d49893df041c506fa.jpg)
![[Imagen: 047e4928e5ebf7718cb11d8f2aa94112.jpg]](https://uploads.tapatalk-cdn.com/20181121/047e4928e5ebf7718cb11d8f2aa94112.jpg)