Проблема зажатия кнопки.
-
#include <SPI.h> // Подключаем библиотеку SPI
#include <nRF24L01.h> // Подключаем библиотеку nRF24L01
#include <RF24.h> // Подключаем библиотеку RF24int data[1]; // Создаём массив для приёма данных
RF24 radio(9,10); // Указываем номера выводов nRF24L01+ (CE, CSN)
int button = 3; // Создаем переменную button и указываем номер выводаvoid setup(void){
pinMode(button, INPUT); // Устанавливаем вывод 7 на вход
radio.begin(); // Инициируем работу nRF24L01+
radio.setChannel(100); // Указываем канал передачи (от 0 до 126)
radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи (250KBPS, 1MBPS, 2MBPS)
radio.setPALevel(RF24_PA_HIGH); // Указываем мощность передатчика (MIN=-18dBm, LOW=-12dBm, HIGH=-6dBm, MAX=0dBm)
radio.openWritingPipe(0x0123456789LL);// Задаем идентификатором 0x0123456789LL для передачи данных данных
}void loop(void)
{
if (digitalRead(button) == HIGH){ // Считываем переменную "button", если HIGH идем дальше, если LOW зацикливаемся
data[0] = 123; // Записываем значение 123 в массив data
radio.write(data, 1);} // Отправляем данные из массива data
} -
//приемник
#include <SPI.h> // Подключаем библиотеку SPI
#include <nRF24L01.h> // Подключаем библиотеку nRF24L01
#include <RF24.h> // Подключаем библиотеку RF24
#include <Servo.h>Servo servo;
int data[1]; // Создаём массив для приёма данных
RF24 radio(9,10); // Указываем номера выводов nRF24L01+ (CE, CSN)
int ser = 5; // Создаем переменную SW1 и указываем номер выводаvoid setup(void){
servo.attach(5);
delay(1000); // Ждем 1с
pinMode(ser,OUTPUT); // Устанавливаем вывод 3 на выход
radio.begin(); // Инициируем работу nRF24L01+
radio.setChannel(100); // Указываем канал передачи (от 0 до 126)
radio.setDataRate (RF24_1MBPS); // Указываем скорость передачи (250KBPS, 1MBPS, 2MBPS)
radio.setPALevel(RF24_PA_HIGH); // Указываем мощность передатчика (MIN=-18dBm, LOW=-12dBm, HIGH=-6dBm, MAX=0dBm)
radio.openReadingPipe(1,0x0123456789LL);// Задаем идентификатором 0x1234567890LL для передачи данных данных
radio.startListening ();
}void loop(void)
{
if (radio.available()){ // Если в буфере поступили данные
radio.read(data, 1); // Считываем данные с массива data и задаем количество считываемых байт
if(data[0] == 123){ // Если в массиве data значение 123servo.write(140);} //
}}
Добрый день! По примерам из сети собрал такой код. Цель в том что бы при нажатие кнопки на пульте двигалась серва на приемнике. Но при зажатие кнопки ничего не происходит. Не можете подсказать в чем ошибка?
- Войдите на сайт для отправки комментариев
а у вас хотя бы стандартные примеры из библиотеки NRf работают? а то мы тут сейчас будем думать над кодом - а окажется что вы или подключили неверно, или вообще у вас модули поддельные или дохлые
При обычном нажатие он совершает нужное движение. Но при повторном нажатии команда прерывается. Как можно сделать так что бы при исполнении цикла он не прерывался если зажать кнопку или нажать дважды.
используйте переменную-флаг. Сначала переменная = false, один раз повернули серву - выставите флаг = true и пока он true - больше серву не поворачивайте
.....
При обычном нажатие он совершает нужное движение.
Ты, уж определись и перестань в показаниях путаться.
Можем.
Для начала, неправильно вставлен код. В таком виде его никто серьёзно обсуждать не будет. Во-вторых, проблема толком не описана. Ты предлагаешь нам самим догадываться чего ты хотел, что получилось и чем отличается первое от второго.
Вставь нормально код, опиши проблему, тогда поговорим.
используйте переменную-флаг. Сначала переменная = false, один раз повернули серву - выставите флаг = true и пока он true - больше серву не поворачивайте
Логичнее наоборот, но это я просто придираюсь!