Arduino uno non mostra la porta COM virtuale. Risoluzione dei problemi Iniziare con Arduino. Arduino non si avvia dopo l'aggiornamento di Java su Mac

Il cuore della piattaforma Arduino è un chip microcontrollore noto come ATmega328.

L'ATmega328 è in realtà un computer a 8 bit a tutti gli effetti: dopo essere stato acceso, il suo processore carica un byte da una determinata posizione di memoria e lo interpreta come un comando. Quello che succede dopo dipende dal valore di quel byte. Solo a differenza dei computer a noi noti, ATmega328 non esegue alcun sistema operativo: l'utilizzo delle risorse è sotto il completo controllo del programmatore. Non possiamo fare affidamento su un sistema operativo che può allocare in modo errato la memoria, sovraccaricarla o portare ad altre conseguenze indesiderabili per un preciso sistema automatico. Inoltre, il processore può lavorare solo su un'attività alla volta (probabilmente sai che tutti i processori funzionano in questo modo, ma il sistema operativo distribuisce il tempo di lavoro di varie attività in modo tale che sembri che diversi programmi sul tuo computer siano lavorare contemporaneamente).

Se hai davvero bisogno di più spiegazioni per arrivare alla fine di questa configurazione, ne hai una, ma di solito puoi cavartela senza di essa! 😉. Ora devi configurare Software per abbinare la tua mappa. Nella barra dei menu, fai clic su "Strumenti", quindi su "Tipo di carta" e seleziona la carta che desideri connettere.

Quindi, al termine, fai nuovamente clic su "Strumenti" e seleziona la porta che è stata appena aggiunta all'elenco. E dopo aver verificato che la scheda sia collegata, esegui il file di contenuto. Fare clic su "Sì" quando vengono richiesti i diritti di amministratore, quindi fare clic su "Installa". Al termine dell'installazione, si aprirà una finestra di dialogo che ti avviserà. Fatto ciò, riavvia il computer se necessario e la scheda verrà ora riconosciuta! 🙂.

Il nuovo Arduino ha una memoria completamente vuota, quindi il primo byte elaborato dal processore ha valore zero: "Nessuna operazione". Prima usando Arduinoè necessario caricare un programma eseguibile nella sua memoria, ad es. una sequenza di bit, il primo dei quali viene interpretato come un comando ed eseguito. Se il comando necessita di parametri per essere eseguito, questi vengono presi dai byte di memoria successivi. Dopo aver eseguito il comando, il processore carica in memoria il byte ricevuto e lo interpreta come un comando. Se spegni Arduino, la memoria non viene cancellata. La sequenza di byte caricata al suo interno viene salvata nella memoria non volatile, quindi alla riaccensione il programma riparte dall'inizio.

Se la tua mappa funziona correttamente, puoi passare alla parte successiva di questa pagina 😉. Quindi staccare la scheda e rimontare. Al termine, viene visualizzato un messaggio tra l'editor e la console che informa che la masterizzazione è riuscita. La tua mappa è ora caricata!

Per semplificarti la vita ai futuri programmatori, ecco alcuni suggerimenti. Attiva le informazioni sull'errore. . Infatti, se c'è un errore nel tuo programma, quando vuoi compilare o addirittura caricare il tuo programma, apparirà un messaggio di errore nella parte inferiore della finestra. In alcuni casi, questo messaggio non è sufficientemente chiaro o preciso per identificare il problema, nel qual caso maggiori informazioni sui messaggi di errore possono essere molto utili.

La frequenza delle operazioni del processore è impostata da un generatore di clock a 16 MHz. L'alimentazione può essere fornita tramite il connettore USB. Lavorare senza Alimentatore USB Arduinoè necessario un alimentatore separato da 7 a 12 V (questa tensione è normalizzata ai livelli richiesti da un regolatore di bordo, quindi è sufficiente un alimentatore economico per quello). A bordo sono a disposizione dell'utente entrambi i livelli di tensione di 5V e 3,3V, dai quali è possibile prelevare un massimo di 50mA di corrente.

Visualizza il numero di riga e attiva il backup del codice. . Infatti, per non perderti nel tuo codice quando questo diventa lungo, il numero di riga ti farà sapere quale riga è quella parte del tuo codice e ti permetterà di tornarci più facilmente.

Anche in questo caso, ci sono due caselle di controllo nelle impostazioni. Ovviamente, questi non sono i mezzi con cui ci occuperemo in questa parte. No, vedremo i mezzi di comunicazione che ha la scheda Arduino. Ha questa piccola carta sotto il cofano! 😉. Tutto dipende da cosa vuoi comunicare con i media che fornisci. Tuttavia, questa soluzione è ancora instabile e richiede che l'utente si trovi davanti al sistema di allarme. Oggi, con lo sviluppo della tecnologia e "tutto ciò che è correlato", sarebbe un peccato non poter andare oltre.

La memoria di Arduino è composta da tre tipi: memoria flash, dove il programma è memorizzato 32 KB; RAM(SRAM) 2 KB, dove il processore memorizza e sovrascrive le variabili utilizzate nel programma; e memoria di sola lettura (EEP-ROM) di 1 KB, dove il programmatore può memorizzare i dati che dovrebbero rimanere al riavvio del controller (come la memoria flash, dove è memorizzato il programma). Rispetto ai computer di oggi, che gestiscono almeno qualche gigabyte, 35kb sembrano ridicoli, ma in realtà sono sufficienti per la maggior parte degli scopi. A causa della mancanza sistema operativo, l'utilizzo della memoria è interamente sotto la tua responsabilità: se si verifica un overflow di memoria o si accede a una posizione di memoria inesistente, il tuo programma potrebbe comportarsi in modo imprevedibile e questo è abbastanza difficile da tenere traccia durante il debug. Dovresti sempre tenere sotto controllo il numero di variabili nel tuo programma.

