Installazione del driver arduino uno su Windows 7. Come funziona Arduino

O meglio, la sua controparte cinese.

Una differenza significativa tra l'analogo cinese e l'originale è il suo prezzo. L'Arduino UNO originale costa attualmente 24,95 dollari sul sito ufficiale, mentre l'analogo cinese con consegna mi è costato meno di 3 dollari (8 volte più economico). Un confronto più dettagliato tra l'originale e l'analogo sarà nel prossimo articolo, ma ora, per non allontanarci dagli obiettivi principali, cominciamo.



Collegamento al PC e installazione del driver.

A causa del fatto che questo analogo cinese di Arduino utilizza un microcircuito per connettersi all'USB CH340G, i driver forniti non sono adatti per l'Arduino originale e i suoi analoghi, che contengono un microcircuito ATMEGA16U2.


Colleghiamo la piattaforma Arduino al computer tramite Cavo USB, a cui sono collegate le stampanti. Il LED sulla scheda si accenderà SU". Un nuovo dispositivo verrà visualizzato in Gestione dispositivi" USB2.0-Seriale". È necessario installare i driver; nell'esempio lavoreremo su Windows.

Scarica l'archivio, decomprimi ed esegui il file CH341SER.EXE. Scegliere INSTALLARE.


Il LED lampeggerà durante l'installazione del driver. RX, dopo l'installazione apparirà un messaggio corrispondente, fare clic su " OK".

Un nuovo dispositivo apparirà in Gestione dispositivi" USB-Seriale CH340". Nel mio caso, il dispositivo è collegato alla porta COM7, tutti possono avere qualsiasi altro numero di porta, l'importante è ricordarlo per lavori futuri.

Primo schizzo.

Il programma Arduino si chiama sketch. Per scrivere uno schizzo su Arduino devi installarlo sul tuo computer. Ambiente di sviluppo Arduino. Scarica l'ultima versione e decomprimila. Lanciamo l'ambiente di sviluppo con il file arduino.exe.

Il programma viene caricato per impostazione predefinita con un'interfaccia russa.

Per selezionare una lingua diversa è necessario utilizzare la voce di menu " File" - "Impostazioni".

Nella lista " Linguaggio dell'editore"puoi selezionare qualsiasi altra lingua, premi " OK" e riavviare l'ambiente di sviluppo. Include bielorusso, ucraino e altre lingue.


Devi anche verificare che la piattaforma Arduino sia selezionata correttamente, per farlo vai su " Utensili" – "Paga:"Avevo selezionato correttamente Anduino UNO per impostazione predefinita, se hai qualcos'altro, seleziona la tua piattaforma dall'elenco.


Devi anche selezionare la porta corretta a cui è connessa la nostra piattaforma. Per fare ciò, ho prestato attenzione a questo durante l'installazione del driver (devi guardare la porta in Gestione dispositivi). Nel mio caso lo è COM7. Ora in " Utensili" - "Porta:"È necessario specificare la porta corretta.

Ora proviamo a eseguire il nostro primo schizzo su Arduino, che farà lampeggiare il LED.

Questa versione dell'ambiente di sviluppo ha già una raccolta di semplici schizzi, incluso il nostro schizzo.
Per fare ciò, andiamo a " File" - "Campioni" - "01.Nozioni di base" – "Battito di ciglia".

Il codice del programma si aprirà in una nuova finestra. Ora prepariamo il LED per il nostro programma. Su molte schede, come la mia, il LED necessario era già saldato insieme al resto dei componenti radio...


Ma potrebbero esserci delle schede che non dispongono di questo LED, nel qual caso dovrai collegarlo tramite i pin presenti sulla scheda. Prendiamo il LED colorato più comune e colleghiamolo tramite un resistore limitatore da 220 Ohm - 1 Kom ai pin della scheda 13 E GND(Si consiglia di scollegare il cavo USB mentre si collega il LED ad Arduino).


