Народ помогите разобраться с SoftwareSerial. Суть такова: с UNO отправляю через SoftwareSerial (int char string) переменные на компе через CH340 слушаю порт программой SerialMonitor и вижу полную ересь. Пробовал разные проги для прослушки порта. скорости везде 9600. Пробую в обратную сторону отправлять с CH340 и слушать UNO монитором порта таже хрень. Заранее благодарен
Но, ты же просто выводишь строку в оба порта. Ты пробовал читать из обоих портов? Везде каша или только с софтверного? А просто вывести Serial.printLn(1) получается?
в Serial.printLn(1); выводит 1 если пихаю в softSerial.printLn(1); и слушаю CoolTermWin на стороне компа то получается ересь где может быть проблема?
Ну, если ты игрался со скоростями, то проблема может быть в соединении пинов с твоим устройством. Ты минус точно соединил?
да 100500 все в поряде и со сокоростямя и с пинами скоростя видно на скршотах а пинв уже несколько раз проверил
А разве не Так? Код (Text): #include <SoftwareSerial.h> SoftwareSerial swSer(12, 11, false, 256); void setup() { Serial.begin(9600); swSer.begin(9600); Serial.println("\nSoftware serial test started"); for (char ch = ' '; ch <= 'z'; ch++) { swSer.write(ch); } swSer.println(""); } void loop() { while (swSer.available() > 0) { Serial.write(swSer.read()); } while (Serial.available() > 0) { swSer.write(Serial.read()); } } Это из примеров IDE если что.
Или так Код (Text): String inputString = ""; // a String to hold incoming data boolean stringComplete = false; // whether the string is complete #include <SoftwareSerial.h> SoftwareSerial swSer(12, 11 ); void setup() { // initialize serial: Serial.begin(9600); swSer.begin(9600); // reserve 200 bytes for the inputString: inputString.reserve(200); } void loop() { // print the string when a newline arrives: if (stringComplete) { swSer.println(inputString); // clear the string: inputString = ""; stringComplete = false; } } /* SerialEvent occurs whenever a new data comes in the hardware serial RX. This routine is run between each time loop() runs, so using delay inside loop can delay response. Multiple bytes of data may be available. */ void serialEvent() { while (Serial.available()) { // get the new byte: char inChar = (char)Serial.read(); // add it to the inputString: inputString += inChar; // if the incoming character is a newline, set a flag so the main loop can // do something about it: if (inChar == '\n') { stringComplete = true; } } } Что куда и как отправляете?На Softserial через пины 11/12 и USB переходник?А слушаете через "родной" USB так?
Если необходимы два последовательных порта, то необходимо юзать леоанрду, микру или STM32. Насиловать программную реализацию порта при возможности всё сделать аппаратно ни к чему.
еще проще код чем выше Код (Text): #include <SoftwareSerial.h> SoftwareSerial softSerial(12, 11); void setup() { Serial.begin(9600); softSerial.begin(9600); delay(500); } void loop() { Serial.println(1); delay(500); softSerial.print("W"); delay(500); } все горазда проще - отправляю в softSerial данные а в компе вижу совсем другое - не могу понять природу искажений хотя эти же данные в Serial идут в оригинальном виде как и нужно. не одупляю где собаку зарыли softSerial на строне компа слушаю CoolTermWin через переходник CH340 мож на строне компа чет не так?
По честнаку сказать я пытаюсь подружить модуль E32 433T30D c UNO пошел от простого к сложному сначала по проводам - результат плачевный(((( мож у кого есть положительный опыт с данными модулями?