Questo è lo scopo principale della comunicazione. Queste informazioni possono alimentare il database, servire nel calcolo o qualcos'altro. Tutto dipende da cosa ne fai. Quando le informazioni vengono trasmesse, è necessario che il trasmettitore, che trasmetterà le informazioni trasmesse, e il destinatario, che riceverà le informazioni, le elabori.

Uno comunica con l'altro mentre l'altro riceve il messaggio inviato all'altro. Tuttavia, ci sono due frecce nel tuo disegno. L'altro che riceve il messaggio può inviare i dati? Tuttavia, tutto dipende dal tipo di connessione. Ad esempio, si possono distinguere tre tipi di conversazioni. Ogni conversazione ha solo due interlocutori. Dicono che sia una connessione punto a punto. In questo caso può comunicare qualsiasi altro dispositivo che utilizzi il collegamento seriale e il suo protocollo di comunicazione. Che cos'è un protocollo di comunicazione?

Il processore ATmega328 è collegato a 14 porte I/O discrete (numerate da 0 a 13), 6 ingressi analogici e una porta USB. L'I/O discreto è connessione elettrica, che può avere due stati booleani: 1 e 0, oppure VERO e FALSO, oppure, come in sintassi Arduino, BASSO e ALTO. Se il segnale è nel valore LOW, il pin corrispondente ha un potenziale zero di 0 V, cioè collegato a filo comune. Se il segnale è ALTO, il livello di tensione tra questo pin e la massa è 5 V.

È un insieme di regole che definiscono il modo in cui due dispositivi interagiscono tra loro. D'altra parte, due dispositivi che comunicano con un protocollo diverso non verranno intesi correttamente e potrebbero anche interpretare le azioni da compiere in modo opposto a quanto richiesto. Sarebbe un peccato se la tua persona di contatto "lasciasse mangiare il gatto" quando gli chiedi di "dare da mangiare al gatto". Insomma, se i dispositivi di comunicazione non utilizzano il protocollo corretto, può diventare un vero e proprio kapharnaum!

Collegamenti seriali, c'è un pacchetto! Lo svantaggio, sebbene possa anche essere un vantaggio, è che solo tu stesso puoi utilizzare un messaggio del genere. E chi vedremo tra loro? Alcuni sono migliori di altri? ooh. Allora sì, ci sono alcuni che hanno vantaggi rispetto ad altri. Si può essenzialmente notare il tipo di utilizzo che vuole fare e la velocità con cui i dispositivi possono comunicare.

I pin 0 e 1 sono utilizzati per la ricezione e la trasmissione seriale dei dati: attraverso di essi, la scheda Arduino può comunicare con i moduli (shield) ad essa collegati utilizzando il protocollo seriale. I protocolli seriali sono protocolli di comunicazione in cui ogni bit viene trasmesso/ricevuto a turno uno dopo l'altro. I pin 2 e 3 possono essere utilizzati anche come interrupt. Un'interruzione è un segnale elettrico su un ingresso digitale che interrompe il programma del processore corrente quando si verifica un determinato stato logico. Esistono interruzioni anche nei processori dei computer convenzionali. Dopo che si è verificata un'interruzione, il processore memorizza il suo stato in memoria e ritarda l'esecuzione del programma, saltando all'esecuzione di un gestore di interrupt: un breve pezzo di codice di programma necessario per servire l'interruzione. Al termine, il processore riprende lo stato che aveva prima dell'arrivo dell'interruzione e riprende l'esecuzione del programma.

Come gestire i conflitti di Cygwin su Windows?

Definisce il segnale elettrico, il protocollo utilizzato e tutto ciò che riguarda la meccanica. Per comunicare tramite un collegamento seriale, due dispositivi devono avere almeno 3 cavi. Il primo cavo è un riferimento elettrico, comunemente indicato come messa a terra elettrica. Un po' quando ti misuri: misuri 1,7 metri da terra alla sommità della testa, non 4,4 metri perché sei al primo piano e sei appoggiato al piano terra. Uno viene utilizzato per inviare dati a un mittente, ma anche per ricevere dati da un altro mittente. Ti permette di irradiare l'uno e ricevere l'altro. Il verde è quello utilizzato per inviare i dati dalla prima carta, ma serve anche per ricevere i dati inviati per la seconda carta. L'arancione è quello utilizzato per inviare i dati dalla seconda carta, ma serve anche per ricevere i dati inviati per la prima carta.

  • Questo permette di misurare la tensione, fissando lo stesso quadro di riferimento.
  • Altri due cavi forniscono il trasferimento dei dati.
  • Il nero è la massa elettrica comune.
Questo è il minimo indispensabile.

I pin 3, 5, 6, 9, 10 e 11 possono essere utilizzati come uscite PWM e hanno alcune impostazioni analogiche. Di conseguenza, le loro celle di memoria contengono valori compresi tra 0 e 255.

Fig. 1 Arduino UNO, come appare dall'alto e dal basso. Nota la mappa dell'Italia sul retro.

Il pin 13 è collegato anche al LED a bordo. Quando il segnale è BASSO, il LED è spento, se il segnale è ALTO, il LED è acceso.

Segnale elettrico e protocollo

