Почему тормозит печать на oled экран то, что приходит на приемник 433Мгц?
- Войдите на сайт для отправки комментариев
Пнд, 18/01/2021 - 16:17
Всем привет знатоки. Собрал простую схемку чтобы перехватывать 433 сигналы и выводить их на oled. Но вот проблема, почему то когда я не указываю в коде myOLED.print( mySwitch.getReceivedValue()); В мониторе порта нажатия на кнопки пульта 433мгц сразу видны, сразу отображаются коды кнопок, а стоит добавить myOLED.print( mySwitch.getReceivedValue()); то один раз стабильно получает и выводит на экран а дальше надо чуть ли не в притык к антене нажимать кнопки на пульте чтобы поймать что то.
вот код
#include <Adafruit_GFX.h> #include <RCSwitch.h> #include <iarduino_OLED_txt.h> iarduino_OLED_txt myOLED(0x3C); // extern uint8_t MediumFontRus[]; RCSwitch mySwitch = RCSwitch(); void setup() { Serial.begin(9600); myOLED.begin(); myOLED.setFont(MediumFontRus); myOLED.setCoding(TXT_UTF8); myOLED.setCursor(25,4); myOLED.print( "СКАНЕР",OLED_C, 2); myOLED.print( "433Мгц",OLED_C, 5); delay(2000); myOLED.clrScr(); mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2 } void loop() { if (mySwitch.available()) { Serial.println( mySwitch.getReceivedValue() ); myOLED.print( mySwitch.getReceivedValue(),0,4 ); mySwitch.resetAvailable(); } }
А функция getReceivedValue() очищает буфер?
А то создается впечатление, что Вы, если в буфере обнаружен один символ, пытаетесь считать из него сразу два.
А функция getReceivedValue() очищает буфер?
А то создается впечатление, что Вы, если в буфере обнаружен один символ, пытаетесь считать из него сразу два.
нужно очищать?
нужно очищать?
вы не поняли.
Функцию getReceivedValue() можно использовать только раз. Как только вы ее запустили в строке 24 - она берет значение из буфера и чистит его. Поэтому когда вы пытаетесь прочитать это значение вторично в строке 25 - там уже ничего нет.
Не печатайте данные непосредственно из функции getReceivedValue(), вместо этого сохраните их в переменную и печатайте сколько угодно раз.
нужно очищать?
вы не поняли.
Функцию getReceivedValue() можно использовать только раз. Как только вы ее запустили в строке 24 - она берет значение из буфера и чистит его. Поэтому когда вы пытаетесь прочитать это значение вторично в строке 25 - там уже ничего нет.
Не печатайте данные непосредственно из функции getReceivedValue(), вместо этого сохраните их в переменную и печатайте сколько угодно раз.
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
нужно очищать?
вы не поняли.
Функцию getReceivedValue() можно использовать только раз. Как только вы ее запустили в строке 24 - она берет значение из буфера и чистит его. Поэтому когда вы пытаетесь прочитать это значение вторично в строке 25 - там уже ничего нет.
Не печатайте данные непосредственно из функции getReceivedValue(), вместо этого сохраните их в переменную и печатайте сколько угодно раз.
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
давайте проверим, кто не понял. Закомментируйте вывод в Сериал (24 строчку), а вывод на экран (строку 25) оставьте.
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
давайте проверим, кто не понял. Закомментируйте вывод в Сериал (24 строчку), а вывод на экран (строку 25) оставьте.
сейчас
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
давайте проверим, кто не понял. Закомментируйте вывод в Сериал (24 строчку), а вывод на экран (строку 25) оставьте.
все так же. если отсавить 24 то в мониторе коды от пульта прям так и летят даже с расстояния
но стоит включить 25 даже убрав 24, я ловлю 1 нажатие сразу, дальше нужно уже в притык модуля нажимать на кнопки чтоб перехватывать значения и выводить на экран
а строчки 15 и 16 в сетапе, которые выводят подписи на экран - не мешают приему? Или когда вы принимаете в Сериал. вы их тоже убираете?
Вы немножко не поняли. Когда я вывожу данные просто в монитор и нажимаю на кнопки пульта то данные сразу появляются и при нажатии разных кнопок меняются но стоит мне задействовать 25 строчку, нажимаю на пульте кнопку , вывожу пойманный код, потом уже приходится чуть ли не в плотную подносить пульт к приемнику чтобы поймать что то. Я к тому что может ли что то мешать? если это стандартный код rcswitch библиотеки, вывод данных от пультов, но стоит сделать вывод на экран и все, надо уже танцевать у приемника чтоб он словил. без использования строки кода 25, он сразу видит что я нажал на пульт даже если отошел на несколько метров.
давайте проверим, кто не понял. Закомментируйте вывод в Сериал (24 строчку), а вывод на экран (строку 25) оставьте.
Видео
https://yadi.sk/d/Ug_Y5eXNDqFT3g
а строчки 15 и 16 в сетапе, которые выводят подписи на экран - не мешают приему? Или когда вы принимаете в Сериал. вы их тоже убираете?
убирал тоже но все равно
а если луп записать так:
а если луп записать так:
тоже самое, пока пульт впритык к антене не поднести он будто не видит ничего. выше видео залил
а строчки 15 и 16 в сетапе, которые выводят подписи на экран - не мешают приему? Или когда вы принимаете в Сериал. вы их тоже убираете?
убирал тоже но все равно
Отвечайте, пожалуйста, четче. Убирате или нет?
Вот Вы пишете, что когда 25 строка убрана, "в Сериал коды прям так и летят". - В этом случае строки 15 и 16 есть или убраны?
а строчки 15 и 16 в сетапе, которые выводят подписи на экран - не мешают приему? Или когда вы принимаете в Сериал. вы их тоже убираете?
убирал тоже но все равно
Отвечайте, пожалуйста, четче. Убирате или нет?
Вот Вы пишете, что когда 25 строка убрана, "в Сериал коды прям так и летят". - В этом случае строки 15 и 16 есть или убраны?
15 и 16 есть, не убирал и в монитор так и летят коды, стоит 25 вернуть (даже если уберу или оставлю 24) происходит вот этот тупняк, первый код сразу ловит а дальше надо впритык к антене пульт нести
Паузу поставьте между 25 и 26 строкой.
Паузу поставьте между 25 и 26 строкой.
безрезультатно
да... тогда не знаю.
Попробуйте поэкспериментировать с 25 строчкой сами - поменять положение на экране, выводить в нее не принятый код, а какие-то иные данные...
Еще приемник подальше от экрана поместите. Первый прием у Вас идет с чистым экраном, а как на него выводится - приемник помирает. Возможно где-то фонит на близких частотах. Возможно в гармониках.
Еще приемник подальше от экрана поместите. Первый прием у Вас идет с чистым экраном, а как на него выводится - приемник помирает. Возможно где-то фонит на близких частотах. Возможно в гармониках.
просто если все в один корпус потом собирать как далеко ставить то, я думал про гармоники но все равно как то странно получается стоит только вывести в экран прием с пультов, первый прием норм и все потом глохнет, надо к антене подносить даже при большом куске провода антены
просто если все в один корпус потом собирать как далеко ставить то, я думал про гармоники но все равно как то странно получается стоит только вывести в экран прием с пультов, первый прием норм и все потом глохнет, надо к антене подносить даже при большом куске провода антены
Просто, если в один корпус собирать, то надо будет продумать вопрос защиты от электромагнитных помех. Про это книги написаны - читайте. А первая проверка - подальше приёмник от OLED экрана и экранированные провода.
Еще приемник подальше от экрана поместите. Первый прием у Вас идет с чистым экраном, а как на него выводится - приемник помирает. Возможно где-то фонит на близких частотах. Возможно в гармониках.
эх.. отдалил но так и не помогло
эх.. отдалил но так и не помогло
"Защита от электромагнитных помех." Надо выучить назубок. А иначе только мультивибратор можно сделать, да и то максимум на звуковой частоте.
эх.. отдалил но так и не помогло
"Защита от электромагнитных помех." Надо выучить назубок. А иначе только мультивибратор можно сделать, да и то максимум на звуковой частоте.
Короче говоря кажись что то было не то с arduino не пойму что правда) вроде рабочая, перенес все на другую и все норм работает)