Чтение данных по Serial и вывод на монитор
- Войдите на сайт для отправки комментариев
Ребята всем привет, нужна ваша помощь.
В общем есть Самодельный круиз контроль, сейчас захотелось сделать экранчик на ардуино чтоб показывала скорость стабилизации, текущую скорость и скорость пользователя.
Круиз контроль шлет через Serial данные, их принимаю на мониторе ардуино вот в таком виде
192
32
32
48
32
32
48
32
53
57
2
0
0
0
1
100
0
0
0
0
0
0
13
10
172
... далее циклический повторяется. Каждая строка выводится за один цикл.
вот здесь Формат для UART.
http://oklik.name/proect/kk/e_gaz/uart_data.txt
Сам пока разобрался по таблице кодировка ASCII (http://gimnnik.narod.ru/open-office/TextProcessor/p5a..) что
192 это адрес.
следующие
32/ 32/ 48 —> пробел/пробел/0
т.е текущая скорость 0 км/ч
следующие
32/ 32/ 48 —> пробел/ пробел/0
т.е скорость стабилизации 0 км/ч
следующие
32/ 53/ 57 —> пробел/5/ 9
т.е скорость пользователя 59км/ч
Моя задача вывести на сериал монитор эти данные
текущая скорость 0 км/ч
скорость стабилизации 0 км/ч
скорость пользователя 59км/ч
каким образом это можно сделать при помощи ардуино, я пытался по разному но она мне постоянно вытаскивает на монитор -1 уже не знаю как быть
считывал таким образом
----------------------------------------------
int dan = 0;
void setup()
{
Serial.begin(9600);
Serial.setTimeout(2000);
}
void loop()
{
if (Serial.available() > 0)
{
dan = Serial.read();
Serial.println(dan, DEC);
}
}
--------------------------------------------------
Дальше по аналогии.
192 - признак начала пакета данных, 172 - контрольная сумма
24 байта после признака начала пакета данных запишите в массив и потом выбирайте из массива нужные вам байты согласно Формата для UART.
а разве не надо синхронизировать запись в буфер по 192 ? передача байтов идёт непрерывно же......
Спасибо!!! Всё работает получил вот такие данные
И выдает он мне вот такие вот косячки
Столкнулся с той же проблемой. Использую скетч что выше от Penni но мне надо вывести данные не в сериал а на дисплей. Вторую неделю ломаю голову, не выходит. Помогите плиз.
над чем ломаешь голову. что не выходит, в чем помочь - ничего не ясно.
Для начала неплохо было бы выложить скетч, который ты написал для дисплея
Попробую объяснить. Сделал круиз контроль что и старттопик. КК выдаёт по УАРТ информацию о режимах и скоростях. Есть желание эту инфу вывести на дисплей. Есть такой скетч, но он отправляет в УАРТ а мне надо на дисплей. Если быть точнее то в дисплей NEXTION. Скетч создаю в FLProg и кусок это скетча хочу сделать как пользовательский блок. Скетча для дисплея не получается ни как. Как переделать Serial.print на переменную. Надеюсь понятно объяснил, спасибо.
void setup() {
Serial.begin(9600);
}
void loop() {
char buff[25]; // буфер для чтения всего сообщения
Serial.readBytes(buff, 25); // читаем в буфер если есть что читать.
char spd[3];
memcpy(spd, &buff[1], 3);
Serial.print(spd); // текущая скорость
memcpy(spd, &buff[4], 3);
Serial.print(spd); // скорость стабилизации
memcpy(spd, &buff[7], 3);
Serial.print(spd); // пользовательская скорость
}
Zviadovca, с машиной вы так же, как и с форумом - запрыгиваете, начинаете на все давить, крутить все ручки и жать все педали в беспорядке?
Как переделать Serial.print на переменную. Надеюсь понятно объяснил, спасибо.
не, нифига не понятно.
во-первых, вставляйте код по правилам форума. а то вас никто и слушать не станет.
Что нужно переделать на переменную? Вот у тебя в коде Serial.print(spd) - это разве не переменная?
Ну зачем вы так. Я прошу помощи или совета. На форумах я не сижу, как правило дохожу до всего сам. Сейчас реально бъюсь головой об стену. Ступор какой то.
Как бы вы прикрутили к этому скетчу дисплей OLED 0.96
В сетапе проинициализировал дисплей, в лупе выводил в сериал и дисплей одну и туже строку.
У любого форума есть правила. Вы их не удосужились узнать, сразу начали действовать как попало.