ARDUINO неправильно работает модуль радиосвязи sv610 я отправляю одни данные, а приходят вообще другие

CHydeR

✩✩✩✩✩✩✩
30 Апр 2024
4
0
если я например отправлю "1", то придет символ"g"с hex кодом 67, если отправлю "2", то придет "3"с hex кодом 33, если "3", то "f", код 66.
а теперь самое интересное, если отправить "12", то придет "g3", вроде все сходится, но если "123", то придет "gi." с hex кодом 67 B3 06 вместо 67 33 66.
мне просто нужно передать данные с адруино и принять через COM порт, либо через вторую ардуинку
 

poty

★★★★★★✩
19 Фев 2020
3,237
942
"1" - это 0x31 - b00110001
"g" - это 0x67 - b01100111
(Инверсия со сдвигом, младший бит 1)

"2" - это 0x32 - b00110010
"3" - это 0x33 - b00110011
(Инверсия с двойным сдвигом, младший бит 0)

"3" - это 0x33 - b00110011
"f" - это 0x66 - b01100110
(Инверсия со сдвигом, младший бит 1)

"12" - это 0x3132 - b00110001 00110010
"g3" - это 0x6733 - b01100111 00110011

"123" - 0x313233 - b00110001 00110010 00110011
"gi_" - 0x67b306 - b01100111 10110011 0000 0110

Паттерны примерно соответствуют, но, похоже, неверно декодируется прием, с пропуском первых нулей + сдвигом на этот пропуск и инверсией.
 

CHydeR

✩✩✩✩✩✩✩
30 Апр 2024
4
0
нашел как передавать данные через супер кастыли, теперь нужно преобразовать float в String. в функцию передаю 123.456, вывожу этот аргумент в консоль, и получаю 123,46. куда-то пропала цифра 5

int x = 20;

void setup() {
Serial.begin(9600);

}

void loop() {
send(123.456);
delay(500);
}

void send(float data1) {
String data = String(data1);
Serial.println(data);
Serial.println(data1);
/*
Serial.write("A");
for ( auto num : data ) {
Serial.write(num);
delay(x);
}
Serial.write("a");
*/
}


главная часть функции закомментирована