Quando tutto è pronto, non resta che caricare il programma per far lampeggiare il LED nel microcontrollore. Nell'ambiente dello sviluppatore, fare clic sul pulsante " Carico" per caricare lo schizzo su Anduino.

Dopo che lo schizzo è stato caricato con successo, il LED inizierà a lampeggiare; nel mio caso, il LED saldato sulla scheda e quello che ho collegato ai pin lampeggiavano.

Per spegnere Anduino è sufficiente scollegare la scheda dal cavo USB.

Qui puoi terminare la tua prima conoscenza con la piattaforma, assicurandoti che tutto funzioni correttamente.

In linea di principio, è universale e su di esso è possibile implementare un numero enorme di progetti.

Iniziamo!

Prima di tutto dobbiamo scaricare e installare l'ambiente di sviluppo con i driver integrati; questo può essere fatto dal sito ufficiale Arduino.cc o dal link. Dopodiché puoi collegare la scheda al tuo computer tramite cavo USB che molto spesso viene incluso, o tramite uno adatto. Arduino utilizza USB B, non c'è niente di speciale in questo. Se tutto è stato eseguito correttamente e la scheda funziona correttamente, Windows troverà un nuovo dispositivo e lo installerà da solo, dopodiché il LED contrassegnato ON o PWR sulla scheda si accenderà.

Ora puoi aprire l'IDE di Arduino e la finestra dell'editor apparirà immediatamente davanti a noi.1) La finestra dell'editor è il luogo in cui scriveremo il codice.

2) Qui verranno visualizzati la finestra di stato, gli errori e altre informazioni sul nostro programma e il processo di caricamento del firmware sulla scheda.

3) Barra degli strumenti, ecc.

A proposito, ide supporta la lingua russa, il che dovrebbe aiutare a padroneggiarla. Ora controlliamo se è tutto a posto e andiamo negli strumenti -> scheda Bacheche. Il nostro consiglio dovrebbe essere immediatamente selezionato lì:


In caso contrario, lo selezioneremo manualmente.

Ora proverà a eseguire il flashing della nostra scheda con il firmware di prova; per fare ciò, andare su File -> esempi -> Fondamenti -> Blink. I commenti e il testo del programma stesso sono apparsi immediatamente nella finestra dell'editor. I commenti si trovano sempre tra i tag */ o con // e possono essere rimossi senza problemi, non influiscono sul funzionamento del programma e non interferiscono più con la concentrazione sull'essenziale.

Dopodiché ti verrà lasciato il seguente codice:

C++

void setup() ( pinMode(13, OUTPUT); ) void loop() ( digitalWrite(13, HIGH); ritardo(1000); digitalWrite(13, LOW); ritardo(1000); )