La norma non vieta l'uso di altri cavi utilizzati per il controllo del flusso e la gestione degli errori. Innanzitutto bisogna sapere che due dispositivi elettronici o informatici utilizzano dati sotto forma di bit per comunicare. Di norma, questi set sono costituiti da 8 bit, che poi formano un byte. Queste scariche sono in realtà livelli di tensione elettrica. I livelli di tensione imposti dalla norma possono essere elencati nella tabella come segue.

Quindi tutte le tensioni al di sopra dei valori impostati, quindi tra -3V e 3V, sotto -25V e sopra 25V, sono fuori range. Una tensione troppo alta può danneggiare l'apparecchiatura. Quando si ignorano le tensioni da -3 V a -3 V, è in queste zone che si trovano la maggior parte e anche quasi tutti i parassiti. Questo è un modo per evitare errori di trasmissione.

Oltre all'uso standard come I/O digitali, i pin 10, 11, 12 e 13 offrono la possibilità di comunicare con periferiche esterne.

Gli ingressi analogici sono etichettati A0 ... A5: hanno ciascuno una risoluzione digitale di 10 bit,

ovvero convertono qualsiasi tensione compresa tra 0 e 5V in un numero compreso tra 0 e 1023 accessibile in memoria.

Collegamento di un Arduino a un computer

Quando non c'è comunicazione sul collegamento seriale, c'è un cosiddetto stato dormiente. Cioè, c'è sempre un livello logico. Questo è il livello logico. Lascia che la tensione sia compresa tra -3V e -25V. Se questo stato mossa inattiva mancante, potrebbe esserci un problema di connessione.

I dati che passano attraverso la porta seriale vengono trasmessi in forma binaria. Potresti non esserne consapevole, ma una lettera dalla tastiera è codificata in 8 bit, quindi un byte. In realtà sono 7 bit che è codificato, ma aggiungendo uno 0 davanti alla codifica mantiene il suo valore e consente di codificare la lettera in 8 bit. Quindi, per ogni carattere della tastiera, puoi trovare una codifica di 8 bit. Di conseguenza, queste sono basi decimali, ottali, esadecimali e binarie. Alcuni di loro ti sono sconosciuti, come abbiamo visto.

Tutte le piattaforme sono montate su una tavola che misura 60,6 mm × 53,4 mm e non pesa più di 25 g (Fig. 1).

Le schede hanno anche connettori USB A/B con cui è possibile collegarle a un computer per la comunicazione. La connessione USB fornisce anche alimentazione ad Arduino quando è collegato a un computer, quindi non è necessaria una fonte di alimentazione esterna per iniziare.

Noi, ciò che ci interessa è la base binaria. Sì, perché binario è una sequenza di 0 e 1, che sono gli stati logici 0 e 1. Devi immaginare che ci sia un ricevitore. Per non andare troppo veloce, rimarremo con questa singola lettera. Pertanto, vedremo cosa stiamo passando attraverso il percorso seriale. Infatti, se si riceve una chiamata e dopo l'interruzione nessuno risponde, la conversazione non può aver luogo. Infine, dopo aver detto tutto ciò che devi dire, termini la conversazione con "Arrivederci" o "Ciao!", "Altro!" E così via. Quindi ci sarà un bit di fine o un bit di stop che farà la stessa cosa sul collegamento seriale.

  • Questo messaggio iniziale consente di aprire una conversazione.
  • È lui che si impegnerà in una conversazione con il suo interlocutore.
  • L'elemento principale della conversazione.
È qui che entra in gioco la comunicazione seriale.

Programma

Un programma Arduino, come qualsiasi altro programma per il processore, è una sequenza di bit in linguaggio macchina. Per rendere la vita più facile ai programmatori, il team di Arduino ha sviluppato un linguaggio di programmazione alto livello, un compilatore e uno strumento firmware per trasferire il codice macchina nella memoria di Arduino.

Tutti questi strumenti sono inclusi in un programma IDE (Integrated Development Environment), gratuito

Inoltre, sai perché il percorso seriale si chiama così? Infatti, questo perché i dati trasmessi vengono inviati uno dopo l'altro. Se vuoi, sono nella coda di le-lei. Proprio come una conversazione tra due persone: la persona che sta parlando non può dire più frasi contemporaneamente, o più parole o suoni. Ogni elemento segue in un ordine logico.

Con l'aiuto di un cronogramma si potrebbe notare quanto segue. È come un numero che ha unità, decine, centinaia, migliaia, ecc. si può fare riferimento al bit meno significativo in binario, che è corretto. E poiché i dati vengono trasmessi capovolti sui collegamenti seriali, avremo il bit meno significativo subito dopo l'inizio, quindi a sinistra e il bit più significativo a destra. Con il numero precedente, se qualcuno lo leggesse al contrario, darebbe: un bit con poco peso a sinistra ea destra del bit più significativo.

per scaricare dal sito Arduino: scegli il sistema operativo del tuo computer e scarica il programma. Sembra proprio come la maggior parte dei normali programmi per computer. Ha diverse schede su finestre diverse. Una di queste finestre viene utilizzata per modificare il programma. Si chiama sketch in gergo Arduino. Gli schizzi sono scritti in C++ semplificato.

Lo sketch non si avvia all'accensione o al ripristino di Arduino

Pertanto, è importante sapere dove si trova il bit meno significativo per poter leggere i dati nella posizione. In caso contrario, rileviamo dati errati! Notare le tensioni negative che corrispondono allo stato logico 1 e le tensioni positive nello stato logico.

Sono espressi in bit al secondo. Quando viene utilizzato un collegamento seriale, verrà determinata la velocità di trasmissione. Questa velocità è soggetta a diverse limitazioni: la lunghezza del cavo utilizzato per collegare le due parti e la velocità con cui le due parti possono capirsi.


