RS232 arduino выдает цифры!
- Войдите на сайт для отправки комментариев
Пт, 16/06/2017 - 21:36
Привет всем Есть регистратор у него есть выход 232 так вот если подключаю его к компу по COM чистому без преобразователей то все вижу как грузится и выполняет команды которые с консоле даю! Подключаю к ардуино с таким скетчем
#include <SoftwareSerial.h>
SoftwareSerial softSerial(8, 9); // RX, TX>
void setup(){
Serial.begin(115200);
softSerial.begin(115200);
}
void loop(){
if (softSerial.available()){
Serial.print(softSerial.read());
}
}
ТО в мониторе получаю кучуу цифр и все ((
вопрос как их скрестить (
а зачем софтовый использовать, коли есть хардовый?
ММ просветите тогда как всетаки скрестить не софтово??
так откуда я знаю, что вы с ардуины хотите, давать команды через монитор порта - она лишний элемент вообще, а хардовый на пинах RX и TX к ним и подключите )))
Также есть мнение, что SoftwareSerial не работает нормально на высоких скоростях обмена, кто-то называет максимум 57600, а кто-то и 19200.
См. https://www.google.com.ua/?gws_rd=ssl#q=arduino+softwareserial+maximum+baud+rate
А уровни преобразовываете?
Привет!
Если подключаю к компьютеру по COM порту без преобразователя на скорости 115200 то вижу загрузку устройства!!
Как мне у видить все тоже самое тока на ардуино?
Для проверки делаю скетч
#define led 13 String input_string = ""; const String Led_off = "switch led off"; const String Led_on = "switch led on"; bool led_running; void setup() { Serial.begin(115200); pinMode(led, OUTPUT); } void loop() { while (Serial.available() > 0) { char c = Serial.read(); if (c == '\n') { Serial.print("Input_string is: "); Serial.println(input_string); switch ( parse(input_string, Led_off, Led_on) ) { case 10: led_running=false; Serial.println("Switching off is done"); break; case 11: led_running=true; Serial.println("Switching on is done"); break; case 0: Serial.println("invalid String"); break; } input_string = ""; digitalWrite(led, led_running); } else { input_string += c; } } } byte parse(String input_string, const String Led_off, const String Led_on) { if (input_string.equals(Led_off) == true) { return 10; } else if (input_string.equals(Led_on) == true) { return 11; } else return 0; }Но в итоге получаю постоянно
А если второй раз спросить: "уровни преобразовываете?"
А если второй раз спросить: "уровни преобразовываете?"
Походу нет (
Просто между Регистратором и ардуиной нет нечего !!
С регистратора 3 контакта rx tx и gnd
Я так понимаю нужен какойто преобразователь ????
Я просто думал если компьютер по com(не преобразователь с usb на com) видет все ,то и arduino тоже увидет!
Ну, да. У компьютера там на контактах 12В, а у Ардуино - 5, а так ничего, увидит. Кстати, ардуина могла уже и сдохнуть от такого издевательства.
В правом верхнем углу есть окно поиска. Забиваем там "RS232 преобразование уровней" и смотрим как это делается. Тем по этому вопросу было много.
Тоесть вы хотите сказать что мой регистратор тоже 12в дает?
Или ожидает. И не только +12, а ещё и -12
Там дело не только в 12В, там вообще принцип другой.
В ардуине логический ноль - от 0 до 0,7В, а единица (при пятивольтовом питании) от 3,5 до 5 вольт.
А в RS232 логический ноль от +3 до +12 вольт, а единица от -3В до -12В, соответственно.
Вот и смотрите, как им понимать друг друга. Где смотреть, я уже сказал.
https://ru.aliexpress.com/item/MAX3232-MAX232-RS232-To-TTL-Serial-communication-converter-Module-5V-3-3V-Jump-Cables-USB-cable/824423281.html?spm=2114.13010608.0.0.7DBWKn
такой подойдет просто др пока под рукой нет
Не знаю, я же Вам сказал где смотреть. Там люди пробовали разное и описывали, что у них получилось.
спасибо буду думать!