configurazione nulla() (

pinModalità(13, USCITA);

ciclo vuoto() (

Se ricevi l'errore: Problema durante il caricamento sulla scheda, non disperare, è facile da risolvere; Per fare ciò, andiamo su Strumenti -> Porta -> e lì selezioniamo la porta accanto alla quale è scritto Arduino/Genuino Uno tra parentesi e proviamo a eseguire nuovamente il flashing del controller. Se qualcosa non funziona, scrivi nei commenti, troveremo una soluzione.

Vediamo ora perché lo abbiamo caricato su Arduino.

configurazione nulla() ( )

L'ambiente di sviluppo ci ha generato autonomamente questa parte di codice; qui, tra le parentesi graffe, vengono inizializzati gli input e l'output della scheda, nel nostro caso dice pinMode(13, OUTPUT); Ciò significa che assegniamo all'uscita il pin 13 della scheda a cui è collegato il LED (di cui abbiamo parlato nello scorso articolo).

Anche questa parte di codice viene generata automaticamente; tra le parentesi graffe è scritto il codice che il nostro programma eseguirà direttamente indefinitamente. Cioè, è un ciclo infinito. Dice digitalWrite(13, HIGH); , che in russo significa applicare 5 volt al pin 13, questa azione accende il LED.

ritardo(1000); Questo ritardo interrompe l'esecuzione dell'istruzione successiva per 1000 mi secondi (1 secondo).

scrittura digitale(13, BASSO); tira a terra 13 pin, in russo rimuove 5 volt, il che porta allo spegnimento del LED.

E poiché void loop() è un ciclo infinito, la luce sull'Arduino lampeggerà all'infinito!

Divertirsi con il nudo Scheda Arduino non così divertente come vorremmo a causa del fatto che sulla scheda è installato solo 1 LED e non c'è un solo pulsante, ma questo non significa che far lampeggiare un LED sia tutto ciò che possiamo fare! Facciamolo accendere e usciremo a comando dal computer!

Per fare questo dovremo scrivere firmware per Arduino e utilizzare un port monitor per i test, quindi scriveremo un programma in C#, ma questo sarà nel prossimo articolo.

I programmi non possono essere flashati in Arduino

Ci sono molti componenti coinvolti nel processo di trasferimento di un programma dal computer ad Arduino. Se almeno uno di essi non funziona correttamente, il processo del firmware verrà interrotto. In particolare, il processo del firmware dipende da: driver Arduino, scelta del modello del dispositivo e della porta nell'ambiente Arduino, connessione fisica alla scheda, firmware del controller 8U2 (su Arduino Uno e Mega 2560), bootloader del microcontrollore principale del dispositivo, impostazioni del bit del fusibile, ecc. d. Di seguito sono riportati alcuni suggerimenti per la risoluzione dei problemi di componenti specifici.

Ambiente Arduino

  • Assicurati che il tuo modello Arduino sia selezionato nel menu Strumenti > Scheda. Se possiedi un Arduino Uno, seleziona la voce apposita. Tieni inoltre presente che i modelli successivi ad 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 l'etichetta sul microcontrollore (il chip più grande sulla scheda). Maggiori informazioni sul menu Scheda possono essere trovate nella sezione Ambiente di sviluppo Arduino.
  • Quindi controlla che sia selezionata la porta corretta nel menu Strumenti > Porta seriale (se la porta non viene visualizzata, prova a riavviare IDE quando il dispositivo è collegato al computer). SU Computer Mac, la porta seriale dovrebbe assomigliare a questa: /dev/tty.usbmodem621 (per Arduino Uno o Mega 2560) o /dev/tty.usbserial-A02f8e (per versioni precedenti di Arduino con chip FTDI). Su Linux: /dev/ttyACM0 o qualcosa di simile (per Arduino Uno o Mega 2560), o /dev/ttyUSB0 (per versioni precedenti di Arduino). Su Windows sarà una porta COM, ma prima di selezionarla in Gestione dispositivi è necessario verificare quale è associata ad Arduino. Se queste porte non sono elencate, vedere la sezione successiva sui driver.

Driver

I driver consentono al software applicativo su un computer (ad esempio, l'ambiente Arduino) di comunicare con l'hardware ad esso collegato (scheda Arduino). In relazione ad 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 driver standard (USB CDC) del sistema operativo. Altre schede Arduino, dove il ruolo di convertitore USB-UART è svolto da un chip FTDI, 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 ha alcuna importanza quale nome esatto della porta verrà assegnato ad Arduino.

  • Su Windows 7 (in particolare la versione a 64 bit), potrebbe essere necessario andare in Gestione dispositivi e aggiornare i driver Arduino Uno o Mega 2560. Per fare ciò, nel gestore, fare clic con il tasto destro sul dispositivo (la scheda deve essere collegata al computer) e selezionare nuovamente il file .inf corrispondente di Windows. Questo file si trova nella cartella drivers/ del software Arduino (ma non nella sottodirectory FTDI USB Drivers).
  • Se, durante l'installazione dei driver Arduino Uno o Mega 2560 in Windows XP, ricevi il seguente errore: "Il sistema non riesce a trovare il file specificato", prova questa soluzione (sull'aggiunta della chiave "RunOnce" alla chiave di registro "HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\Windows\Versionecorrente").
  • 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 Arduino per comunicazione seriale. Pertanto, la versione Linux di questo ambiente include una libreria RXTX con patch, che funziona anche con i dispositivi /dev/ttyACM*. Ce n'è anche uno speciale (11.04) che include il supporto per tali dispositivi. Se usi 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 blocca all'avvio, oppure 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. Quando avvii o apri il menu Strumenti, l'ambiente di sviluppo Arduino scansiona di conseguenza tutte le porte seriali del tuo computer, la presenza di tali porte di rete può talvolta portare a blocchi o arresti anomali del programma;
  • Assicurati di non utilizzare scanner di porte seriali come USB Cellular Wifi Dongle (come Sprint o Verizon), applicazioni di sincronizzazione PDA, driver Bluetooth-USB (come BlueSoleil), demoni virtuali, ecc.
  • Assicurati che un firewall (come ZoneAlarm) non stia causando il blocco della porta seriale.
  • È inoltre necessario chiudere tutti i programmi che monitorano i dati che viaggiano tramite USB tra Arduino e il PC (ad esempio Processing, PD, vvvv, ecc.).
  • Su Linux: prova a eseguire l'ambiente Arduino come superutente, almeno temporaneamente, per vedere se aiuta a eseguire il flashing di Arduino o meno.

Collegamento fisico alla scheda

  • Prima di tutto assicuratevi che Arduino sia acceso (lit LED verde) e collegato a un computer.
  • Sui computer Mac ci sono alcuni problemi quando collegamento di Arduino Uno e Mega 2560 tramite hub USB. Se nel menu "Strumenti > Porta seriale" non appare nulla, provare a collegare la scheda direttamente al computer e riavviare IDE di Arduino.
  • Durante l'installazione del firmware, scollegare tutti i dispositivi dai pin digitali 0 e 1, poiché questi pin sono collegati all'interfaccia per collegare Arduino al computer (dopo aver installato con successo il codice nel 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 tocchi alcun oggetto metallico conduttivo.
  • Prova un altro cavo USB, 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 del firmware. (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 accidentalmente flashati con il bootloader sbagliato. Tali modelli richiedono la pressione fisica del pulsante di ripristino prima di caricare il programma; Vedi sotto per maggiori dettagli al riguardo.
  • Su alcuni computer è necessario premere il pulsante reset (sulla scheda) dopo aver premuto il pulsante Upload nell'ambiente Arduino. Sperimenta diversi intervalli di tempo tra le pressioni: da 0 a 10 secondi o più con un intervallo di circa 2 secondi.
  • Se ricevi questo errore: "Il dispositivo non risponde correttamente". prova a eseguire nuovamente il flashing del programma (in altre parole, ripristina la scheda e fai nuovamente clic sul pulsante Carica).

Caricatore

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

Se ancora non è possibile eseguire il flashing dei programmi, porre una domanda sul forum. Ti preghiamo di includere le seguenti informazioni nel tuo messaggio:

  • La versione del tuo sistema operativo.
  • Il tipo del tuo Arduino. Se si tratta di un Mini, LilyPad o un altro modello che richiede cablaggio aggiuntivo, includi una foto del tuo circuito nel tuo post, se possibile.
  • Hai già flashato con successo la scheda? Se sì, descrivi cosa hai fatto con la scheda prima che smettesse di funzionare, cosa software Hai recentemente installato o disinstallato dal tuo computer?
  • Messaggi che appaiono quando si tenta di caricare un programma in Arduino. Per ricevere messaggi, tieni premuto il pulsante Maiusc mentre fai clic sul pulsante Carica sulla barra degli strumenti.

Si verifica l'errore "La cartella di creazione è scomparsa o non è possibile scriverla" (su Mac OS X)

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

L'ambiente Arduino non si avvia dopo l'aggiornamento di Java sui computer Mac

Ultimo Aggiornamento Java Apple sta tentando di utilizzare versioni a 64 bit delle librerie native. Tuttavia, il software Arduino utilizza una versione a 32 bit della libreria RXTX. All'avvio di Arduino appare un errore come questo:

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

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

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

L'ambiente di sviluppo Arduino pre-elabora il tuo schizzo manipolando il codice utilizzando espressioni regolari. A volte alcune righe di testo causano il fallimento di questo processo. Se vedi un errore come questo:

Java.lang.StackOverflowError in java.util.Vector.addElement (fonte sconosciuta) in java.util.Stack.push (fonte sconosciuta) in 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. java) su com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java)

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

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

Poiché il pin RX è disconnesso, il bootloader di Arduino può ricevere rumore invece di dati, il che significa che non andrà mai in timeout e, di conseguenza, il programma non si avvierà. Per risolvere questo problema, prova a collegare il pin RX a terra tramite un resistore da 10k ohm (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 Logitech "LVPrcSrv.exe". Apri Task Manager e trovalo nell'elenco dei processi. Se è lì, dovresti completare il processo prima di eseguire il flashing del programma.

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

Se utilizzi un Arduino Diecimila o una versione precedente con USB (tipo NG), assicurati che il ponticello 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 al connettore corrispondente), il ponticello dovrebbe chiudere i due pin che si trovano più vicini al connettore di alimentazione. Se la scheda è alimentata tramite USB, il ponticello dovrebbe chiudere i due pin che si trovano più vicini al connettore USB. Questa immagine mostra la posizione del ponticello se la scheda è alimentata da USB.

(grazie a mrbbp per il messaggio e l'immagine)

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

Alcune schede Arduino Diecimila sono state accidentalmente flashate con il bootloader Arduino NG. Funziona bene, solo che ha un timeout più lungo dopo il ripristino della scheda (poiché Arduino NG non implementa ripristino automatico, che richiede la sincronizzazione manuale del processo firmware). Puoi riconoscere il bootloader da NG dal LED collegato al pin 13: in Arduino NG dopo aver ripristinato la scheda lampeggia 3 volte e in Diecimila - 1 volta. Se sul tuo Diecimila è installato un bootloader NG, prima di eseguire il flashing dello sketch del furgone devi premere fisicamente il pulsante di reset situato sulla scheda. Puoi anche eseguire il flashing del bootloader corretto da Diecimila sul tuo dispositivo per ulteriori informazioni, consulta la pagina sul bootloader.

Si verifica un errore durante l'esecuzione di arduino.exe su Windows

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

Arduino ha riscontrato un problema e deve essere chiuso.

quindi prova a eseguire Arduino utilizzando il file run.bat. Per favore sii paziente perché... L'avvio dell'ambiente Arduino richiede del tempo.

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

Se ricevi un errore come questo:

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

probabilmente dovrai aggiornare il tuo sistema a Mac OS X 10.3.9 o versione successiva. Le librerie di sistema precedenti non sono compatibili con Arduno.

Grazie a Gabe462 per il messaggio.

All'avvio dell'ambiente Arduino, si verifica un errore UnsatisfiedLinkError (con un messaggio relativo alla libreria librxtxSerial.jnilib)

Se ricevi questo errore all'avvio di Arduino:

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

allora probabilmente hai una vecchia versione della libreria responsabile della comunicazione. Cercare 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 segnalato da Anurag Sehgal)

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

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

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

verifica di aver estratto correttamente il contenuto dell'archivio .zip di Arduino - 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 Cygwin su Windows?

Se Cygwin è già installato sul tuo computer, quando provi a compilare uno 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 è molto probabilmente causato dall'utilizzo di versioni incompatibili della DLL Cygwin.

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

Assicurati inoltre che Cygwin non sia in esecuzione 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 tua distribuzione cygwin esistente (che molto probabilmente si trova nella cartella c:\cygwin\bin).

Ci vuole molto tempo per aprire l'ambiente Arduino e il menu Strumenti (su Windows)

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

Il dispositivo non viene visualizzato in Strumenti | Porta seriale

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

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 scollegato la scheda, non sarà in questa lista.

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 ad Arudino potrebbe essere troppo grande. Dall'utente zeveland:

"Una piccola nota per coloro che non riescono a eseguire il flashing di un programma in Arduino con un numero di porta COM elevato: provare a ridurre il numero di porta associato al chip FTDI."

"Il mio sistema ha un sacco di porte COM virtuali dall'adattatore Bluetooth, quindi ad Arduino è stata assegnata la porta COM17. L'IDE non è riuscito a trovare Arduino, quindi ho cancellato le altre porte virtuali nel Pannello di controllo (sotto XP) e ho cambiato il porta per il chip FTDI su COM2. Assicurati solo che Arduino utilizzi la porta designata e tutto andrà bene."

Se hai una vecchia versione dei driver FTDI sul tuo computer Mac, dovrai rimuoverli e installarli ultima versione. Per le istruzioni di installazione, vedere questo thread del forum.

Durante il flashing del codice o nel programma "Serial Monitor", si verifica un errore gnu.io.PortInUseException (sui sistemi Mac)?

Errore all'interno del seriale. () gnu.io.PortInUseException: applicazione sconosciuta su gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) su elaborazione.app.Serial. (Serial.java:127) su elaborazione.app.Serial. (Serial.java:72)

Molto spesso questo errore significa che la porta è occupata da un'altra applicazione. Pertanto, controlla se ci sono programmi in esecuzione sulle porte seriali o USB, come applicazioni di sincronizzazione PDA, gestori di dispositivi Bluetooth, alcuni firewall, ecc. Tieni inoltre presente che alcuni programmi (ad esempio Max/MSP) lasciano la porta seriale aperta, anche quando non la 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 è stato modificato e tutti gli utenti devono eseguirlo (anche quelli che hanno eseguito lo stesso script fornito con Arduino versione 0003). È inoltre necessario eliminare il contenuto della cartella /var/spool/uucp.

Problemi con i driver USB FTDI

Lo schizzo non si avvia quando viene applicata l'alimentazione o l'Arduino viene ripristinato

Ciò molto probabilmente accade perché stai inviando dati dal computer alla scheda immediatamente dopo l'accensione. I primi secondi dopo il ripristino, il bootloader (un programma firmware nel microcontrollore della scheda) attende che il computer invii un nuovo schizzo da scrivere nella memoria della scheda. Se entro questi pochi secondi non arrivano dati, il caricatore andrà in timeout e avvierà il programma precedentemente caricato. Se invii dati continuamente, il caricatore non andrà in timeout e non eseguirà mai lo schizzo caricato. Pertanto, è necessario trovare un modo per "trattenere" l'invio dei dati per alcuni secondi dopo l'accensione del dispositivo (ad esempio, programmando il controller per inviare alcuni dati al computer nel blocco setup()), oppure eseguire il flashing del dispositivo. programmare nel microcontrollore sopra il bootloader utilizzando un programmatore esterno.

Il firmware sembrava avere successo, ma non funziona nulla

Hai selezionato il dispositivo sbagliato dal menu Strumenti > Microcontrollore. Assicurati che il microcontrollore scelto corrisponda a quello installato sulla tua scheda (ATmega8 o ATmega168): il modello del controller è indicato sul chip più grande.

Assicurarsi che l'alimentazione sia stabile. Interferenze o interruzioni di corrente possono causare errori durante il caricamento di uno schizzo.

Ancora uno possibile motivo- la dimensione dello schizzo è troppo grande per il tuo dispositivo. Durante il caricamento di uno sketch, l'Arduino 0004 controlla se c'è abbastanza spazio di memoria nell'ATmega8 per il programma caricato. Allo stesso tempo Arduino esegue i suoi calcoli in base al fatto che il bootloader nella memoria del controller occupa 1 KB. Forse il tuo dispositivo ha una vecchia versione del bootloader con una capacità di 2 KB invece di 1 KB, quindi degli 8 KB di memoria flash del microcontrollore ATmega8, 2 KB saranno già occupati. Di conseguenza, in questo caso, solo una parte dello schizzo verrà caricata nel controller, ma il programma non lo sa a priori, il che porterà a costanti ripristini del dispositivo.

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

Come posso ridurre le dimensioni del firmware?

Il microcontrollore ATmega168 di Arduino è un modello abbastanza economico che dispone di soli 16 KB di memoria di programma, che in realtà non sono molti (di cui 2 KB sono già occupati dal bootloader).

Se utilizzi calcoli in virgola mobile nel tuo programma, prova a riscrivere il codice per sostituirli con calcoli con numeri 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 all'ottimizzazione del core di Arduino per ridurre lo spazio occupato dalle sue funzioni nel volume totale dello sketch compilato e lasciare quanto più spazio possibile per la scrittura dei programmi.

Nessun segnale PWM (uscita analogica) viene generato quando si chiama analogWrite() su pin diversi 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 alla funzione analogWrite() su qualsiasi altro pin del controller risulterà in uno dei due alto livello segnale (5 V - per valori superiori a 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é ricevo errori relativi a funzioni o tipi non dichiarati?

L'ambiente di sviluppo Arduino tenta di generare automaticamente prototipi di funzioni definite dall'utente, in modo che possano essere inserite in qualsiasi ordine nel programma. Tuttavia, il processo di generazione dei prototipi non è perfetto e talvolta porta a strani errori.

Ad esempio, se dichiari il tuo tipo di dati in un programma e poi crei una funzione che utilizza questo tipo, si verificherà un errore quando tenti di compilare lo schizzo. In questo caso, l'errore si verifica perché il prototipo generato automaticamente per questa funzione verrà posizionato PRIMA della dichiarazione del tipo.

Se dichiari una funzione che restituisce un risultato a 16 bit (ad esempio, di tipo "unsigned int"), il framework non capirà che si tratta di una funzione e, quindi, non ne creerà un prototipo. In questo caso, dovrai scriverlo manualmente o posizionare la dichiarazione di questa funzione più in alto nel codice del programma, prima che venga chiamata per la prima volta nel programma.

Quando si tenta di eseguire il flashing del programma, viene visualizzato l'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 due cose: o hai selezionato la scheda sbagliata nel menu Strumenti > Scheda, oppure stai utilizzando la versione sbagliata di avrdude. Per caricare gli schizzi su Arduino, viene utilizzata una versione leggermente modificata di avrdude. La versione standard invia richieste che identificano il dispositivo in un formato incomprensibile al bootloader di Arduino, il che porta ad un errore. Pertanto, assicurati di utilizzare la versione esatta di avrdude fornita con Arduino (

Il nucleo della piattaforma Arduino è un chip microcontrollore noto come ATmega328. L'ATmega328 è in realtà un computer a 8 bit a tutti gli effetti: una volta acceso, il suo processore carica un byte da una determinata posizione di memoria e lo interpreta come un comando. Ciò che accade dopo dipende dal valore di questo byte. Solo che, a differenza dei computer che conosciamo, ATmega328 non ne esegue nessuno sistema operativo : L'utilizzo delle risorse è sotto il completo controllo del programmatore. Non possiamo fare affidamento su un sistema operativo che potrebbe allocare male la memoria, traboccarla o portare ad altri eventi indesiderati sistema automatico

conseguenze. Inoltre, il processore può funzionare 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 delle varie attività in modo tale che sembra che diversi programmi sul tuo computer funzionano contemporaneamente). Il nuovo Arduino ha la memoria completamente vuota, quindi il primo byte elaborato dal processore ha valore zero: “Nessuna operazione”. Prima utilizzandoArduino

è necessario caricare nella sua memoria il programma eseguibile, cioè una sequenza di bit, il primo dei quali viene interpretato come un comando ed eseguito. Se il comando necessita di parametri per l'esecuzione, questi vengono presi dai successivi byte di memoria. Dopo aver eseguito un 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 memorizzata nella memoria non volatile, quindi alla riaccensione il programma riparte dall'inizio. La frequenza delle operazioni del processore è impostata da un generatore di clock da 16 MHz. L'alimentazione può essere fornita tramite il connettore USB. Lavorare senzaÈ necessaria un'alimentazione separata da 7 a 12 V (questa tensione viene normalizzata ai livelli richiesti da un regolatore di bordo, quindi per questo è sufficiente un alimentatore economico). A bordo sono disponibili per l'utente entrambi i livelli di tensione di 5 V e 3,3 V, dai quali è possibile spremere un massimo di 50 mA di corrente.

La memoria di Arduino è composta da tre tipi: memoria flash, dove è memorizzato il programma da 32 KB; RAM(SRAM) 2 KB, dove il processore memorizza e riscrive le variabili utilizzate nel programma; e memoria di sola lettura (EEP-ROM) da 1 KB, in cui il programmatore può memorizzare i dati che dovrebbero rimanere al riavvio del controller (come la memoria flash in cui è memorizzato il programma). Rispetto ai computer moderni, che gestiscono almeno diversi gigabyte, 35 kbyte sembrano ridicoli, ma in realtà sono sufficienti per la maggior parte degli scopi. Poiché non esiste un 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 può essere abbastanza difficile da tenere traccia durante il debug. Dovresti sempre tenere sotto controllo il numero di variabili nel tuo programma.

Il processore ATmega328 è collegato a 14 porte I/O discrete (numerate da 0 a 13), 6 ingressi analogici e una porta USB. L'ingresso/uscita digitale è collegamento elettrico, che può avere due stati logici: 1 e 0, oppure VERO e FALSO, oppure, come in Sintassi di Arduino, BASSO e ALTO. Se il segnale è BASSO, il pin corrispondente ha un potenziale zero di 0 V, ovvero è collegato a filo comune. Se il segnale è ALTO, il livello di tensione tra questo pin e terra è 5 V.

I pin 0 e 1 servono 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 uno dopo l'altro. I pin 2 e 3 possono essere utilizzati anche come interrupt. Un'interruzione è un segnale elettrico su un ingresso discreto che interrompe il programma corrente del processore quando si verifica uno stato logico specificato. Gli interrupt esistono anche nei processori per computer convenzionali. Dopo che si verifica un'interruzione, il processore memorizza il suo stato in memoria e rinvia l'esecuzione del programma, saltando all'esecuzione del gestore dell'interruzione: 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.

I pin 3, 5, 6, 9, 10 e 11 possono essere utilizzati come uscite PWM (Modulazione di larghezza di impulso) e dispongono di 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. Da notare la cartina dell'Italia sul retro.

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

Oltre all'uso standard come ingressi/uscite digitali, i pin 10, 11, 12 e 13 offrono la possibilità di comunicare con dispositivi periferici esterni.

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

cioè convertono qualsiasi tensione compresa tra 0 e 5 V in un numero compreso tra 0 e 1023 a cui è possibile accedere in memoria.

Tutte le piattaforme sono montate su una tavola di 60,6 mm × 53,4 mm e di peso non superiore a 25 g (Fig. 1).

Le schede dispongono anche di connettori USB A/B con i quali è possibile collegarle al computer per la comunicazione. La connessione USB fornisce anche alimentazione ad Arduino quando è collegato al computer, quindi non è necessaria una fonte di alimentazione esterna per cominciare.

Programma

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

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

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


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 Programma Arduino(Fig. 2) cliccando sul pulsante Verifica nell'angolo in alto a sinistra della finestra: il processo di compilazione traduce il programma C++ nei corrispondenti codici macchina del processore ATmega328. Dopo la compilazione, lo sketch eseguibile può essere caricato nella memoria di Arduino tramite cavo USB cliccando sul pulsante Upload. Potrebbe essere necessario selezionare la porta COM appropriata dal menu se ne è disponibile più di una. Il caricamento di uno schizzo fa sempre sì che il compilatore venga avviato per primo. Lo schizzo viene eseguito immediatamente al termine del download.

Ulteriori funzionalità vengono aggiunte al linguaggio principale utilizzando librerie esterne sviluppate dal team Arduino o da sviluppatori 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 della nuova sintassi.