Уважаемые пользователи! Наш сайт и форум содержится на средства полученные от рекламы. Если вы хотите и дальше продолжать общаться, скачивать, и т.п. пожалуйста отключите блокировку рекламы для нашего сайта/форума. Можно и покликать по рекламным ссылкам, так будут больше выплаты. Спасибо за понимание!

Запись EEPROM относительно уровня сигнала

Запись EEPROM относительно уровня сигнала от передатчика

Ответить
Аватара пользователя
stapmoff
Лейтенант
Сообщения: 335
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 3

Запись EEPROM относительно уровня сигнала

#1

Сообщение stapmoff » 16.04.2020{, 09:11}

Приветствую всех! Пишу пользовательский блок. Задача такая. При нажатии на кнопку Ping, передатчик высылает сообщение другим устройствам, те в свою очередь отправляют ему ответ с своим уровнем сигнала. Так вот, требуется записывать адрес от принятых устройств (передатчики) а память относительно их уровня сигнала. Передатчик с самым высоким уровнем запишется в самое начало памяти, с самым низким будет последним в памяти. Делаю вот, так, но работает не корректно

if ((rssi < -20) || (rssi >= -30)) { // уровень сигнала меньше -20 дБм, но не больше или равно -30, то пишем в 0 ячейку памяти
EEPROM.put(addree, ADDRs);
addree += sizeof(byte); // наращиваем адрес EEPROM
ADDRs = 0;
byte Mpong = 101;
sendpong(Mpong);
onReceive(LoRa.parsePacket());
delay(100);
}
if ((rssi > -30) || (rssi >= -40)) { // уровень сигнала больше -30 дБм, но не больше или равно -40, то пишем в следующею ячейку памяти
EEPROM.put(addree, ADDRs);
addree += sizeof(byte); //наращиваем адрес EEPROM
ADDRs = 0;
byte Mpong = 101;
sendpong(Mpong);
onReceive(LoRa.parsePacket());
delay(100);

И так далее.
Заранее спасибо!

Аватара пользователя
Sancho
Полковник
Сообщения: 3573
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 457
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Запись EEPROM относительно уровня сигнала

#2

Сообщение Sancho » 16.04.2020{, 11:34}

stapmoff писал(а):
16.04.2020{, 09:11}
if ((rssi < -20) || (rssi >= -30))
stapmoff писал(а):
16.04.2020{, 09:11}
if ((rssi > -30) || (rssi >= -40))
Будьте внимательней с указанием диапазона :) Как отработает, например, -25?
Используйте else if - меньше условий писать...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 335
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 3

Запись EEPROM относительно уровня сигнала

#3

Сообщение stapmoff » 16.04.2020{, 12:40}

Sancho, Спасибо. Попробую.

edyapd
Лейтенант
Сообщения: 609
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 45
Имя: Эдуард

Запись EEPROM относительно уровня сигнала

#4

Сообщение edyapd » 16.04.2020{, 13:46}

stapmoff писал(а):
16.04.2020{, 09:11}
delay(100)
Не очень хорошо использовать delay в ПБ.
А если просто принять сигналы в переменные. Загнать в блок сортировки, а на выходе уже записывать каждое значение в свою ячейку.

Аватара пользователя
stapmoff
Лейтенант
Сообщения: 335
Зарегистрирован: 16.05.2016{, 10:21}
Репутация: 3

Запись EEPROM относительно уровня сигнала

#5

Сообщение stapmoff » 16.04.2020{, 14:29}

edyapd, Спасибо. Delay использую исключитель для того, чтобы успеть пропарсить принятый пакет

Ответить

Вернуться в «С++ в Ардуино»