Мусор в Serial-порте. Подключение Bluetooth HC-05 к Iskra Mega.
Все привет!
Пытаюсь подружить HC-05 с Iskra Mega (аналог Arduino Mega). Блютус подсоединил к порту Serial2. Для проверки на смартфон написал тестовую программку. Но для отладки использую Serial Bluetooth Terminal, установленный из плей маркета. Когда посылаю что-нибудь (символ "1" или "0"), то после этого начинает постоянно валиться мусор и число байт постоянно 63.
Вот код:
- int inByte=0;
- int LED = 13;
- int counter=0;
- void setup()
- {
- //Serial.begin(9600);
- Serial2.begin(9600);
- pinMode(LED, OUTPUT);
- digitalWrite(LED, HIGH);
- }
- void loop()
- {
- while(Serial2.available()>0)
- {
- int avail=Serial2.available();
- inByte = Serial2.read();
- // При символе "1" включаем светодиод
- if ((char)inByte == '1')
- {
- digitalWrite(LED, HIGH);
- }
- // При символе "0" выключаем светодиод
- if ( (char)inByte == '0')
- {
- digitalWrite(LED, LOW);
- }
- if ((char)inByte == '1' || ((char)inByte == '0'))
- {
- Serial2.println("Recieved: "+String(counter));
- counter++;
- }
- else
- {
- Serial2.println("Unknown data: "+String(inByte)+" Available bytes:"+String(avail));
- //Serial.println("Unknown data: "+String(inByte)+" Available bytes:"+String(avail)); //в монитор порта
- }
- }
- }
Пробовал разные порты, но результат тот же.
Причем если этот же код (заменив Serial2 на Serial и подключив к соответсвующим выводам) загрузить в китайскую nano, то все работает. Может кто знает куда копать?
3
11
Вам це подобається? Поділіться в соціальних мережах!
- Останні коментарі
- AK01 квітня 2025 р. 11:41Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
- VP09 березня 2025 р. 16:14Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…
- Тепер обговоріть на форумі
- DT14 квітня 2025 р. 15:38Всем привет! На Qt 6.8 MinGW пытаюсь сделать управление подключением WiFi из программы. Пока делаю поддержку Windows, но так же хочу в дальнейшем внедрить и поддержку Linux/MacOS. Для…
- f15 лютого 2025 р. 13:46Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
- Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
- Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
Добрый день!
Увы, я новичок в Ардуино, но постараюсь помочь. Простите если что-то написал не так.
Функция void loop() запускается "по кругу". Исполняется и опять запускается. У Вас в строках 29,30 при получении какого-либо ответа inByte будет выводится номер этой иттерации с переменной counter. Попробуйте вообще убрать строки 29,30 и переменную counter. Если подключение не успешно, отработают строки 34,35.
Еще поскольку функция цыклична, у Вас будет отправлять эту 1 условно 100 раз в секунду. Я бы написал отдельную функцию подключения my_connect(){...... return true} и вызвал бы ее в void setup() и в случае ((char)inByte !== '1'. Тогда 1 раз будет подключение и вызов если оно отпалою И не будет посылаться мусор.
Спасибо, я немного не так сделал: закомментировал строки 34 и 35. Стало больее приближенно к реальности, но все равно в сериал приходят не всегда те данные: т.е. символы 0 или 1 могут превратиться в нечто другое. Приходится несколько раз отсылать, пока правильно считается. Попробовал на китайской Arduino Mega - результат тот же. Или придет правильно, а за ним тут же число 255 (знак вопроса в другую сторону). Что-то я не знаю про Serial.
Нашел решение. Пусть здесь будет:
В самом начале нужно вставить. И сразу заработало как часы.