Fig. 2 Il programma Arduino si presenta come una finestra in cui è possibile inserire il testo del programma, che viene chiamato semplicemente sketch.

Puoi compilare il tuo schizzo su Programma Arduino(Fig. 2) cliccando sul pulsante Verifica in alto a sinistra della finestra: il processo di compilazione traduce il programma C++ nei corrispondenti codici macchina del processore ATmega328. Una volta compilato, lo sketch eseguibile può essere caricato nella memoria di Arduino tramite cavo USB, quando fai clic sul pulsante Carica. Potrebbe essere necessario selezionare la porta COM appropriata dal menu se ce n'è più di una disponibile. Il caricamento di uno schizzo provoca sempre l'esecuzione prima del compilatore. Lo schizzo inizia subito dopo il completamento del download.

Più corto è il cavo, più alto portata, poiché la tensione e il rischio di interferenza sono inferiori. Sebbene, se la distanza tra le due parti aumenta, la velocità di comunicazione diminuirà effettivamente. Nonostante la tensione imposta dalla norma, potrebbero esserci altri errori ed errori di trasmissione. C'è una soluzione per mitigare questo rischio. Consiste nell'aggiungere bit di parità. Vedrai, è facile! 😉 Poco prima del bit di stop, aggiungeremo un bit che sarà pari o dispari. Quindi, se si utilizza un collegamento seriale, se è selezionata la parità pari, il numero di livelli logici pari a 1 nei dati più il bit di parità dovrebbe fornire un numero pari.

Caratteristiche aggiuntive aggiunto al linguaggio principale utilizzando librerie esterne sviluppate dal team Arduino o di terze parti. Le librerie possono essere incluse nel codice eseguibile selezionando l'apposita voce di menu. Se necessario, l'aggiunta di una libreria aggiungerà automaticamente righe allo schizzo che informano il compilatore sulla nuova sintassi.

I programmi non lampeggiano in Arduino

Nel processo di trasferimento di un programma da un computer a un Arduino, sono coinvolti molti componenti. Se almeno uno di essi non funziona correttamente, il processo del firmware verrà interrotto. In particolare, il processo del firmware dipende da: driver Arduino, modello di dispositivo e selezione della porta in ambiente Arduino, connessione fisica alla scheda, firmware del controller 8U2 (su Arduino Uno e Mega 2560), bootloader del microcontrollore principale del dispositivo, impostazioni dei bit dei fusibili, ecc. Di seguito sono riportati alcuni consigli per la risoluzione dei problemi di un particolare componente.

Ambiente Arduino

  • Assicurati che il tuo modello Arduino sia selezionato nel menu Strumenti > Scheda. Se possiedi un Arduino Uno, seleziona la voce appropriata. Tieni inoltre presente che i modelli dopo Arduino Duemilanove sono dotati di un microcontrollore ATmega328, mentre le versioni precedenti sono dotate di un ATmega168. Per scoprire quale controller viene utilizzato nel tuo Arduino, leggi la scritta sul microcontrollore (il chip più grande sulla scheda). Maggiori informazioni sul menu Board possono essere trovate nella sezione Arduino Development Environment.
  • Quindi controlla che sia selezionata la porta corretta nel menu Strumenti > Porta seriale (se la porta non viene visualizzata, prova a riavviare IDE dispositivo collegato al computer). Su un Mac, la porta seriale dovrebbe assomigliare a /dev/tty.usbmodem621 (per Arduino Uno o Mega 2560) o /dev/tty.usbserial-A02f8e (per Arduino più vecchi con un chip FTDI). Su Linux: /dev/ttyACM0 o simili (per Arduino Uno o Mega 2560) o /dev/ttyUSB0 (per versioni precedenti di Arduino). Su Windows, questa sarà una porta COM, ma prima di scegliere in Gestione dispositivi, è necessario verificare quale è associata ad Arduino. Se queste porte non sono elencate, vedere la sezione successiva sui driver.

Autisti

I driver consentono al software applicativo sul computer (ovvero l'ambiente Arduino) di comunicare con l'hardware ad esso collegato (la scheda Arduino). Per quanto riguarda Arduino, i driver sono responsabili della creazione di una porta seriale virtuale (o porta COM virtuale) nel sistema. Arduino Uno e Mega 2560 con microcontrollore ATmega8U2 utilizzano i driver standard (USB CDC) del sistema operativo. Altre schede Arduino, in cui il chip FTDI svolge il ruolo di convertitore USB-UART, utilizzano driver FTDI.

Il modo più semplice per verificare se i driver sono installati correttamente è collegare Arduino al PC e aprire il menu Strumenti > Porta seriale nell'ambiente di sviluppo. Dopo aver collegato Arduino, qui dovrebbero apparire nuove voci di menu. In questo caso, non importa quale nome di porta verrà assegnato ad Arduino.

  • Su Windows 7 (in particolare la versione a 64 bit), potrebbe essere necessario entrare in Gestione dispositivi e aggiornare i driver Arduino Uno o Mega 2560. Per fare ciò, fare clic con il tasto destro del mouse sul dispositivo in Gestione dispositivi (la scheda deve essere collegato al computer) e puntare nuovamente su Windows il file .inf corrispondente. Questo file si trova nella cartella driver/del software Software Arduino(ma non nella sottodirectory FTDI USB Drivers).
  • Se durante l'installazione Driver Arduino Uno o Mega 2560 in Windows XP viene visualizzato il seguente errore: "Il sistema non riesce a trovare il file specificato", quindi provare questa soluzione (sull'aggiunta della chiave "RunOnce" al ramo del registro "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion" ).
  • Su Linux, Arduino Uno e Mega 2560 sono definiti come dispositivi /dev/ttyACM0, che non sono supportati dalla versione standard della libreria RXTX utilizzata dall'ambiente seriale Arduino. Pertanto, la versione Linux di questo ambiente include una libreria RXTX con patch, che funziona anche con i dispositivi /dev/ttyACM*. C'è anche uno speciale (11.04) che include il supporto per tali dispositivi. Se stai utilizzando il pacchetto RXTX standard, devi creare un collegamento simbolico nel sistema da /dev/ttyACM0 a /dev/ttyUSB0 (ad esempio), quindi la porta seriale apparirà nell'ambiente Arduino.

