Arduino nano и Bluetooth-модуль
- Войдите на сайт для отправки комментариев
Чт, 04/08/2016 - 21:21
Здравствуйте, надеюсь на вашу помощь.
Программа должна принимать строки по "Serial" и обрабатывать их в соответствии с этими самыми строками.
Проблема в том, что по "юсб" и с монитором порта все работает как надо, а при передаче данных по синезубу плата никак не реагирует.
Думал что неправильные данные передаю по синезубу, записал принимаемую строку в еепром, после чего ее вывел, и она была правильной. Так почему же ардуинка не реагирует на принимаемые данные по синезубу?
Часть скетча ардуинки:
void setup() { Serial.begin(9600); } void loop() { while (Serial.available()) { delay(1); if (Serial.available() > 0) { char c = Serial.read(); readString += c; } } if (readString.length() > 0) { if (readString.substring(0, 6) == "motion") { String one; String two; String three; int z = 0; char m[30]; readString.toCharArray(m, 30); for (int i = 7; i < 30; i++) { if (m[i] == ',') { z++; } if (z == 0 && m[i] != ',') { one += m[i]; } if (z == 1 && m[i] != ',') { two += m[i]; } if (z == 2 && m[i] != ',') { three += m[i]; } if (z == 3) { m[i] = 1; } } motion(one.toInt(), two.toInt(), three.toInt()); readString = ""; }
Опять же повтрорюсь, при подключении через монитор порта все работает как часы, а через блютуз не фурычит :(.
Часть "передающего" строку кода
OutputStream outStream = clientSocket.getOutputStream(); outStream.write(mess.getBytes(Charset.forName("UTF-8")));
где mess - String.
Общий вид строки - simple 0, 0, 0
Если со стандартными прошивками --- скорость поставь 38400.
Вчера тоже дро...лся с этим модулем, но недолго.
Проблема решилась, написал немного другой "обработчик" и все заработало. Мб кому поможет.
Общий вид строки - $simple string$. Где после второго символа '$' осуществляется переход в функцию "pr()".
В функции "pr()" необходимо выполнить операцию par = "".
Все это дело работало на 9600 бодах.