Arduino bluetooth HC 06
- Войдите на сайт для отправки комментариев
Вс, 13/12/2020 - 13:39
Доброго времени суток.
Есть такой вопрос.
Как можно разделить данные приходящие с android устройства через HC06 на arduino, например 124 127 100 125.
124 это номер ячейки массива в 127 это знак. Данные приходят пачкой, надо их разделить.
придумать протокол с началом и концом пакета данных
Пример приведите пожалуйста, если несложно.
Проще Вам написать, как Вы делаете, а мы посмотрим и, возможно, что-нибудь посоветуем.
Например, два нуля подряд это разделитель.
Дело в том, что данные на Arduino отправляются пачками, при приёме, serial.read принимает первую или последнюю.
что значит "отправляются" ? кто их отправляет, не Вы?
вставьте код по правилам форума
#include <FastLED.h> #define LED_PIN 6 #define NUM_LEDS 100 CRGB leds[NUM_LEDS]; const unsigned int DIM1 = 123; const unsigned int DIM2 = 1; const unsigned int DIM3 = 3; int ary[DIM1][DIM2][DIM3]; void setup() { Serial.begin(9600); FastLED.addLeds<WS2812, LED_PIN, GRB>(leds, NUM_LEDS); } void loop() { if(Serial.available()){ int val=Serial.read(); delay(800); int chess=val; //переменная для номера светодиода if(Serial.available()){int color=Serial.read(); //переменная для цвета светодиода if(color>0){ if(color==124){ ary[chess][1][1]=0; ary[chess][1][2]=255; ary[chess][1][3]=0; leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]); FastLED.show(); } if(color==125){ ary[chess][1][1]=255; ary[chess][1][2]=0; ary[chess][1][3]=0; leds[chess]=CRGB(ary[chess][1][1],ary[chess][1][2],ary[chess][1][3]); FastLED.show(); }}} } }При приеме Serial.read() принимает все, что ему приходит.
Есть ли функция которая считывает каждый отдельный байт?
http://arduino.ru/Reference/Serial
Есть ли функция которая считывает каждый отдельный байт?
serial.read()
попробуйте внятно ответить, нафига у вас в середине кода делей аж на 800 мс?
800 мс - по меркам компьютера просто вечность, за это время у вас все остальные данные успевают протухнуть, поэтому у вас принимается только один пакет.
Но это не все. Когда вы решите проблему с задержкой, вылезет главный затык - то что у вас нет признака начала данных и невозможно отличить, где конец одного пакета и начало другого