Задать вопрос
@HelSay

Как общаться Arduino и Android'у, при помощи App Inventor и Bluetooth HC-06?

Привет, хочу управлять роботом с телефона, при помощи bluetooth. Приложение делаю в App Inventor'е. Как мне отправлять и принимать несколько значений? В App Inventor есть функция SendBytes, в неё нужно засунуть list, я создаю лист и сую туда 2 значения, но что-то не так). (на фото ещё видны всякие расчёты и прочее, это всё работает, как надо). 5c052b5f3cfda017397268.png А вот программа arduino, которая принимает значения и выводит на экран.
byte val[2];
int joyDeg, joyPow;

void setup() {
  Serial.begin(9600);
}

void loop() {
  //Проверяем не пришло ли чего и записываем значения
  
 if (Serial.available() > 0) {
    for (byte i = 0; i < 2; i++) {
      val[i] = Serial.read();
    }
    joyDeg = val[1];
    joyPow = val[0];
 }
 //----------------------------------------------

//Выводим значения в Serial
 if ((millis() % 1000) == 0) {
 Serial.print("Pow: ");
 Serial.println(joyPow);
 Serial.println(joyDeg);
 Serial.println("--------");
 }
 //-----------------------------------------------
}


Вот что в Serial'е 5c052ab6946f0119700707.png
1 значение приходит верно, а 2-е - всегда 255.

И что делать, если я захочу отправлять ещё значений?

Спасибо)
  • Вопрос задан
  • 1596 просмотров
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
@kn0ckn0ck
Продюсер
Слушай, ну тут вопрос типов данных. Вот ты делаешь "make a list" и потом SendBytes - как по-твоему оно упаковывает этот лист каких-то значений в байтовый вектор? Вот здесь зарыт ответ.

Потом ты считываешь только два байта всегда, думаешь что это твои Pow и Deg. Но судя по циклу, там какие-то float значения, не меньше. float значения сколько байт занимают?

Короче, что делать:
1. пишешь короткую программу, которая отсылает через BT понятные значения тех типов, с которыми ты работаешь в AppInventor
2. на стороне Arduino ВСЕ полученные байты кидаешь в Serial Monitor и пытаешься понять, как же AppInventor твои значения сериализует в байтовый вектор.

Когда поймешь как это происходит, то сможешь написать нормальный код для получения именно твоих значений. Вуаля!
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы