nrf24l01+arduino

Den1234567890
Offline
Зарегистрирован: 23.02.2018

Добрый вечер, ребята подскажите, есть arduino с nrf24 которая принимает два значения терморезисторов. Вопрос в вот в чем: как сделать так что бы можно было сравнить эти 2 числа и выполнить действие(включить диод)?

Вот код приемника:

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h> // https://github.com/maniacbug/RF24
#include <Wire.h> 
 

const uint64_t pipe01 = 0xF0F1F2F3F4LL; 
const uint64_t pipe02 = 0xF0F1F2F3F1LL;

RF24 radio(9, 10); // CE, CSN
int x;
void setup(){
   pinMode(5, OUTPUT);
   pinMode(6, OUTPUT);
   pinMode(7, OUTPUT);
  Serial.begin(9600);
  radio.begin();  
 
  delay(2);
  radio.setChannel(9); // канал (0-127) 
  radio.setDataRate(RF24_1MBPS);      
  radio.setPALevel(RF24_PA_HIGH);   
    
  radio.openReadingPipe(1,pipe01); // открываем трубу с индитификатором "pipe01"
  radio.openReadingPipe(2,pipe02); // открываем трубу с индитификатором "pipe02"  
//  radio.openReadingPipe(0,pipe01); // или открываем все трубы разом
  radio.startListening(); // включаем приемник, начинаем слушать трубу
}
 
//  radio.stopListening(); // останавливает приём (нужно перед началом передачи) 


void loop()   
{
uint8_t pipeNum = 0; 
int temperature1 = 0;
int temperature2= 0;
  if (radio.available(&pipeNum)){ // проверяем не пришло ли чего в буфер.
     if (pipeNum == 1){        
          
        radio.read(&temperature1, sizeof(temperature1));
          Serial.println(pipeNum);
          Serial.println(temperature1);
          Serial.println();
          int x = temperature1;
     }
     if (pipeNum == 2){
          
        radio.read(&temperature2, sizeof(temperature2)); 
          Serial.println(pipeNum);
          Serial.println(temperature2);
          Serial.println();

}
   
  }

} 

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Сравнить с чем? Между собой?

Den1234567890
Offline
Зарегистрирован: 23.02.2018

да, между собой, если 1 больше вкл один светодиод, если меньше - другой

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014
  if (temperature1 > temperature2) { // Если temperature1 больше temperature2
    digitalWrite(LED1, HIGH); // Включить LED1
    digitalWrite(LED2, LOW); // Выключить LED2

  }
  else { // Иначе...
    digitalWrite(LED1, LOW); // Выключить LED1
    digitalWrite(LED2, HIGH);  // Включить LED2
  }

 

Den1234567890
Offline
Зарегистрирован: 23.02.2018
Я такое писал, дело в том что оно не видит измения значений , а видит только 
36 int temperature1 = 0;
37

int temperature2= 0;

и следовательно принимает их за нули 

Den1234567890
Offline
Зарегистрирован: 23.02.2018

лучше б идею подкинул

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Den1234567890
Offline
Зарегистрирован: 23.02.2018

ну ладно, спасибо

Den1234567890
Offline
Зарегистрирован: 23.02.2018

я его уже везде лепил и везде оно работает не верно, куда его лепить то?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Den1234567890 пишет:

я его уже везде лепил и везде оно работает не верно, куда его лепить то?

Тебе сколько лет? Если 10 или меньше - я ещё пойму, и даже постараюсь помочь. Если больше - ещё раз выложу картинку с фейспалмом.

Den1234567890
Offline
Зарегистрирован: 23.02.2018

Я никогда этим не занимался, вообще далёк от программирования , так что если есть чем помочь- помоги, а если решил просто задрачивать- то, пожалуйста, в другом месте

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

"Задрачивать", говоришь? Ок, ясно. Пожалуй, таки картинку запощу:

Den1234567890
Offline
Зарегистрирован: 23.02.2018

Твоё право

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Вот тебе хорошая ссылка для изучения, раз с программированием не сталкивался: http://arduino.ru/Reference

b707
Offline
Зарегистрирован: 26.05.2017

Den1234567890 пишет:

Я такое писал, дело в том что оно не видит измения значений , а видит только 
36 int temperature1 = 0;
37

int temperature2= 0;

и следовательно принимает их за нули 

Так может там и нет изменения значений? - вы проверяли, по NRF24 значения принимаются?

Den1234567890
Offline
Зарегистрирован: 23.02.2018

Проверял, данные принимаются раз в секунду и постоянно разные

b707
Offline
Зарегистрирован: 26.05.2017

давайте скетч, как проверяли и как сравнивали значения

Den1234567890
Offline
Зарегистрирован: 23.02.2018

В этом же скече оно в сериале пишет, какие значения приняло, если нужно , скину скетч передатчиков

b707
Offline
Зарегистрирован: 26.05.2017

Den1234567890 пишет:
В этом же скече оно в сериале пишет, какие значения приняло, если нужно , скину скетч передатчиков

вывод значений вижу - а сравнивали как? вставьте код сравнения прямо в этот скетч

Den1234567890
Offline
Зарегистрирован: 23.02.2018

Открывал сериал и смотрел, я знаю как написать сравнение, но не знаю куда его лепить, ибо куда я его не лепил он присваивает переменным нули, а то что они после этого ещё Милтон раз меняются , не видит, почему то

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Den1234567890 пишет:
Я никогда этим не занимался, вообще далёк от программирования , так что если есть чем помочь- помоги, а если решил просто задрачивать- то, пожалуйста, в другом месте

Тогда вопрос: а какого хрена, в этом случае, ты полез программировать?

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

я утром ненормально добр, поэтому напишу - объяви свои переменные для температуры, как static или глобально.

Т.е. в строках, если правильно помню, 36 и 37 напиши словао "static" перед int.

ORLENOK
Offline
Зарегистрирован: 24.02.2018

Den1234567890 пишет:
Открывал сериал и смотрел, я знаю как написать сравнение, но не знаю куда его лепить, ибо куда я его не лепил он присваивает переменным нули, а то что они после этого ещё Милтон раз меняются , не видит, почему то

Сравнение в принципе ничего не должно присваивать.

В Вашем случае лепить его нужно сразу после получения данных. Получил данные - сравнил. Если будете сначала сравнивать, то будут нули.

Den1234567890
Offline
Зарегистрирован: 23.02.2018

wdrakula пишет:

Den1234567890 пишет:
Я никогда этим не занимался, вообще далёк от программирования , так что если есть чем помочь- помоги, а если решил просто задрачивать- то, пожалуйста, в другом месте

Тогда вопрос: а какого хрена, в этом случае, ты полез программировать?

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

я утром ненормально добр, поэтому напишу - объяви свои переменные для температуры, как static или глобально.

Т.е. в строках, если правильно помню, 36 и 37 напиши словао "static" перед int.

Спасибо, static помогло