发送端
/*
ESP8266 nRF24L01 电源 3.3V 1GND- 2VCC引脚 8脚可不接
D4 CE 3
D2 CSN 4
D5 SCK 5
D7 MOSI 6
D6 MISO 7
*/
#include <Arduino.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
//接收端地址
const byte slaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(D4, D2); // Create a Radio
void setup() {
Serial.begin(115200);
Serial.println("Starting:");
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.setRetries(3,5); // delay, count
radio.openWritingPipe(slaveAddress);
}
void loop() {
int analog_read_data = analogRead(A0); // ADC0 A0引脚 专门读取adc值 0 -- 1024
String analog_read_data_str = String(analog_read_data);
if (radio.write(&analog_read_data_str,sizeof(analog_read_data_str))) {
Serial.print(analog_read_data_str);
Serial.println(" Tx Success!");
}else {
Serial.print(analog_read_data_str);
Serial.println(" Tx failed!");
}
delay(10);
}
接收端
/*
ESP8266 nRF24L01 电源 3.3V 1GND- 2VCC引脚 8脚可不接
D4 CE 3
D2 CSN 4
D5 SCK 5
D7 MOSI 6
D6 MISO 7
*/
#include <Arduino.h>
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
const byte thisSlaveAddress[5] = {'R','x','A','A','A'};
RF24 radio(D4, D2);
char dataReceived[4]; // this must match dataToSend in the TX
const int pwm_pin = 16; // GPIO16 - D0引脚 输出PWM信号
void setup() {
Serial.begin(115200);
analogWriteFreq(1000); // 频率设置为1kHz,即周期为1ms
analogWriteRange(1024); // 范围设置为0--1024
analogWrite(pwm_pin, 0); //初始值 0
radio.begin();
radio.setDataRate( RF24_250KBPS );
radio.openReadingPipe(1, thisSlaveAddress);
radio.startListening();
}
void loop() {
if (radio.available()) {
radio.read(&dataReceived,sizeof(dataReceived));
String temp = String(dataReceived);
int i_pwm_motor = temp.toInt();
i_pwm_motor = int(i_pwm_motor);
analogWrite(pwm_pin, i_pwm_motor); //将ADC读取的值 赋给 pwm引脚
Serial.print("Motor Speed:");
Serial.println(i_pwm_motor);
}
}