Buon giorno posto di seguito un codice trovato su internet
riguardo il tentativo di far comunicare un PC con un programma Python ed Arduino UNO.
Di seguito il programma in python che invia la lattera 'b'.
#define MAX_BUFFER 10
int elemento_buffer=0;
char buffer[MAX_BUFFER];
void setup(void)
{
Serial.begin(115200);
while (!Serial)
delay(10); // will pause Zero, Leonardo, etc until serial console opens
Serial.println("OK!");
}
void loop()
{
while((Serial.available())>0)
{
// se c'è qualche byte da leggere, allora...
char carattere=Serial.read(); // ...leggi byte
if(carattere=='\r') continue;
if(carattere=='\n')
{
buffer[elemento_buffer]=0; // inserisco un carettere NULL per indicare la fine dell'array
elemento_buffer=0; // resetto l'indice dell'array
break; // esco dal ciclo while
}
buffer[elemento_buffer]=carattere; // creo l'array di caratteri
elemento_buffer++; // incremento l'indice del buffer
if(elemento_buffer==MAX_BUFFER) // se si raggiunge il limite di byte del buffer allora...
{
elemento_buffer=MAX_BUFFER-1; // ...sovrascrivi quello precedente
}
if(buffer[0] == 'b')
{
buffer[1]=0;
Serial.println(buffer);
}
buffer[0]='0'; //pulisci buffer
}
}
ed ora il codice che invia la lettera 'b':
import time
import serial
import keyboard
#import pynput
def invia():
ser.write(i)
try:
ser = serial.Serial("/dev/ttyACM0", 115200)
if ser.is_open:
print ("\n Il collegamento è stato effettuato con successo \n")
#ser.close()
except:
print("""
Collegamento fallito,
controllare se il dispositivo è stato connesso correttamente,
o di avere inserito il nome della porta corretto \n""")
i=b'a\n'
while True: # making a loop
if keyboard.is_pressed('b'): # if key 'a' is pressed
print('You Pressed "b" Key!')
ser.write(i)
else:
print("\nTasto non premuto")# if user pressed a key other than the given key the loop will break