В режиме динамического размера эта команда игнорируется,т.е. сколько в буфер запишет мк,столько нрф и отправит.это максимальный размер передаваемого блока
void loop() {
for(int i = 0; i < 2; i ++) {
radio.write(&counter, sizeof(counter));
Serial.println(counter + i);
}
counter++;
delay(2000);
}
void loop() {
byte gotByte;
if (radio.available()) {
radio.read(&gotByte, sizeof(gotByte)); // чиатем входящий сигнал
Serial.print("Recieved: "); //Serial.print(count); Serial.print(" ");
Serial.println(gotByte);
}
}
Вы немного заблуждаетесь. Библиотека servo.h поддерживает до 12 сервоприводов. А вот при использовании вышеуказанной библиотеки пропадает возможность формирования ШИМ сигнала на пинах D9, D10.насколько я знаю, библиотека Servo не поддерживает другие пины для серво кроме D9 и D10 на плате Nano
Для функции radio.read() первым аргументом должен быть адрес массива received_data, а не сам массив.radio.read(received_data, sizeof(received_data));
radio.read(&received_data, sizeof(received_data));
Ключевое слово "почти". Я не собираюсь спорить и обсуждать здесь все нюансы. Если интересно - откройте любой учебник по языку Си или С++.Массив и указатель на него почти одно и то же.
void openReadingPipe(uint8_t number, const uint8_t* address);
radio.openReadingPipe(1,address[0]);
void openWritingPipe(const uint8_t* address);
radio.openWritingPipe(address[0]);
radio.write(&transmit_data, sizeof(transmit_data));
radio.write(transmit_data, sizeof(transmit_data));
//передатчик
#include <SPI.h>
#include <RF24.h>
RF24 radio(9, 10); // порты D9, D10: CSN CE
const uint32_t pipe = 111156789; // адрес рабочей трубы;
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"}; //возможные номера труб
byte butt1=3;
byte butt2=4;
byte butt3=5;
byte butt4=6;
byte transmit_data[4];
void setup() {
Serial.begin(115200);
Serial.println("TransmitterTester ON");
radio.begin(); // инициализация
delay(2000);
radio.setDataRate(RF24_1MBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS
radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit
radio.setPALevel(RF24_PA_MAX); // уровень питания усилителя RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH and RF24_PA_MAX
radio.setChannel(0x6f); // установка канала
radio.setAutoAck(false); // автоответ
radio.powerUp(); // включение или пониженное потребление powerDown - powerUp
radio.stopListening(); //радиоэфир не слушаем, только передача
radio.openWritingPipe(pipe); // открыть трубу на отправку
pinMode(butt1, INPUT_PULLUP);
pinMode(butt2, INPUT_PULLUP);
pinMode(butt3, INPUT_PULLUP);
pinMode(butt4, INPUT_PULLUP);
}
void loop() {
transmit_data[0]= !digitalRead(butt1);
transmit_data[1]= !digitalRead(butt2);
transmit_data[2]= !digitalRead(butt3);
transmit_data[3]= !digitalRead(butt4);
radio.write(&transmit_data, sizeof(transmit_data));
}
// приемник
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
RF24 radio(9, 10); // порты D9, D10: CSN CE
const uint32_t pipe = 111156789; // адрес рабочей трубы;
byte received_data[4];
byte address[][6] = {"1Node", "2Node", "3Node", "4Node", "5Node", "6Node"};
byte led1 = 3;
byte led2 = 4;
byte led3 = 5;
byte led4 = 6;
void setup() {
Serial.begin(9600);
Serial.println("ReceiverTester ON");
radio.begin(); // инициализация
delay(2000);
radio.setDataRate(RF24_1MBPS); // скорость обмена данными RF24_1MBPS или RF24_2MBPS
radio.setCRCLength(RF24_CRC_8); // размер контрольной суммы 8 bit или 16 bit
radio.setChannel(0x6f); // установка канала
radio.setAutoAck(false); // автоответ
radio.openReadingPipe(1, pipe); // открыть трубу на приём
radio.startListening(); // приём
digitalWrite(led1, OUTPUT);
digitalWrite(led2, OUTPUT);
digitalWrite(led3, OUTPUT);
digitalWrite(led4, OUTPUT);
}
void loop() {
byte pipeNo;
while ( radio.available(&pipeNo)) {
radio.read(&received_data, sizeof(received_data));
}
digitalWrite(led1, received_data[0]);
digitalWrite(led2, received_data[1]);
digitalWrite(led3, received_data[2]);
digitalWrite(led4, received_data[3]);
}
светодиоды в таком случае подключаются к выводам Ардуино через сопротивления.подключив к выходам 4 светодиода
выводы Ардуино имеют ограничения на ток, который они могут обеспечить и это, в целом 20-40мА, при этом суммарный ток, потребляемый всей микросхемой не должен превышать 100мА. Для управления более мощными нагрузками необходимо использовать драйверы или делать управление на транзисторах.не хватает для управления нагрузкой.
схему - в студию. Где мерили напряжение:я через резисторы светодиоды подключил
?от 1.6В до 2.6В
MOSFET не может ничего потреблять со стороны управляющего электрода. Даже если Вы его включили вместо светодиодов (оставив сопротивление), то на него должно идти максимальное напряжение на выводе Ардуино (с оговоркой, что не используется высокая частота переключения, что вряд ли имеет место быть). То, что MOSFET не открывается - означает только то, что он выбран неверно. Опять же имеет смысл говорить только при наличии схемы.один мосфет потребляет в открытом состоянии 12-14 мА
/**
* Создание соединения для чтения данных
*
* Одновременно может быт ьоткрыто до 6 соединений для чтения. После открытия всех необходимых соединений
* для чтения вызовите startListening().
*
* @see
* - openWritingPipe()
* - setAddressWidth()
*
* @note Соединения 0 и 1 будут использовать полный адрес длиной 5 байт. Соединения 2-5 будут использовать
* только первый байт адреса, применяя для остальных 4 байт значения соединения 1
* Адреса соединений 1-5 могут отличаться только первым байтом.
* Только первый байт в массиве адресов может быть уникальным, например
* @code
* uint8_t addresses[][6] = {"Prime", "2Node", "3xxxx", "4xxxx"};
* openReadingPipe(0, addresses[0]); // используется "Prime"
* openReadingPipe(1, addresses[1]); // используется "2Node"
* openReadingPipe(2, addresses[2]); // используется "3Node"
* openReadingPipe(3, addresses[3]); // используется "4Node"
* @endcode
*
* @warning
* @parblock
* If the reading pipe 0 is opened by this function, the address
* passed to this function (for pipe 0) will be restored at every call to
* startListening().
*
* Read
* http://maniacalbits.blogspot.com/2013/04/rf24-addressing-nrf24l01-radios-require.html
* to understand how to avoid using malformed addresses. This address
* restoration is implemented because of the underlying necessary
* functionality of openWritingPipe().
* @endparblock
*
* @param number Какое соединение открыть. Можно открыть только соединения с номерами 0-5,
* все адреса, присвоенные соединениям за пределами этих номеров будут проигнорированы.
* @param address 24, 32 или 40 бит адрес открываемого соединения.
*
* Параметр длины адреса опущен, поскольку будет использоваться только то количество байт
* (для соединений 0 и 1) которое установлено методом setAddressWidth().
*/
void openReadingPipe(uint8_t number, const uint8_t* address);
/**
* Устанавливает размер адреса от 3 до 5 байт (24, 32 или 40 бит)
*
* @param a_width Размер адреса в байтах; может принимать значение 3, 4 или
* 5.
*/
void setAddressWidth(uint8_t a_width);
uint64_t address[]
Наверно,запамятовал)попыток то 15