Ciao a tutti,
Scrivo qui anche se il topic è vecchio ma almeno so che avete trattato il problema.
Ho provato a creare un piccolo protocollo di comunicazione su RS485, quindi scrivo su pin 1 e leggo su pin 0 tra Arduino Leonardo e PC con Python.
Python:
import serial, time
import random
ser = serial.Serial("COM12", 115200, bytesize=8, parity='N', stopbits=1, writeTimeout=1, timeout=0)
time.sleep(2)
ser.flushInput()
ser.flushOutput()
a = 1
k = 0
e = 0
while 1:
ser.write(b'1')
x = ser.read(2)
if x != b'1':
k = k + 1
print(k)
print(x)
Arduino:
const byte LED = 13;
const byte Address = 49; // Indirizzo fisico Leonardo
int inByte;
int lastState;
int changeState;void setup()
{
pinMode(LED, OUTPUT);
pinMode(3, OUTPUT);
digitalWrite(LED, LOW);
digitalWrite(3, LOW);
Serial1.begin(115200, SERIAL_8N1);
while (!Serial1) {
}
Serial1.flush();
delay(500);
}void loop()
{
if (Serial1.available()) {
inByte = Serial1.read();
Serial1.flush();
digitalWrite(3, HIGH);
Serial1.write(inByte);
Serial1.flush();
digitalWrite(3, LOW);
}
}
Mi parte una marea di errori nel ciclo di Python creato apposta per verificare se la cumunicazione funziona correttamente
if x != b'1':
k = k + 1
print(k)
print(x)
Se collego la seriale attraverso USB (cioè Serial e non Serial1) tutto funziona a dovere.
Cosa c'è che non va?