这个头文件是控制主题得代码
//Transmitter Joystick
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
RF24 radio(8, 9); //CE, CSN
const byte address[6] = "00001";
char xyData[32] = "";
String Rjoy, Lpot, Rpot, Ljoy;
int delaytime = 20;
void setup()
{
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop()
{
Rjoy = analogRead(A1); //Read Right joystick values from VRy
Lpot = analogRead(A2); //Read Lpot values
Rpot = analogRead(A3);
Ljoy = analogRead(A0);
Serial.print("Ljoy = ");
Serial.print(Ljoy);
Serial.print("\t");
Serial.print("Rjoy = ");
Serial.print(Rjoy);
Serial.print("\t");
Serial.print("Lpot = ");
Serial.print(Lpot);
Serial.print("\t");
Serial.print("Rpot = ");
Serial.print(Rpot);
Serial.println();
//X value
Rjoy.toCharArray(xyData, 5); //Put the String (X Value) into a character array
radio.write(&xyData, sizeof(xyData)); //Send the array data (X-value) to the other NRF24L01 modile
//Y value
Lpot.toCharArray(xyData, 5);
radio.write(&xyData, sizeof(xyData));
delay(delaytime);
}
这个是遥控器得头文件
//Fan Boat Code
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
RF24 radio(8, 9); // CE, CSN
const byte address[6] = "00001";
char receivedData[32] = "";
int xAxis, yAxis;
Servo myServo;
int In3 = 7;
int In4 = 6;
int ENB = 5;
int delaytime = 20;
void setup()
{
pinMode(In3, OUTPUT);
pinMode(In4, OUTPUT);
pinMode(ENB, OUTPUT);
digitalWrite(In3, HIGH);
digitalWrite(In4, LOW);
Serial.begin(9600);
myServo.attach(3);
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
}
void loop()
{
if (radio.available())
{
radio.read(&receivedData, sizeof(receivedData));
xAxis = atoi(&receivedData[0]);
delay(delaytime);
radio.read(&receivedData, sizeof(receivedData));
yAxis = atoi(&receivedData[0]);
delay(delaytime);
}
int angelV = map(xAxis, 0, 1023, 130, 60);
int throttle = map(yAxis, 0, 1023, 0, 255);
myServo.write(angelV);
analogWrite(ENB, throttle);
Serial.print(angelV);
Serial.print("\t");
Serial.print(yAxis);
Serial.print("\t");
Serial.print(throttle);
Serial.println();
}
首先是对RF芯片芯片得引脚定义
创建一个32位数据得数组
定义了两个变量来存储轴得信息
创建了一个byte
这地方创建了一个舵机对象
ENB看下面得解释,是个使能引脚
EN得意思就是使能
ENA
ENB
.
.
.
ENZ?无所谓了
这个地方是初始化
三个引脚对应舵机,都是输出得功能
记者2个引脚被写入高与低
告知引脚号
这个地方是无线发送特有得功能
先开启这个无线功能()
https://maniacbug.github.io/RF24/classRF24.html
http://www.taichi-maker.com/homepage/reference-index/arduino-library-index/servo-library/servo-attach/
看这段代码很精简
当无线功能开启时,用指针读取接受得数据,算了一下占多少字节
atoi把字符串转换为整型数
延时一个时间
接着是接收Y轴得数据
在延时一下
接着是对这个数据进行了map,把旋钮得量转换为舵机得偏转角度
然后把值传给数字引脚转动相应得角度
打印么有什么好说得
只能说,写得很(๑•̀ㅂ•́)و✧
接下来看遥控器段得代码
定义了发送得引脚
定义了一个数组,来存储数据
4个string来存储摇杆传感器得值,这个值会被aoti转换到整型
这个是指定串口的波特率
还有对无线芯片的一些设置
摇杆有2个10k的电位器,现在有开关传感器就是4个脚
接着打印输出的信息,调试用吧
这段是发送,要延时发送