This commit is contained in:
135
2024-07-25 10:14:40 +03:00
parent 1ae6e04559
commit 7cccb3306c
5 changed files with 100 additions and 9 deletions

49
Serial_AdjustBaud.h Normal file
View File

@@ -0,0 +1,49 @@
/**
* Функция для вычисления и возврата скорости передачи данных (baud rate) на основе полученного входного пина.
*
* @param recpin входной пин для определения скорости передачи данных
*
* @return рассчитанная скорость передачи данных на основе измеренной ширины нулевого бита
*/
long detRate(int recpin){
long baud, x, rate = 10000;
// Цикл для измерения ширины нулевого бита
for (int i = 0; i < 15; i++){
// Ожидание начала низкого бита
while(digitalRead(recpin) == 1)
x = pulseIn(recpin, LOW); // Измерение ширины следующего нулевого бита
rate = x < rate ? x : rate; // Обновление минимальной ширины нулевого бита
}
// Определение скорости передачи данных на основе измеренной ширины нулевого бита
if (rate < 12)
baud = 115200;
else if (rate < 20)
baud = 57600;
else if (rate < 29)
baud = 38400;
else if (rate < 40)
baud = 28800;
else if (rate < 60)
baud = 19200;
else if (rate < 80)
baud = 14400;
else if (rate < 150)
baud = 9600;
else if (rate < 300)
baud = 4800;
else if (rate < 600)
baud = 2400;
else if (rate < 1200)
baud = 1200;
else if (rate < 2400)
baud = 600;
else if (rate < 4800)
baud = 300;
else
baud = 0;
return baud; // Возврат рассчитанной скорости передачи данных
}