Здравствуйте, решил написать программу на питоне, которая отправляла символ на ардуино, а тот печатал бы его на жк экране. Через монитор порта( который в IDE arduino) все работает, а вот когда через программу получается бред. Что моем коде не так? Python: Код (Text): import serial port='COM4' #называем порт name=raw_input("Input:") ser=serial.Serial(port,9600) ser.write(name) #отправляем print ser.readline() #получаем ответ от ардуино Arduino Код (Text): #include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() { // put your setup code here, to run once: Serial.begin(9600); //connecting } char n=' '; void loop() { if(Serial.available()){ //looking for symbol lcd.begin(16,2); n=Serial.read(); //found it lcd.print(n); //print Serial.println(n); //sending to computer delay(5000); lcd.clear(); } }
Монитор порта IDE arduino добавляет при передачи символы завершения строки. Список настроек символов завершения строки рядом со списком скорости передачи. У тебя отправляется не символ, а строка. Код (Text): #include <LiquidCrystal.h> LiquidCrystal lcd(4, 5, 10, 11, 12, 13); String inString = ""; char inChar; void setup() { // put your setup code here, to run once: inString.reserve(16); // резервируем 16 символов lcd.begin(16, 2); Serial.begin(9600); //connecting delay(100); } void loop() { while (Serial.available()>0) { inChar = (char)Serial.read(); // прочитать символ if (inChar != '\n') { inString = inString + inChar; // добавляем символ к строке } else { lcd.print(inString); // выводим строку на LCD Serial.println(inString); inString = ""; // обнуляем строку для следующего чтения delay(5000); lcd.clear(); } } }
Я в мониторе выставил "без новой строки", но даже с твоим кодом у меня не получается через python. Но все равно спасибо.
Возможно, просто не согласованы параметры последовательного порта (количество бит данных, стоповых бит, наличие контроля четности, способ управления потоком). Надо либо задать для порта в системе значения по умолчанию или явно указать параметры при открытии порта. Я при доступе к ардуине через БТ использовал такое: Код (Text): ser=serial.Serial(port,9600, timeout=1, xonxoff=False, dsrdtr=False, interCharTimeout=False)