Accesso alla porta seriale

  • Su Windows: se il programma impiega molto tempo ad aprirsi o si arresta in modo anomalo all'avvio, o se il menu Strumenti impiega troppo tempo ad aprirsi, in Gestione dispositivi, prova a disabilitare tutte le porte seriali Bluetooth e le altre porte COM di rete. All'avvio o all'apertura del menu Strumenti, l'ambiente di sviluppo Arduino esegue la scansione di tutte le porte seriali del computer, rispettivamente, la presenza di tali porte di rete a volte può causare blocchi o arresti anomali del programma.
  • Assicurati di non avere programmi di scanner seriali in esecuzione, come USB Cellular Wifi Dongle (come da Sprint o Verizon), app di sincronizzazione PDA, driver USB Bluetooth (come BlueSoleil), demoni virtuali, ecc.
  • Assicurarsi che il motivo del blocco della porta seriale non sia un firewall (ad esempio, ZoneAlarm).
  • È inoltre necessario chiudere tutti i programmi che monitorano i dati inviati via USB tra Arduino e PC (ad esempio Processing, PD, vvvv, ecc.).
  • Su Linux: prova a eseguire l'ambiente Arduino come root, almeno temporaneamente, per vedere se ciò aiuta a eseguire il flashing di Arduino o meno.

Collegamento fisico alla scheda

  • Prima di tutto, assicurati che Arduino sia acceso (acceso LED verde) e collegato a un computer.
  • Sui computer Mac, ci sono alcuni problemi quando collegare Arduino Uno e Mega 2560 tramite hub USB. Se non viene visualizzato nulla nel menu "Strumenti > Porta seriale", prova a collegare la scheda direttamente al computer e a riavviare l'IDE Arduino.
  • Per tutta la durata del firmware, scollegare tutti i dispositivi dai pin digitali 0 e 1, poiché questi pin sono collegati all'interfaccia di connessione di Arduino al computer (dopo aver eseguito correttamente il flashing del codice sul controller, possono essere riutilizzati).
  • Prova a eseguire il flashing di Arduino scollegando tutti i dispositivi da esso (tranne il cavo USB, ovviamente).
  • Assicurarsi che la scheda non sia a contatto con oggetti metallici conduttivi.
  • Prova un cavo USB diverso, a volte falliscono anche loro.

Ripristino automatico

  • Se il tuo Arudino non supporta la funzione di ripristino automatico, assicurati di ripristinare la scheda alcuni secondi prima di eseguire il flashing. (Arduino Diecimila, Duemilanove e Nano supportano il ripristino automatico, così come LilyPad, Pro e Pro Mini con connettori di programmazione a 6 pin).
  • Nota: alcuni Arduino Diecimila sono stati flashati accidentalmente con il bootloader sbagliato. Tali modelli richiedono la pressione fisica del pulsante di reset prima del caricamento del programma; vedi sotto per ulteriori informazioni su questo.
  • Su alcuni computer, è necessario premere il pulsante di ripristino (sulla scheda) dopo aver premuto il pulsante Carica nell'ambiente Arduino. Sperimenta diversi intervalli di tempo tra i tocchi - da 0 a 10 secondi o più con un intervallo di circa 2 secondi.
  • Se viene visualizzato questo errore: "Il dispositivo non risponde correttamente". prova a eseguire nuovamente il flashing del programma (in altre parole, resetta la scheda e premi nuovamente il pulsante Upload).

Caricatore

  • Assicurati che il tuo Arduino abbia un bootloader. Per fare ciò, riavvia semplicemente il tuo dispositivo. Il LED integrato (collegato al 13° pin del controller) dovrebbe lampeggiare. Se ciò non accade, molto probabilmente la tua scheda non ha un bootloader.

Se i programmi continuano a non lampeggiare, fai una domanda sul forum. Si prega di includere le seguenti informazioni nel messaggio:

  • La versione del tuo sistema operativo.
  • Il tuo tipo di Arduino. Se si tratta di un modello Mini, LilyPad o di altro tipo che richiede cavi aggiuntivi, se possibile includi una foto del circuito.
  • Sei riuscito a eseguire correttamente il flashing della scheda prima. In tal caso, descrivi cosa hai fatto con la scheda prima che smettesse di funzionare, quale software hai installato o rimosso dal tuo computer di recente?
  • Messaggi che appaiono quando si tenta di caricare un programma in Arduino. Per ricevere i messaggi, tieni premuto il tasto Maiusc mentre fai clic sul pulsante Carica sulla barra degli strumenti.

Si verifica l'errore "Cartella build scomparsa o impossibile da scrivere" (su Mac OS X)

Hai estratto Arduino.app dall'immagine del disco (ad esempio nella cartella Applicazioni)? In caso contrario, non sarai in grado di scaricare esempi.

Arduino non si avvia dopo l'aggiornamento di Java su Mac

