Buonasera a tutti,
sto facendo debugging su un codice per il pilotaggio di un automodello comandato tramite bluetooth. il programma compila ma non viene caricato sull'arduino per il seguente errore:
ser_open(): can't open device ".\COM4": Accesso negato. Il programma senza l'utilizzo di Serial.begin viene caricato sull'arduino.
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. Grazie.
... cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento, fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.
Detto questo, come richiesto al punto 7 del succitato regolamento, per favore edita il tuo post qui sopra (quindi NON scrivendo un nuovo post, ma utilizzando il bottone a forma di piccola matita che si trova in basso del tuo post), seleziona la parte di codice e premi l'icona </> nella barra degli strumenti per contrassegnarla come codice. Inoltre, così com'è, non è molto leggibile ... assicurati di averlo correttamente indentato nell'IDE prima di inserirlo (questo lo si fa premendo ctrlT su un PC o cmdT su un Mac, sempre all'interno del IDE).
Grazie,
Guglielmo
P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione e sistemato il codice come indicato, nel rispetto del regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto.
Se ho ben capito, se nel setup() tu metti la Serial.begin() NON riesci a caricare il programma su Arduino perché, l'IDE, in fase di caricamento non trova la COM4: e quindi il bootloader fallisce l'upload del codice nella flash della MCU, se invece tu non metti la Serial.begin() nel setup(), il caricamento avviene regolarmete ed i programma parte ... è così ?
Perché è cosa molto strana dato che, in fase di caricamento, il bootloader ed il PC non sanno ed ignorano cosa c'è nel .HEX che viene caricato e quindi ... come fa il PC a dare che la porta è occupata o meno ?
Sicuro che l'errore non avvenga DOPO che il programma è stato caricato in flash, quando viene messo in esecuzione ?
Dicci su che modello di Arduino stai caricando il programma e metti le ultime righe della compilazione/caricamento così vediamo l'errore esatto che viene indicato nell'IDE (prima di compilare, vai nelle preferenze dell'IDE e metti il segno di spunta ai dettagli sia in fase di compilazione che in fase di caricamento, così i messaggi di errore saranno più completi).
@mattep99: Ah ... un altra cosa ... è ampiamente dimostrato (ci sono vari thread che ne parlano) che oltre i 38400 la SoftwareSerial dia dei problemi (errori vari in ricezione) quindi ti sconsiglio caldamente di usarla a 115200 ... al limite, per raggiungere certe velocità, puoi usare la AltSoftSerial, estremamente più performante ... unico limite, ha dei pin fissi che è obbligatorio utilzzare.
Buongiorno, anzitutto mi scuso per gli errori in fase di composizione dell'argomento, essendo il primo post non ho controllato bene il regolamento e vi ringrazio per i suggerimenti. Penso di aver anche sbagliato termine: il programma viene compilato ma non eseguito, carico l'ultima linea di esecuzione come richiesto. Sto utilizzando un Arduino Nano.
Arduino Nano è basato su ATmega328P quindi è come Arduino UNO ... NON è possibile che quell'errore lo dia solo se non c'è quella riga nel codice ... a quel livello (avrdude) non interessa cosa c'è nel .HEX, ma solo la sua dimensione, e ... quella sembra a posto.
Alle domande che ti ha fatto qua sopra Arco_500 aggiungo ... ci sono antivirus in esecuzione? Hai qualche emulatore seriale che tiene aperta la COM4:?
Ho Windows 10.Si, arduino è connesso a COM4, ho caricato ed eseguito correttamente il programma eliminando la parte di codice che riguarda la parte seriale. Ho anche caricato ed eseguito il programma aggiungendo la parte seriale e inizialmente mi ha stampato correttamente sul display il primo messaggio poi, aggiungendo altri messaggi e provando a ricaricare il programma mi appare lo stesso errore.
Ripeto, è un problema che nulla ha a che vedere con il codice ... "avrdude", che è il programma (richiamato in background dal IDE) che ti manda quei messaggi, NON sa cosa c'è nel codice e, in quella fase, probabilmente neanche ha ancora aperto il .HEX che poi dovrà trasmettere al bootloader ... è un problema a basso livello che riguarda la COM4: ...
Io lavoro su macOS quindi ... di più per Win10 non so dirti ...