Problema con porta /dev/ttyACM0

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

Buongiorno e benvenuto nella sezione Italiana del forum,

:warning: prima di tutto ti segnalo che, nella sezione in lingua Inglese, si può scrivere SOLO in Inglese ... quindi, per favore, la prossima volta presta più attenzione in quale sezione metti i tuoi post; questa volta esso è stato spostato, da un moderatore della sezione di lingua Inglese, nella sezione di lingua Italiana ... la prossima volta potrebbe venire direttamente eliminato, dopo di che ...

... cortesemente, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15) e poi, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE (... quello che vedi in blu è un link, fai click su di esso per raggiungere la discussione) spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

P.P.S.: Evitate di utilizzare la traduzione automatica fatta dal browser ... vi impedisce di capire la lingua della sezione dove andate a scrivere ...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.