L'ultimo aggiornamento Java di Apple tenta di utilizzare le versioni a 64 bit delle librerie native. Tuttavia, il software Arduino utilizza la versione a 32 bit della libreria RXTX. Quando si avvia Arduino, si verifica il seguente errore:

Eccezione non rilevata nel metodo principale: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: nessuna immagine adatta trovata. È stato trovato: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: nessuna architettura corrispondente nel wrapper universale

Per risolvere questo problema, fai clic sull'applicazione Arduino (es. Arduino 16.app) nella finestra del Finder e dal menu File scegli Ottieni informazioni. Sul pannello, seleziona la casella "Apri in modalità 32 bit". Successivamente, l'ambiente Arduino dovrebbe avviarsi normalmente.

Durante la compilazione del programma, si verifica un errore java.lang.StackOverflowError

L'IDE Arduino preelabora il tuo schizzo manipolando il codice con espressioni regolari. A volte alcune righe di testo causano il fallimento di questo processo. Se vedi un errore come questo:

Java.lang.StackOverflowError su java.util.Vector.addElement (origine sconosciuta) su java.util.Stack.push (origine sconosciuta) su com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)

In com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) in com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) ) in com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) su com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) su com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) su com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher .Giava)

allora questa è esattamente la situazione. Controllare il codice per le sequenze di caratteri insolite associate a "virgolette doppie", "virgolette singole", barra rovesciata \, commenti, ecc. Ad esempio, virgolette mancanti o, ad esempio, una sequenza del genere "\"" (invece di """) .

Lo schizzo non viene eseguito quando la scheda è alimentata da una fonte esterna (modelli Arduino Diecimila o precedenti)

Poiché il pin RX è disconnesso, il bootloader Arduino può ricevere rumore anziché dati, il che significa che non scadrà mai e, di conseguenza, il programma non si avvierà. Per risolvere questo problema, prova a collegare il pin RX a massa con una resistenza da 10 kΩ (o collegando i pin RX e TX).

L'ambiente di sviluppo Arduino (su Windows) si blocca quando si tenta di eseguire il flashing del programma

Questo problema può verificarsi a causa di un conflitto tra Arduino e il processo "LVPrcSrv.exe" di Logitech. Apri Task Manager e trovalo nell'elenco dei processi. Se è presente, è necessario completare il processo prima di eseguire il flashing del programma.

Arduino non si accende (il LED verde di alimentazione non si accende)

Se stai usando un Arduino Diecimila o precedente con USB (es. NG), assicurati che il jumper sulla scheda (la piccola parte in plastica vicino al connettore USB) sia impostato correttamente. Se la scheda è alimentata da una fonte di alimentazione esterna (collegata all'apposito connettore), il ponticello dovrebbe chiudere i due pin più vicini al connettore di alimentazione. Se la scheda è alimentata tramite USB, il ponticello dovrebbe chiudere i due pin più vicini al connettore USB. Questa immagine mostra la posizione del jumper quando la scheda è alimentata da USB.

(grazie a mrbbp per post e foto)

L'avvio del programma su Arduino Diecimila richiede troppo tempo (6-8 secondi)

Su alcuni Schede Arduino Diecimila ha accidentalmente eseguito il flashing del bootloader Arduino NG. Funziona bene, solo che ha un timeout più lungo dopo aver ripristinato la scheda (perché Arduino NG non implementa il ripristino automatico, che richiede la sincronizzazione manuale del processo del firmware). Il bootloader da NG lo si riconosce dal led collegato al pin 13: in Arduino NG, dopo aver resettato la scheda, lampeggia 3 volte, e in Diecimila - 1 volta. Se sul tuo Diecimila è installato un bootloader di NG, prima di eseguire il flashing dello sketch van, devi premere fisicamente il pulsante di ripristino situato sulla scheda. È anche possibile eseguire il flashing del bootloader Diecimila corretto nel dispositivo, vedere la pagina del bootloader per maggiori dettagli.

Errore durante l'avvio di arduino.exe su Windows

Se si verifica un errore durante l'esecuzione di arduino.exe in Windows, come questo:

Arduino ha riscontrato un problema e deve essere chiuso.

quindi prova ad avviare Arduino usando il file run.bat. Per favore sii paziente come Ci vuole del tempo per avviare l'ambiente Arduino.

Perché Arduino non funziona su versioni precedenti di Mac OS X?

Se ricevi un errore come questo:

Errore di collegamento (dyld): dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino Simboli non definiti: /Applications/arduino-0004/librxtxSerial.jnilib undefined riferimento a _printf$LDBL128 dovrebbe essere definito in / usr/lib/libSystem.B.dylib

quindi probabilmente dovrai aggiornare il tuo sistema a Mac OS X 10.3.9 o successivo. Le librerie di sistema precedenti non sono compatibili con Arduino.

Grazie a Gabe462 per il messaggio.

Quando si avvia l'ambiente Arduino, si verifica un UnsatisfiedLinkError (con un messaggio sulla libreria librxtxSerial.jnilib)

Se ricevi il seguente errore all'avvio di Arduino:

Eccezione non rilevata nel metodo principale: java.lang.UnsatisfiedLinkError: Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib già caricato in un altro classloader

quindi probabilmente hai una vecchia versione della libreria responsabile della connessione. Cerca i file comm.jar o jcl.jar nella cartella /System/Library/Frameworks/JavaVM.framework/ o nelle directory elencate nelle variabili di ambiente CLASSPATH e PATH. (bug scoperto da Anurag Sehgal)

Cosa significa l'errore "Impossibile trovare la classe principale"?

Se si verifica il seguente errore all'avvio di Arduino:

Java Virtual Machine Launcher: impossibile trovare la classe principale. Il programma uscirà.

controlla di aver decompresso correttamente il contenuto di Arduino .zip, in particolare assicurati che la cartella lib si trovi direttamente all'interno della directory di Arduino e contenga il file pde.jar.

Come gestire i conflitti di Cygwin su Windows?

Se cygwin è già installato sulla tua macchina, quando provi a compilare lo schizzo nell'ambiente Arduino, potrebbe verificarsi il seguente errore:

6? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** errore irreversibile - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** rilevata mancata corrispondenza della versione della memoria condivisa del sistema - 0x75BE0084/0x75BE009C.

Questo problema è probabilmente dovuto all'uso di versioni incompatibili della DLL cygwin.

Nella ricerca di Windows (Start -> Trova), digita cygwin1.dll ed elimina tutti i file trovati, ad eccezione della versione più recente. L'ultima versione dovrebbe trovarsi nella cartella x:\cygwin\bin, dove "x" è l'unità in cui è stata installata la distribuzione cygwin. Si consiglia inoltre di riavviare il computer.

Assicurati inoltre che Cygwin non sia presente nei processi quando l'ambiente Arduino è in esecuzione. Puoi anche provare a rimuovere il file cygwin1.dll dalla cartella Arduino e sostituirlo con il file cygwin1.dll dalla distribuzione cygwin esistente (che molto probabilmente si trova nella cartella c:\cygwin\bin).

L'ambiente Arduino e il menu Strumenti si aprono a lungo (su Windows)

Se l'ambiente Arduino si avvia per molto tempo o si blocca quando si tenta di aprire il menu Strumenti, ciò indica un conflitto con qualche altro dispositivo nel sistema. All'avvio, e anche all'apertura del menu Strumenti, il software Arduino tenta di ottenere un elenco di tutte le porte COM disponibili sul sistema. È possibile che una specifica porta COM creata da uno dei dispositivi del computer rallenti questo processo. Controlla Gestione dispositivi. Prova a disabilitare tutti i dispositivi al suo interno che possono creare porte COM nel sistema (ad esempio, adattatori Bluetooth).

Il dispositivo non viene visualizzato in Strumenti | Porta seriale

Se stai usando Arduino da USB, assicurati che i driver per il chip FTDI siano installati correttamente (vedi istruzioni di installazione). Se stai utilizzando un adattatore USB-UART con un normale Arduino (senza USB), controlla se i driver per questo adattatore sono installati.

Dopodiché, assicurati che la scheda sia realmente connessa: il menu con l'elenco delle porte viene aggiornato ogni volta che apri il menu Strumenti, quindi se hai appena disconnesso la scheda, non sarà in questo elenco.

Controlla se sono in esecuzione programmi che scansionano tutte le porte seriali, come applicazioni di sincronizzazione PDA, driver Bluetooth-USB (come BlueSoleil), demoni virtuali, ecc.

Sui sistemi Windows, il numero di porta COM assegnato da Arudino potrebbe essere troppo grande. Dall'utente zeveland:

"Una piccola nota per coloro che non possono eseguire il flashing di un programma Arduino con un numero di porta COM elevato: prova a diminuire il numero di porta associato al chip FTDI."

"Il mio sistema ha un sacco di porte COM virtuali da un adattatore Bluetooth, quindi ad Arduino è stato assegnato COM17. L'IDE non è riuscito a trovare Arduino, quindi ho rimosso le altre porte virtuali nel Pannello di controllo (sotto XP) e cambiato la porta per il chip FTDI su COM2. Assicurati solo che l'arduino stia utilizzando la porta assegnata e dovresti essere a posto."

Se hai una vecchia versione dei driver FTDI su un computer Mac, dovrai disinstallarli e installarli ultima versione. Vedi questo thread del forum per le istruzioni di installazione.

gnu.io.PortInUseException viene generata durante il flashing del codice o in "Serial Monitor" (su sistemi Mac)?

Errore all'interno di Serial. () gnu.io.PortInUseException: applicazione sconosciuta su gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) su processing.app.Serial. (Serial.java:127) in processing.app.Serial. (Serial.java:72)

Molto spesso, questo errore significa che la porta è occupata da un'altra applicazione. Pertanto, controlla se sono in esecuzione programmi che funzionano con porte seriali o USB, come applicazioni di sincronizzazione PDA, gestori di dispositivi Bluetooth, alcuni firewall, ecc. Tieni inoltre presente che alcuni programmi (ad es. Max/MSP) lasciano aperta la porta seriale, anche quando non lo si utilizza, quindi è meglio chiudere tutte le utilità che utilizzano la porta seriale ed uscire completamente da tali applicazioni.

Se questo errore si verifica nell'ambiente di elaborazione o su Arduino versione 0004 o precedente, è necessario eseguire lo script macosx_setup.command e riavviare il computer. In Arduino 0004, questo script è cambiato e tutti gli utenti dovrebbero eseguirlo (anche quelli che hanno eseguito lo stesso script fornito con Arduino versione 0003). È inoltre necessario eliminare il contenuto della cartella /var/spool/uucp.

Si verificano problemi con i driver USB FTDI

Lo sketch non si avvia all'accensione o al ripristino di Arduino

Molto probabilmente ciò è dovuto al fatto che stai inviando dati dal computer alla scheda immediatamente dopo l'accensione. I primi secondi dopo il reset, il bootloader (programma flashato nel microcontrollore della scheda) attende che il computer invii un nuovo sketch da scrivere nella memoria della scheda. Se durante questi pochi secondi i dati non sono arrivati, il caricatore completerà il suo lavoro per timeout e avvierà il programma precedentemente caricato. Se invii continuamente dati, il caricatore non scadrà e non eseguirà mai lo sketch caricato. Pertanto, è necessario trovare un modo per "trattenere" l'invio dei dati per alcuni secondi dopo aver acceso il dispositivo (ad esempio, programmando il controller per inviare alcuni dati al computer nel blocco setup ()), oppure eseguire il flashing programma nel microcontrollore tramite il bootloader utilizzando un programmatore esterno.

Il firmware sembra funzionare correttamente, ma non funziona nulla

Hai selezionato in modo errato un dispositivo dal menu Strumenti > Microcontrollore. Assicurati che il microcontrollore che scegli corrisponda a quello sulla tua scheda (ATmega8 o ATmega168) - il modello del controller è elencato sul chip più grande.

Assicurati che l'alimentazione sia stabile. Interferenze o interruzioni di corrente possono causare errori di caricamento dello schizzo.

Un altro possibile motivo- la dimensione dello schizzo è troppo grande per il tuo dispositivo. Quando si carica uno schizzo, Arduino 0004 controlla se c'è abbastanza spazio nella memoria dell'ATmega8 per caricare il programma. Allo stesso tempo, Arduino esegue i suoi calcoli basandosi sul fatto che il caricatore nella memoria del controller occupa 1 KB. Forse il tuo dispositivo ha una vecchia versione del bootloader da 2 KB flashato invece di 1 KB, quindi della memoria flash da 8 KB del microcontrollore ATmega8, 2 KB saranno già occupati. Di conseguenza, in questo caso, solo una parte dello sketch verrà caricata nel controller, ma il programma non lo sa a priori, il che porterà a continui reset del dispositivo.

Se hai un programmatore (per una porta parallela o AVR-ISP), puoi aggiornare la versione del bootloader nel microcontrollore usando Strumenti | Masterizza Bootloader. Altrimenti, puoi semplicemente regolare le impostazioni dell'ambiente Arduino specificando la quantità disponibile di memoria del programma nella variabile upload.maximum_size situata all'interno del file di configurazione (vedi le istruzioni per dove trovare questo file). Modificare il valore 7168 specificato in 6144, dopodiché l'ambiente di sviluppo avviserà correttamente quando viene superata la dimensione dello schizzo consentita.

Come posso ridurre la dimensione del firmware?

Il microcontrollore ATmega168 nell'Arduino è un modello abbastanza economico che ha solo 16 KB di memoria di programma, che in realtà non è molto (di cui 2 KB sono già presi dal bootloader).

Se utilizzi calcoli in virgola mobile nel tuo programma, prova a riscrivere il codice per utilizzare calcoli interi: ciò farà risparmiare circa 2 KB di memoria. All'inizio del programma, rimuovi le direttive #include di tutte le librerie inutilizzate.

Controlla anche se il codice del programma può essere ottimizzato per renderlo più breve.

Lavoriamo costantemente per ottimizzare il core di Arduino in modo da ridurre lo spazio occupato dalle sue funzioni nel volume totale dello sketch compilato e lasciare più spazio possibile per la scrittura dei programmi.

Nessun segnale PWM (uscita analogica) viene generato quando si chiama la funzione analogWrite() su qualsiasi pin diverso da 3, 5, 6, 9, 10 e 11

Nel microcontrollore Arduino (ATmega168), il supporto hardware per PWM / analogWrite() è implementato solo su determinati pin. Pertanto, la chiamata della funzione analogWrite() su qualsiasi altro pin del controller genererà un livello di segnale elevato (5 V - per valori maggiori di 128) oppure basso livello(0 V - per valori inferiori a 128). Nelle versioni precedenti di Arduino con il microcontrollore ATmega8, il supporto PWM è implementato solo sui pin 9, 10 e 11.

Perché si verificano errori su funzioni o tipi non dichiarati?

L'ambiente di sviluppo Arduino cerca di generare automaticamente prototipi di funzioni definite dall'utente, in modo che possano essere disposte in qualsiasi ordine nel programma. Tuttavia, il processo di prototipazione non è perfetto e talvolta porta a bug confusi.

Ad esempio, se si dichiara il tipo di dati in un programma e quindi si crea una funzione che utilizza questo tipo, si verificherà un errore quando si tenta di compilare lo schizzo. In questo caso, l'errore si verifica perché il prototipo generato automaticamente per questa funzione si troverà PRIMA della dichiarazione del tipo.

Se si dichiara una funzione che restituisce un risultato a 16 bit (ad esempio, di tipo "unsigned int"), l'ambiente non capirà che si tratta di una funzione e, di conseguenza, non ne creerà il prototipo. In questo caso, dovrai scriverlo manualmente o inserire la dichiarazione di questa funzione nel codice del programma sopra, prima che venga chiamata per la prima volta nel programma.

Quando si tenta di eseguire il flashing del programma, si verifica un errore "firma del dispositivo non valida"

Errore successivo:

Avrdude: Cavolo! Firma del dispositivo non valida. Ricontrolla le connessioni e riprova, oppure usa -F per ignorare questo controllo.

può significare una di queste due cose: o hai selezionato la scheda sbagliata nel menu Strumenti > Scheda, o stai usando la versione sbagliata di avrdude. Per caricare schizzi su Arduino, viene utilizzata una versione leggermente modificata di avrdude. La versione standard invia richieste che identificano il dispositivo in un formato che il bootloader Arduino non comprende, il che porta a un errore. Quindi assicurati di utilizzare la versione esatta di avrdude fornita con Arduino (