nrf24l01+arduino
- Войдите на сайт для отправки комментариев
Пт, 23/02/2018 - 20:54
Добрый вечер, ребята подскажите, есть 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(); } } }
Сравнить с чем? Между собой?
да, между собой, если 1 больше вкл один светодиод, если меньше - другой
36
int
temperature1 = 0;
37
int
temperature2= 0;
и следовательно принимает их за нули
лучше б идею подкинул
ну ладно, спасибо
я его уже везде лепил и везде оно работает не верно, куда его лепить то?
я его уже везде лепил и везде оно работает не верно, куда его лепить то?
Тебе сколько лет? Если 10 или меньше - я ещё пойму, и даже постараюсь помочь. Если больше - ещё раз выложу картинку с фейспалмом.
Я никогда этим не занимался, вообще далёк от программирования , так что если есть чем помочь- помоги, а если решил просто задрачивать- то, пожалуйста, в другом месте
"Задрачивать", говоришь? Ок, ясно. Пожалуй, таки картинку запощу:
Твоё право
Вот тебе хорошая ссылка для изучения, раз с программированием не сталкивался: http://arduino.ru/Reference
36
int
temperature1 = 0;
37
int
temperature2= 0;
и следовательно принимает их за нули
Так может там и нет изменения значений? - вы проверяли, по NRF24 значения принимаются?
Проверял, данные принимаются раз в секунду и постоянно разные
давайте скетч, как проверяли и как сравнивали значения
В этом же скече оно в сериале пишет, какие значения приняло, если нужно , скину скетч передатчиков
вывод значений вижу - а сравнивали как? вставьте код сравнения прямо в этот скетч
Открывал сериал и смотрел, я знаю как написать сравнение, но не знаю куда его лепить, ибо куда я его не лепил он присваивает переменным нули, а то что они после этого ещё Милтон раз меняются , не видит, почему то
Тогда вопрос: а какого хрена, в этом случае, ты полез программировать?
------------------
я утром ненормально добр, поэтому напишу - объяви свои переменные для температуры, как static или глобально.
Т.е. в строках, если правильно помню, 36 и 37 напиши словао "static" перед int.
Сравнение в принципе ничего не должно присваивать.
В Вашем случае лепить его нужно сразу после получения данных. Получил данные - сравнил. Если будете сначала сравнивать, то будут нули.
Тогда вопрос: а какого хрена, в этом случае, ты полез программировать?
------------------
я утром ненормально добр, поэтому напишу - объяви свои переменные для температуры, как static или глобально.
Т.е. в строках, если правильно помню, 36 и 37 напиши словао "static" перед int.
Спасибо, static помогло