Помогите соединить два скетча
- Войдите на сайт для отправки комментариев
Сб, 22/01/2022 - 16:49
Есть два кода, один для сервопривода, другой для амперметра, каждый выводит данные в ексель, никак не могу написать код, просто ничего не работает
Вот код для сервопривода
#include <Servo.h> // подключение библиотеки Servo
Servo servo1;//
Servo servo2;// газ
const int pinServo1=10; // Пин для подключения сервопривода
const int pinServo2=11; // Пин для подключения сервопривода
const int POT1=0; // Аналоговый вход 0 для подключения потенциометра
const int POT2=1; // Аналоговый вход 1 для подключения потенциометра
int row_excel = 0; // количество строк
int valpot1 = 0; // переменная для хранения значения потенциометра
int valpot2 = 0; // переменная для хранения значения потенциометра
int angleServo1 = 0; // переменная для хранения угла поворота сервы
int angleServo2 = 0; // переменная для хранения угла поворота сервы
void setup()
{
Serial.begin(9600); // инициализируем последовательный порт, скорость 9600
Serial.println("CLEARDATA"); // очистка листа excel
Serial.println("LABEL,Time,angleServo1, angleServo2, row_excel, , , "); // заголовки столбцов
// подключить переменную servo к выводу pinServo
servo1.attach(pinServo1);
servo2.attach(pinServo2);
}
void loop()
{
valpot1 = analogRead(POT1); // чтение данных потенциометра
valpot2 = analogRead(POT2); // чтение данных потенциометра
// масштабируем значение к интервалу 0-180
angleServo1=map(valpot1,0,1023,0,180);
angleServo2=map(valpot2,0,1023,0,180);
// поворот сервопривода на полученный угол
servo1.write(angleServo1);
servo2.write(angleServo2);
row_excel++; // номер строки + 1
Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени
Serial.print(angleServo1);
Serial.print(",");
Serial.print(angleServo2);
Serial.print(",");
Serial.println(row_excel);
delay (500);
}
Вот для амперметра
#include <PZEM004Tv30.h>
PZEM004Tv30 pzem(8,9); // Software Serial pin 8 (RX) & 9 (TX)
int row_excel = 0; // количество строк
void setup() {
Serial.begin(9600);
Serial.println("CLEARDATA"); // очистка листа excel
Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF "); // заголовки столбцов
}
void loop() {
float voltage = pzem.voltage();
if(voltage != NAN){
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.println("V");
} else {
Serial.println("Error reading voltage");
}
float current = pzem.current();
if(current != NAN){
Serial.print("Current: ");
Serial.print(current);
Serial.println("A");
} else {
Serial.println("Error reading current");
}
float power = pzem.power();
if(current != NAN){
Serial.print("Power: ");
Serial.print(power);
Serial.println("W");
} else {
Serial.println("Error reading power");
}
float energy = pzem.energy();
if(current != NAN){
Serial.print("Energy: ");
Serial.print(energy,3);
Serial.println("kWh");
} else {
Serial.println("Error reading energy");
}
float frequency = pzem.frequency();
if(current != NAN){
Serial.print("Frequency: ");
Serial.print(frequency, 1);
Serial.println("Hz");
} else {
Serial.println("Error reading frequency");
}
float pf = pzem.pf();
if(current != NAN){
Serial.print("PF: ");
Serial.println(pf);
} else {
Serial.println("Error reading power factor");
}
Serial.println();
row_excel++; // номер строки + 1
Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени
Serial.print(voltage);
Serial.print(",");
Serial.print(current);
Serial.print(",");
Serial.print(power);
Serial.print(",");
Serial.print(energy,3);
Serial.print(",");
Serial.print(frequency, 1);
Serial.print(",");
Serial.println(pf);
Serial.print(",");
Serial.println(row_excel);
delay(1000);
}
Подскажите способы как их соединить, я пробовал и просто все в один код написать и использовать два потока ничего не выходит
А что должно получиться-то?
Так-то их нетрудно соединить - командой cat.
Я бы поставил вопрос иначе:
-Чего ты желаешь, на самом деле, научиться соединять такие коды или соединить эти два кода?
Должен получиться скетч на одной ардуинке через который можно управлять сервоприводом и получать данные от датчика pzem004t
Хочу научиться ведь мне нужно будет дальше соединять скетчи
мне нужно будет дальше соединять скетчи
Сомнительный тезис.
Мне вот за многие годы ни разу не понадобилось.
Хочу научиться ведь мне нужно будет дальше соединять скетчи
Подскажите способы как их соединить, я пробовал и просто все в один код написать и использовать два потока ничего не выходит
А я знаю что мне понадобиться, так что помощь будет?
так что помощь будет?
Конечно, нет. Вы не просили ни о какой помощи. Чтобы была помощь, нужно прочитать правила форума - в первой теме раздела Песочница - и правильно задать вопрос.
У Вас же нет никакой просьбы о помощи. Где Ваш объединённый скетч? Какие именно с ним проблемы? Вы не привели скетча и не задали никаких вопросов.
Вы хотите, чтобы кто-то просто сделал всю работу за Вас? Ну, тогда это не помощь Это заказ. В платном разделе за денюшку.
вот пробовал соединить через два потока, серво не работает, амперметр тоже
#include <PZEM004Tv30.h> #include <Servo.h> // подключение библиотеки Servo #include <Thread.h> // подключение библиотеки ArduinoThread PZEM004Tv30 pzem(8,9); // Software Serial pin 11 (RX) & 12 (TX) Servo servo1;// повітря Servo servo2;// газ Thread sThread = Thread(); // создаём поток управления светодиодом Thread aThread = Thread(); // создаём поток управления сиреной const int pinServo1=10; // Пин для подключения сервопривода const int pinServo2=11; // Пин для подключения сервопривода const int POT1=0; // Аналоговый вход A0 для подключения потенциометра const int POT2=1; // Аналоговый вход A0 для подключения потенциометра int row_excel = 0; // количество строк int valpot1 = 0; // переменная для хранения значения потенциометра int valpot2 = 0; // переменная для хранения значения потенциометра int angleServo1 = 0; // переменная для хранения угла поворота сервы int angleServo2 = 0; // переменная для хранения угла поворота сервы void setup() { sThread.onRun(s); // назначаем потоку задачу sThread.setInterval(1000); // задаём интервал срабатывания, мсек aThread.onRun(a); // назначаем потоку задачу aThread.setInterval(20); // задаём интервал срабатывания, мсек servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(9600); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { if (sThread.shouldRun()) sThread.run(); // запускаем поток // Проверим, пришло ли время сменить тональность сирены: if (aThread.shouldRun()) aThread.run(); // запускаем поток } void s() { float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времен Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy,3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); } void a() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1=map(valpot1,0,1023,0,180); angleServo2=map(valpot2,0,1023,0,180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времен Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); }Можно и помочь, пациент вроде не безнадежен, нет?
------------------
Не забивай себе голову дурацкими библиотеками пока. У тебя две задачи, одна из них постоянно читает нечто (потенциометр), а другая просто раз в сек печатает, так? Вторую оформи так, как моргают диодиком в "блинк без делей". На фоне работы первой.
Если напишешь, что не понял... будет жаль ;)))))
Спасибо за ответ, сейчас иду пробовать
Ух ты! Есть библиотеки для разделения потоков!
В исходных скетчах вроде всё просто для объединения и без. Может не работает из-за несовместимости библиотек?
Вот этот пример не поможет?
http://arduino.ru/forum/programmirovanie/obedinenie-dvukh-sketch-kodov#c...
Кажется что код рабочий, амперметр читает раз в две секунды, но данных просто нет, а сервопривод крутится до упора и не работает (по отдельности все работает)
#include <PZEM004Tv30.h> #include <Servo.h> // подключение библиотеки Servo PZEM004Tv30 pzem(8,9); // Software Serial pin 11 (RX) & 12 (TX) Servo servo1;// повітря Servo servo2;// газ const int pinServo1=10; // Пин для подключения сервопривода const int pinServo2=11; // Пин для подключения сервопривода const int POT1=0; // Аналоговый вход A0 для подключения потенциометра const int POT2=1; // Аналоговый вход A0 для подключения потенциометра int row_excel = 0; // количество строк int valpot1 = 0; // переменная для хранения значения потенциометра int valpot2 = 0; // переменная для хранения значения потенциометра int angleServo1 = 0; // переменная для хранения угла поворота сервы int angleServo2 = 0; // переменная для хранения угла поворота сервы long previousMillis = 0; long interval = 2000; void setup() { servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(9600); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1=map(valpot1,0,1023,0,180); angleServo2=map(valpot2,0,1023,0,180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); Serial.println(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy,3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); Serial.print(","); Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); } }Вот этот пример не поможет?
Спасибо, сейчас попробую
Вот этот пример не поможет?
Честно я там ничего не понял, спасибо за помощь, но для меня там слишком тяжело
// avtomat const int ledPin = LED_BUILTIN; const long interval = 1000; // int state = LOW; unsigned long past = 0; void stand(int s) { past = millis(); state = s; switch (state) { case LOW: digitalWrite(ledPin, LOW); break; case HIGH: digitalWrite(ledPin, HIGH); break; } } void run() { switch (state) { case LOW: if (millis() - past >= interval)stand(HIGH); break; case HIGH: if (millis() - past >= interval)stand(LOW); break; } } //------------------- void setup() { pinMode(ledPin, OUTPUT); stand(LOW); } void loop() { run(); }Так что забросьте непосильное Вам дело.
Кажется что код рабочий, амперметр читает раз в две секунды, но данных просто нет, а сервопривод крутится до упора и не работает (по отдельности все работает)
А библиотеки совместимы?
Выбросьте часть кода в лууп про амперметр - сервы будут правильно крутиться?
попробуй перенести сервы на 6 и 7 пины
Не поможет, тогда еще можно закинуть локально библиотеку SoftwareSerial.h и поправить чуток
Да! Есть некоторое количество ошибок, я поправил их, как мог, попробуй, не взлетит надо будет думать
#include <PZEM004Tv30.h> #include <SoftwareSerial.h> uint8_t PZEM_RX_PIN = 8; uint8_t PZEM_TX_PIN = 9; SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN); PZEM004Tv30 pzem(pzemSWSerial); // Software Serial pin 8 (RX) & 9 (TX) #include <Servo.h> // подключение библиотеки Servo uint8_t pinServo1 = 6; // Пин для подключения сервопривода uint8_t pinServo2 = 7; // Пин для подключения сервопривода Servo servo1;// повітря Servo servo2;// газ const int POT1 = 0; // Аналоговый вход A0 для подключения потенциометра const int POT2 = 1; // Аналоговый вход A0 для подключения потенциометра int row_excel = 0; // количество строк int valpot1 = 0; // переменная для хранения значения потенциометра int valpot2 = 0; // переменная для хранения значения потенциометра int angleServo1 = 0; // переменная для хранения угла поворота сервы int angleServo2 = 0; // переменная для хранения угла поворота сервы volatile uint32_t previousMillis = 0; uint32_t interval = 2000; void setup() { servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(9600); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1 = map(valpot1, 0, 1023, 0, 180); angleServo2 = map(valpot2, 0, 1023, 0, 180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); unsigned long currentMillis = millis(); if (currentMillis - previousMillis > interval) { previousMillis = currentMillis; float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); Serial.println(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy, 3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); Serial.print(","); Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); } }попробуй перенести сервы на 6 и 7 пины
А зачем? на 6 и 7 пине что должно поменяться? ?
попробуй перенести сервы на 6 и 7 пины
Не поможет, тогда еще можно закинуть локально библиотеку SoftwareSerial.h и поправить чуток
Да! Есть некоторое количество ошибок, я поправил их, как мог, попробуй, не взлетит надо будет думать
#include <PZEM004Tv30.h> #include <SoftwareSerial.h> uint8_t PZEM_RX_PIN = 8; uint8_t PZEM_TX_PIN = 9; SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN); PZEM004Tv30 pzem(pzemSWSerial); // Software Serial pin 8 (RX) & 9 (TX) #include <Servo.h> // подключение библиотеки Servo uint8_t pinServo1 = 6; // Пин для подключения сервопривода uint8_t pinServo2 = 7; // Пин для подключения сервопривода Servo servo1;// повітря Servo servo2;// газ const int POT1 = 0; // Аналоговый вход A0 для подключения потенциометра const int POT2 = 1; // Аналоговый вход A0 для подключения потенциометра int row_excel = 0; // количество строк int valpot1 = 0; // переменная для хранения значения потенциометра int valpot2 = 0; // переменная для хранения значения потенциометра int angleServo1 = 0; // переменная для хранения угла поворота сервы int angleServo2 = 0; // переменная для хранения угла поворота сервы volatile uint32_t previousMillis = 0; uint32_t interval = 2000; void setup() { servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(9600); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1 = map(valpot1, 0, 1023, 0, 180); angleServo2 = map(valpot2, 0, 1023, 0, 180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); unsigned long currentMillis = millis(); if (currentMillis - previousMillis > interval) { previousMillis = currentMillis; float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); Serial.println(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy, 3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); Serial.print(","); Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); } }спасибо за код, иду подключать
попробуй перенести сервы на 6 и 7 пины
Не поможет, тогда еще можно закинуть локально библиотеку SoftwareSerial.h и поправить чуток
Да! Есть некоторое количество ошибок, я поправил их, как мог, попробуй, не взлетит надо будет думать
#include <PZEM004Tv30.h> #include <SoftwareSerial.h> uint8_t PZEM_RX_PIN = 8; uint8_t PZEM_TX_PIN = 9; SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN); PZEM004Tv30 pzem(pzemSWSerial); // Software Serial pin 8 (RX) & 9 (TX) #include <Servo.h> // подключение библиотеки Servo uint8_t pinServo1 = 6; // Пин для подключения сервопривода uint8_t pinServo2 = 7; // Пин для подключения сервопривода Servo servo1;// повітря Servo servo2;// газ const int POT1 = 0; // Аналоговый вход A0 для подключения потенциометра const int POT2 = 1; // Аналоговый вход A0 для подключения потенциометра int row_excel = 0; // количество строк int valpot1 = 0; // переменная для хранения значения потенциометра int valpot2 = 0; // переменная для хранения значения потенциометра int angleServo1 = 0; // переменная для хранения угла поворота сервы int angleServo2 = 0; // переменная для хранения угла поворота сервы volatile uint32_t previousMillis = 0; uint32_t interval = 2000; void setup() { servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(9600); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1 = map(valpot1, 0, 1023, 0, 180); angleServo2 = map(valpot2, 0, 1023, 0, 180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); unsigned long currentMillis = millis(); if (currentMillis - previousMillis > interval) { previousMillis = currentMillis; float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); Serial.println(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy, 3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); Serial.print(","); Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); } }Большое спасибо за код, амперметр начал работать, но сервопривод не могу переставить так как паяльник умер.
Вот так будет еще правильней вроде:
#include <PZEM004Tv30.h> #include <SoftwareSerial.h> uint8_t PZEM_RX_PIN = 8; uint8_t PZEM_TX_PIN = 9; SoftwareSerial pzemSWSerial(PZEM_RX_PIN, PZEM_TX_PIN); PZEM004Tv30 pzem(pzemSWSerial); // Software Serial pin 8 (RX) & 9 (TX) #include <Servo.h> // подключение библиотеки Servo uint8_t pinServo1 = 6; // Пин для подключения сервопривода uint8_t pinServo2 = 7; // Пин для подключения сервопривода Servo servo1;// повітря Servo servo2;// газ const int POT1 = 0; // Аналоговый вход A0 для подключения потенциометра const int POT2 = 1; // Аналоговый вход A1 для подключения потенциометра int row_excel = 0; // количество строк volatile int valpot1 = 0; // переменная для хранения значения потенциометра volatile int valpot2 = 0; // переменная для хранения значения потенциометра volatile int angleServo1 = 0; // переменная для хранения угла поворота сервы volatile int angleServo2 = 0; // переменная для хранения угла поворота сервы volatile uint32_t previousMillis = 0; uint32_t interval = 2000; void setup() { servo1.attach(pinServo1); servo2.attach(pinServo2); Serial.begin(115200); Serial.println("CLEARDATA"); // очистка листа excel Serial.println("LABEL,Time,Voltage, Current, Power, Energy, Frequency, PF, agle1, angle2 "); // заголовки столбцов // подключить переменную servo к выводу pinServo } void loop() { valpot1 = analogRead(POT1); // чтение данных потенциометра valpot2 = analogRead(POT2); // чтение данных потенциометра // масштабируем значение к интервалу 0-180 angleServo1 = map(valpot1, 0, 1023, 0, 180); angleServo2 = map(valpot2, 0, 1023, 0, 180); // поворот сервопривода на полученный угол servo1.write(angleServo1); servo2.write(angleServo2); if (millis() - previousMillis > interval) { previousMillis = millis(); float voltage = pzem.voltage(); float current = pzem.current(); float power = pzem.power(); float energy = pzem.energy(); float frequency = pzem.frequency(); float pf = pzem.pf(); Serial.println(); row_excel++; // номер строки + 1 Serial.print("DATA,TIME,"); // запись в excel текущей даты и времени Serial.print(voltage); Serial.print(","); Serial.print(current); Serial.print(","); Serial.print(power); Serial.print(","); Serial.print(energy, 3); Serial.print(","); Serial.print(frequency, 1); Serial.print(","); Serial.println(pf); Serial.print(","); Serial.print(angleServo1); Serial.print(","); Serial.print(angleServo2); Serial.print(","); Serial.println(row_excel); } }:-)
Чините паяльник скорее, а то пишут, что библиотеки "серво" и "софтваресериал" не работают вместе (интересно узнать).
https://qna.habr.com/q/188627
Есть такая проблема. Какой-нить макет с озвучкой через DFPlayer и сервой делаешь и матом ругаешься - включил звук, серва дернулась.
:-)
Чините паяльник скорее, а то пишут, что библиотеки "серво" и "софтваресериал" не работают вместе (интересно узнать).
https://qna.habr.com/q/188627
заставить работать можно, я думаю, точнее есть большая надежда граничащая с уверенностью )))
ЗЫ { 9600, 114, 236, 236, 233, }, это задержки, надо поднимать скорость до 115200, там они минимальные, если не взлетит, то переводить датчик на хардовый сериал
{ 115200, 1, 17, 17, 12, },