Помогите реализовать

Не получается правильно считать данные из UART

Вопросы от новичков
Ответить
paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#1

Сообщение paska » 08.02.2020{, 21:02}

Добрый День!
Есть датчик расстояний TF mini plus
который определяет расстояние до 12м.

Есть для него стандартный рабочий код:
СпойлерПоказать
Выдержка из скетча:
плата ESP8266 WeMos mini

SoftwareSerial swSer(2,3);
const int HEADER=0x59;
....
if (swSer.available())
{
if (swSer.read()==HEADER)
{
uart[0]=HEADER;
if (swSer.read()==HEADER)
{
uart[1]=HEADER;
for(i=2;i<9;i++)
{
uart=swSer.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
if (uart[8]==(check&0xff))
{
dist=uart[2]+uart[3]*256;
strength=uart[4]+uart[5]*256;
...

Serial.print("Distance= ");
Serial.print(dist);
Serial.print('\t');
Serial.print("Strength= ");
Serial.print(strength);
Serial.print('\n');
delay(50);


Как правильно реализовать этот код в программе FlProg ? или может просто вписать его после компиляции?

Полный тестовый скетч:
СпойлерПоказать
Описание:
Определяем расстояние, и если оно меньше 1 м, то включается pin 'foto"

#include <SoftwareSerial.h>

#define BAUD_RATE 115200

SoftwareSerial swSer(2,3);


int uart[9];
int dist;
int strength;
int check;
int i;
const int HEADER=0x59;
int minimum;
int maximum;
int a;
int b;
int foto = 0;


void setup() {
pinMode(foto, OUTPUT);
Serial.begin(115200);

minimum = 0;
maximum = 100;




// Подключаем СофтСериал
swSer.begin(115200);

Serial.println("\nSoftware serial test started");
}

void loop() {

if (swSer.available())
{
if (swSer.read()==HEADER)
{
uart[0]=HEADER;
if (swSer.read()==HEADER)
{
uart[1]=HEADER;
for(i=2;i<9;i++)
{
uart=swSer.read();
}
check=uart[0]+uart[1]+uart[2]+uart[3]+uart[4]+uart[5]+uart[6]+uart[7];
if (uart[8]==(check&0xff))
{
dist=uart[2]+uart[3]*256;
strength=uart[4]+uart[5]*256;

if (dist < minimum or dist > maximum){
Serial.println("ALARM");
digitalWrite(foto,HIGH);
}
else{
digitalWrite(foto,LOW);
Serial.print("Distance= ");
Serial.print(dist);
Serial.print('\t');
Serial.print("Strength= ");
Serial.print(strength);
Serial.print('\n');
delay(50);
}
}



}
}

}


}

paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#2

Сообщение paska » 09.02.2020{, 21:18}

Отвечу себе )
Попробовал сделать ПБ (Пользовательский блок) - с первой попытки удалось, вставил рабочий скетч, и всё заработало.
Теперь хотелось бы правильно прикрутить вход (SoftwareSerial) на который приходит информация с датчика.
Выкладываю своё творение ПБ здесь, для его дальнейшего допиливания.
Никакого описание кк нему пока не делал, т.к. надеюсь он (этот ПБ) станет более "правильным" и функциональным.
ПБ радар.jpg
ПБ радар.jpg (15.86 КБ) 697 просмотров
Вложения
Radar_TF_mini_(CODE).ubi
(20.67 КБ) 42 скачивания

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Помогите реализовать

#3

Сообщение rw6cm » 09.02.2020{, 22:47}

paska писал(а):
09.02.2020{, 21:18}
Теперь хотелось бы правильно прикрутить вход (SoftwareSerial) на который приходит информация с датчика.
Не понял :smile37:
В блоке уже прикручен к датчику софт на 2,0,пин
О каком софте еще речь? Может Вы хотели вывести пины софта в настройку блока?
Win10-64, FLProg (portable)

paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#4

Сообщение paska » 09.02.2020{, 23:01}

rw6cm писал(а):
09.02.2020{, 22:47}
О каком софте еще речь? Может Вы хотели вывести пины софта в настройку блока?
О-Да, чтобы не привязываться к пинам, а иметь возможность настроить их под себя.
И чтобы SoftwareSerial также не был бы жёстко прописан в самом блоке.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Помогите реализовать

#5

Сообщение rw6cm » 09.02.2020{, 23:39}

paska писал(а):
09.02.2020{, 23:01}
Да, чтобы не привязываться к пинам, а иметь возможность настроить их под себя.
Двойной клик по блоку и меняйте в настройке.
Radar_TF_mini_(CODE).ubi
(21.96 КБ) 43 скачивания
paska писал(а):
09.02.2020{, 23:01}
И чтобы SoftwareSerial также не был бы жёстко прописан в самом блоке.
для этого нужен другой блок под Хард сериал
Radar_TF_mini_Hard_(CODE).ubi
(19.76 КБ) 47 скачиваний
Win10-64, FLProg (portable)

paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#6

Сообщение paska » 09.02.2020{, 23:50}

rw6cm писал(а):
09.02.2020{, 23:39}
paska писал(а):
09.02.2020{, 23:01}
Да, чтобы не привязываться к пинам, а иметь возможность настроить их под себя.
Двойной клик по блоку и меняйте в настройке.
Radar_TF_mini_(CODE).ubi
paska писал(а):
09.02.2020{, 23:01}
И чтобы SoftwareSerial также не был бы жёстко прописан в самом блоке.
для этого нужен другой блок под Хард сериал
Спасибо за помощь!
^_^

Аватара пользователя
rw6cm
Полковник
Сообщения: 2284
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 335
Имя: Владимир

Помогите реализовать

#7

Сообщение rw6cm » 09.02.2020{, 23:55}

paska,
Добавил выше на нард сериал
Win10-64, FLProg (portable)

Ingwar
Полковник
Сообщения: 1929
Зарегистрирован: 28.10.2015{, 22:47}
Репутация: 223
Откуда: Ленобласть
Имя: Игорь

Помогите реализовать

#8

Сообщение Ingwar » 10.02.2020{, 08:12}

Осталась решить, кто из вас перенесет/создаст тему в соответствующем разделе).
Люди в своем большинстве живо интересуются всем на свете, за исключением того, что действительно стоит знать.

paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#9

Сообщение paska » 10.02.2020{, 09:55}

rw6cm писал(а):
09.02.2020{, 23:55}
Добавил выше на нард сериал
:yes: Спасибо, вечером посмотрю!
Ingwar писал(а):
10.02.2020{, 08:12}
Осталась решить, кто из вас перенесет/создаст тему в соответствующем разделе).
Оттестирую, обязательно добавлю :peace:

paska
Рядовой
Сообщения: 20
Зарегистрирован: 20.01.2018{, 20:59}
Репутация: 2

Помогите реализовать

#10

Сообщение paska » 14.02.2020{, 18:37}

Создал соответствующую ветку тут

Ответить

Вернуться в «Начинающим»