Главная страница           Поиск по сайту
Файловый обменник       Онлайн игры
Интересное чтиво +        Музыка
IT-Новости                     Фото-свалка
Форум
Доска объявлений
Полезные сайты
Универсальный поиск

Гость

01:04:49

Мы рады вас видеть.
Пожалуйста
зарегистрируйтесь
или авторизуйтесь!

На сайте:
Пользователей: 9191
Коментариев: 216
Форум: 743/1989
Фото: 257
Файлов: 193
Статей: 187
Сайтов: 80











    Наш баннер:

    Друзья, поддержите
    наш проект!
    Разместите
    у себя кнопку ;)

    nnov.3dn.ru Интернет-свалка Н.Н.


      --------------

      Себестоимость сайта:
      $
      тИЦ:30 PR:3
      Обменяться баннером


      Нам важно ваше мнение
         
      Чем наполнять сайт?

          
       
      Всего ответов: 2394








    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

Добавить свою рекламу на сайт



    Главная » Статьи » Arduino [ Добавить статью ]

 

Подключение к ардуине

 

Arduino Nano, UNO

 

SCK — D13

MOSI — D11

MISO — D12

CSN — D10

CE/SS — D9

 

Arduino MEGA

 

SCK — D52

MOSI — D51

MISO — D50

CSN — D53

CE/SS — D49

 

Для СЕ и CSN можно использовать любые пины (меняется в скетче RF24 radio(9,10);).

 

http://nnov.3dn.ru/misc/arhs/RF24.zip

 

 

функция, которая каждую секунду смотрит, не отрублено ли питание. В библиотеке сделайте публичной функцию get_status(). Вообщем работает эта хрень и код работает параллельно. Можно выставить частоту опроса. Если модуль отключился, а потом включился,поднимаем его функцией powerUP() и устанавливаем опять настройки. По питанию определился, меня это устраивает, дальше буду обрабатывать передачу radio.write(&svalue,sizeof(svalue)); Так как код тоже зависает если не может передать.

Код (Text):
//-------------------------------------------------------------------------------------------------

//Подключение библиотек
//-------------------------------------------------------------------------------------------------
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <stdint.h>
//---------------------------------------------------------------------------------------------------------------
//Константы для обработки беспроводных датчиков
//---------------------------------------------------------------------------------------------------------------
#define CE_PIN 9    
#define CSN_PIN 10

const uint64_t NRF = 0xE8E8F0F0E1LL;
const uint64_t NRF1 = 0xE8E8F0F0A2LL;

//Выставляем пины на модель NRF2401+
RF24 radio(CE_PIN, CSN_PIN);

//-------------------------------------------------------------------------------------------------
//Переменные программы
//-------------------------------------------------------------------------------------------------
unsigned long MessageNRF; //Сообщение на прием / передачу
int SensorCounter=0; //Счетчик прохода позиций

int NRFOnlineStatus; //Статус модуля

//Если радио включено значение переменной true
boolean NRFOnlineValue=false;

//Счетчики
unsigned long NRFOnlineCounter=0; //Счетчик времени в OffLine (NRFOnlineDelay)

unsigned long NRFOnlineTimer=millis(); //Таймер проверки питания
unsigned long NRFOnlineDelay=1000; //Задержка проверки в миллисекундах

unsigned long UpdateSensorTimer=millis();
unsigned long UpdateSensorDelay=100;

//-------------------------------------------------------------------------------------------------
//Функция инициализации NRF
//-------------------------------------------------------------------------------------------------
void StartRadio(void)
{
  radio.begin();        
delay(2000);      
  radio.setChannel(2);            
  radio.setRetries(10,10);        
  radio.setDataRate(RF24_1MBPS);
  radio.setPALevel(RF24_PA_MAX);
  radio.openReadingPipe(1,NRF1);
  radio.setPayloadSize(32);
  radio.startListening();
  radio.powerUP();
  NRFOnlineStatus=radio.get_status(); //Стату NRF модуля при старте
}

//---------------------------------------------------------------------------------------------
//Функция проверки Radio (Online)
//---------------------------------------------------------------------------------------------

void RadioOnline(void)
{
  if(millis() - NRFOnlineTimer > NRFOnlineDelay)
  {
    NRFOnlineTimer=millis();

    //Получаем текущее состояние
    int CurrentStatus=radio.get_status(); //Текущее состояние модуля

    //Если текущее состояниеравно предыдущем то
    if (CurrentStatus==NRFOnlineStatus)
    {
      //Когда остановится счетчик на проверку то поднимаем радио заново
      if (NRFOnlineCounter>1)
      {
        radio.powerUp();
        StartRadio();
        NRFOnlineCounter=0;
      }
      NRFOnlineValue=true;
    }
    else
    {
      NRFOnlineValue=false;
      NRFOnlineCounter++;
    }
  }
}


//---------------------------------------------------------------------------------------------
//Функция отправки команды передатчику
//---------------------------------------------------------------------------------------------
void send_answer(unsigned long svalue,uint64_t p)
{
  radio.stopListening();  //Перестаем слушать
  radio.openWritingPipe(p); //Открывем трубу для отправки
  radio.flush_tx();
  radio.write(&svalue,sizeof(svalue)); // Отправляем ответ
  radio.startListening();

}
//-------------------------------------------------------------------------------------------------
//Функция обработки сенсора для других устройств
//-------------------------------------------------------------------------------------------------
void UpdateSensor()
{
  if(millis() - UpdateSensorTimer > UpdateSensorDelay)
  {
    SensorCounter++;
    UpdateSensorTimer = millis();
  }

  if(SensorCounter > 10)
  {
    SensorCounter=0;
    if (NRFOnlineValue)
    {
      send_answer(100,NRF);
    }
  }
}

//-------------------------------------------------------------------------------------------------
//Функция прослушки радиоканала
//-------------------------------------------------------------------------------------------------
void RadioRead(void)
{
  if (radio.available())
  {
    radio.read(&MessageNRF,sizeof(MessageNRF));
    Serial.println(MessageNRF);
  }
}

//-------------------------------------------------------------------------------------------------
//Установки Arduino
//-------------------------------------------------------------------------------------------------
void setup()
{
  Serial.begin(57600);
  StartRadio();
}

void loop()
{
  UpdateSensor();
  RadioOnline(); //Проверка радио на отключение питания

  //Если есть питание на модуле, то слушаем Radio
  if (NRFOnlineValue) { RadioRead(); }
}
 



 

Категория: Arduino | Добавил: БОТ (02.02.2016)
Просмотров: 2348 | Рейтинг: 0.0/0
Всего комментариев: 0

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]




Добавить свою рекламу на сайт
ххх
Рейтинг@Mail.ru Используются технологии uCoz