Portul de comunicație virtual Arduino Uno nu apare. Depanare Începeți cu Arduino. Mediul Arduino nu pornește după actualizarea Java pe computerele Mac

Miezul platformei Arduino este un cip de microcontroler cunoscut sub numele de ATmega328.

ATmega328 este de fapt un computer pe 8 biți din toate punctele de vedere: odată pornit, procesorul său încarcă un octet dintr-o locație de memorie dată și interpretează acest lucru ca o comandă. Ce se întâmplă în continuare depinde de valoarea acestui octet. Numai că, spre deosebire de computerele pe care le cunoaștem, ATmega328 nu rulează niciun sistem de operare: utilizarea resurselor este sub controlul complet al programatorului. Nu ne putem baza pe un sistem de operare care poate să aloce prost memoria, să o depășească sau să conducă la alte nedorite. sistem automat consecinte. În plus, procesorul poate lucra doar la o sarcină la un moment dat (probabil că știți că toate procesoarele funcționează astfel, dar sistemul de operare distribuie timpul de lucru al diferitelor sarcini în așa fel încât să pară că mai multe programe de pe computerul dvs. rulează în același timp).

Dacă într-adevăr aveți nevoie de mai multe explicații pentru a ajunge la sfârșitul acestei configurații, aveți una, dar de obicei puteți face fără ea! 😉. Acum trebuie să configurați software, astfel încât să se potrivească cu harta dvs. Din bara de meniu, faceți clic pe Instrumente, apoi pe Tip card și selectați cardul pe care doriți să îl conectați.

Apoi, când ați terminat, faceți clic din nou pe Instrumente și selectați portul care tocmai a fost adăugat în listă. Și după ce verificați dacă cardul este conectat, rulați fișierul de conținut. Faceți clic pe Da când vi se solicită drepturi de administrator, apoi faceți clic pe Instalare. Odată ce instalarea este finalizată, se va deschide o casetă de dialog și vă va anunța. Odată ce ați făcut acest lucru, reporniți computerul dacă este necesar și cardul va fi acum recunoscut! 🙂.

Noul Arduino are memoria complet goală, prin urmare, primul octet procesat de procesor are o valoare zero: „Fără operație”. Înainte folosind Arduino trebuie să încărcați programul executabil în memoria sa, adică. o secvență de biți, dintre care primul este interpretat ca o comandă și executat. Dacă comanda are nevoie de parametri pentru execuție, aceștia sunt preluați din următorii octeți de memorie. După executarea unei comenzi, procesorul încarcă octetul primit în memorie și îl interpretează ca o comandă. Dacă opriți Arduino, memoria nu este ștearsă. Secvența de octeți încărcați în ea este stocată în memoria nevolatilă, așa că atunci când o porniți din nou, programul pornește din nou de la început.

Dacă cardul tău funcționează corect, poți trece la următoarea parte a acestei pagini 😉. Apoi scoateți cardul și reasamblați. La finalizare, apare un mesaj între editor și consolă care indică faptul că inscripția a avut succes. Harta dvs. este acum încărcată!

Pentru a vă ușura viața viitorilor programatori, iată câteva sfaturi. Activați informațiile de eroare. . Într-adevăr, dacă există o eroare în programul dvs. atunci când doriți să compilați sau chiar să încărcați programul, va apărea un mesaj de eroare în partea de jos a ferestrei. În unele cazuri, acest mesaj nu este suficient de clar sau de precis pentru a identifica problema, caz în care informații mai detaliate despre mesajele de eroare pot fi foarte practice.

Frecvența operațiunilor procesorului este setată de un generator de ceas de 16 MHz. Alimentarea poate fi furnizată prin conectorul USB. Să lucrezi fără Sursa de alimentare USB pentru Arduino Este necesară o sursă de alimentare separată de 7 până la 12 V (această tensiune este normalizată la nivelurile cerute de un regulator de bord, deci aveți nevoie doar de o sursă de alimentare ieftină pentru aceasta). La bord, ambele niveluri de tensiune de 5 V și 3,3 V sunt disponibile utilizatorului, din care se poate stoarce maximum 50 mA de curent.

Afișați numărul liniei și activați copia de rezervă a codului. . Într-adevăr, pentru a evita să vă pierdeți în codul dvs. atunci când acesta devine lung, numărul liniei vă va arăta care linie este acea parte a codului dvs. și vă va permite să vă întoarceți mai ușor acolo.

Din nou, există două casete de selectare în setări. Evident, acestea nu sunt mijloacele cu care ne vom ocupa în această parte. Nu, vom vedea mijloacele de comunicare pe care le are placa Arduino. Are acest mic cartonaș sub capotă! 😉. Totul depinde de ceea ce vrei să comunici prin media pe care o oferi. Cu toate acestea, această soluție este încă instabilă și necesită ca utilizatorul să se afle în fața sistemului de alarmă. Astăzi, odată cu dezvoltarea tehnologiei și „totul conectat”, ar fi regretabil să nu putem merge mai departe.

Memoria Arduino este formată din trei tipuri: memorie flash, unde este stocat programul de 32 KB; RAM(SRAM) 2 KB, unde procesorul stochează și rescrie variabilele utilizate în program; și memorie read-only (EEP-ROM) 1 KB, unde programatorul poate stoca date care ar trebui să rămână atunci când controlerul este repornit (cum ar fi memoria flash în care este stocat programul). În comparație cu computerele moderne, care se ocupă de cel puțin câțiva gigaocteți, 35 kbytes pare ridicoli, dar de fapt este suficient pentru majoritatea scopurilor. Din cauza lipsei sistem de operare, utilizarea memoriei este în întregime responsabilitatea dvs.: dacă are loc o depășire a memoriei sau este accesată o locație de memorie inexistentă, programul dvs. se poate comporta imprevizibil, iar acest lucru este destul de dificil de urmărit în timpul depanării. Ar trebui să păstrați întotdeauna numărul de variabile sub control în programul dumneavoastră.

Acesta este scopul principal al comunicării. Aceste informații pot alimenta o bază de date, pot servi în calcule sau altceva. Totul depinde de ce faci cu el. Când se transmit informații, este necesar ca emițătorul, care va transmite informațiile transmise, și destinatarul, care va primi informațiile, să le prelucreze.

Unul comunică cu celălalt în timp ce celălalt primește mesajul trimis de celălalt. Cu toate acestea, există două săgeți în desenul dvs. Poate altcineva care primește mesajul să trimită date? Totuși, totul depinde de tipul de conexiune. De exemplu, putem distinge între trei tipuri de conversații. Sunt doar doi interlocutori în fiecare conversație. Ei spun că este o conexiune punct la punct. În acest caz, orice alt dispozitiv care utilizează canalul serial și protocolul său de comunicare poate comunica. Ce este un protocol de comunicare?

Procesorul ATmega328 este conectat la 14 porturi I/O discrete (numerotate de la 0 la 13), 6 intrări analogice și un port USB. Intrarea/ieșirea digitală este conexiune electrică, care poate avea două stări logice: 1 și 0, sau TRUE și FALSE, sau, ca în Sintaxa Arduino, JOS și ÎNALT. Dacă semnalul este LOW, pinul corespunzător are un potențial zero de 0 V - adică conectat la fir comun. Dacă semnalul este HIGH, atunci nivelul de tensiune dintre acest pin și masă este de 5 V.

Este un set de reguli care determină modul în care două dispozitive comunică între ele. Pe de altă parte, două dispozitive care comunică cu un alt protocol nu vor fi înțelese corect și pot chiar interpreta acțiunile de efectuat, ceea ce va fi opusul a ceea ce s-a solicitat. Ar fi păcat dacă contactul tău „îi dă pisicii ceva de mâncare” atunci când îi ceri să „hrănească pisica”. Pe scurt, dacă dispozitivele de comunicare nu folosesc protocolul corect, poate deveni un adevărat kapharnaum!

Link-uri seriale, există un pachet! Dezavantajul, deși poate fi și un avantaj, este că doar tu poți folosi un astfel de mesaj. Și pe cine vom vedea printre ei? Sunt unele mai bune decât altele? oo. Apoi, da, sunt unii care au avantaje față de alții. Se poate observa în esență tipul de utilizare pe care dorește să o facă și viteza cu care dispozitivele pot comunica.

Pinii 0 și 1 sunt folosiți pentru recepția și transmiterea în serie a datelor: prin intermediul acestora, placa Arduino poate comunica cu modulele (scuturile) atașate acesteia folosind protocolul serial. Protocoalele seriale sunt protocoale de comunicație în care fiecare bit este transmis/primit pe rând unul după altul. Pinii 2 și 3 pot fi folosiți și ca întreruperi. O întrerupere este un semnal electric la o intrare discretă care întrerupe programul curent al procesorului atunci când apare o stare logică specificată. Întreruperile există și în procesoarele convenționale ale computerelor. După ce apare o întrerupere, procesorul își stochează starea în memorie și amână execuția programului, trecând la execuția handler-ului de întrerupere: o bucată scurtă de cod de program necesară pentru a repara întreruperea. La finalizare, procesorul reia starea pe care o avea înainte de sosirea întreruperii și reia execuția programului.

Cum să faci față conflictelor cygwin pe Windows?

Acesta definește semnalul electric, protocolul folosit și tot ce ține de mecanică. Pentru a comunica printr-o legătură serială, două dispozitive trebuie să aibă cel puțin 3 cabluri. Primul cablu este un standard electric, numit în mod obișnuit împământare electrică. Un pic când te măsori: măsori 1,7 metri de la sol până în vârful capului, nu 4,4 metri, pentru că ești la primul etaj și te odihnești la parter. Unul este folosit pentru a trimite date pentru un expeditor, dar și pentru a primi date de la un alt expeditor. Vă permite să emiteți unul și să îl primiți pe celălalt. Verde este cel care este folosit pentru a trimite date de pe primul card, dar servește și pentru a primi datele trimise pentru al doilea card. Orange este cel care este folosit pentru a trimite date de pe al doilea card de card, dar servește și pentru a primi datele trimise pentru primul card.

  • Acest lucru permite măsurarea tensiunii în timp ce se fixează același cadru de referință.
  • Celelalte două cabluri asigură transmisia de date.
  • Negrul este masa electrică generală.
Acest minim.

Pinii 3, 5, 6, 9, 10 și 11 pot fi utilizați ca ieșiri PWM (Pulse Width Modulation) și au unele setări analogice. În consecință, celulele lor de memorie conțin valori între 0 și 255.

Fig.1 Arduino UNO, cum arată de sus și de jos. Notați harta Italiei pe spate.

Pinul 13 este, de asemenea, conectat la LED-ul de la bord. Când semnalul este LOW LED-ul este stins, iar când semnalul este HIGH LED-ul este aprins.

Semnal electric și protocol

Standardul nu interzice utilizarea altor cabluri utilizate pentru controlul fluxului și tratarea erorilor. În primul rând, trebuie știut că două dispozitive electronice sau computerizate folosesc date sub formă de biți pentru a comunica. De obicei, aceste seturi constau din 8 biți, care formează apoi un octet. Aceste descărcări sunt de fapt niveluri de tensiune electrică. Nivelurile de tensiune impuse de standard pot fi indicate într-un tabel după cum urmează.

Astfel, toate tensiunile care depășesc valorile setate, deci între -3 V și 3 V, sub -25 V și peste 25 V, sunt în afara limite admisibile. Prea mult înaltă tensiune poate deteriora echipamentul. Când tensiunile de la -3 V la -3 V sunt ignorate, în aceste zone se găsesc majoritatea și chiar aproape toți paraziții. Aceasta este o modalitate de a evita erorile de transmisie.

Pe lângă utilizarea standard ca intrări/ieșiri digitale, pinii 10, 11, 12 și 13 oferă capacitatea de a comunica cu dispozitivele periferice externe.

Intrările analogice sunt etichetate A0...A5: fiecare are o rezoluție digitală de 10 biți,

adică convertesc orice tensiune între 0 și 5 V într-un număr între 0 și 1023 care poate fi accesat în memorie.

Conectarea Arduino la computer

Când nu există nicio comunicare pe legătura serială, există așa-numita stare latentă. Adică, un nivel logic este întotdeauna prezent. Acesta este nivelul logic. Lăsați tensiunea să fie între -3V și -25V. Dacă această condiţie viteza de mers în gol lipsește, poate exista o problemă de conexiune.

Datele care trec prin portul serial sunt transmise în formă binară. Poate că nu știți acest lucru, dar o literă de la tastatură este codificată în 8 biți, deci un octet. De fapt, este codificat de 7 biți, dar prin adăugarea unui 0 înainte de codificare își păstrează semnificația și permite codificarea literei în 8 biți. Astfel, pentru fiecare caracter de la tastatură puteți găsi o codificare pe 8 biți. În consecință, acestea sunt baze zecimale, octale, hexazecimale și binare. Unele dintre ele vă sunt necunoscute, după cum am văzut.

Toate platformele sunt montate pe o placă care măsoară 60,6 mm × 53,4 mm și nu cântărește mai mult de 25 g (Fig. 1).

Plăcile au și conectori USB A/B cu care le puteți conecta la computer pentru comunicare. Conexiunea USB oferă, de asemenea, alimentare Arduino atunci când este conectat la computer, astfel încât nu aveți nevoie de o sursă de alimentare externă pentru început.

Pe noi, ceea ce ne interesează este baza binară. Da, pentru că codul binar este o secvență de 0 și 1, care sunt stările logice ale lui 0 și 1. Trebuie să vă imaginați că există un receptor. Pentru a nu merge prea repede, vom rămâne cu această singură scrisoare. Deci vom vedea că transmitem prin calea serială. Într-adevăr, dacă se primește un apel și nimeni nu răspunde după oprire, nu poate avea loc nicio conversație. În cele din urmă, după ce ai spus tot ce trebuie să spui, închei conversația cu un „La revedere” sau „Bună!”, „Mai mult!” Și așa mai departe. Deci va exista un bit de sfârșit de bit sau un bit de oprire care va face același lucru pe legătura serială.

  • Acest mesaj inițial vă permite să deschideți conversația.
  • El este cel care se va angaja într-o conversație cu interlocutorul său.
  • Elementul principal al conversației.
Comunicarea în serie funcționează aici.

Program

Un program Arduino, ca orice alt program de procesor, este o secvență de biți în limbajul mașinii. Pentru a ușura viața programatorilor, echipa Arduino a dezvoltat un limbaj de programare nivel înalt, un compilator și un instrument intermitent pentru descărcarea codului mașinii în memoria Arduino.

Toate aceste instrumente sunt incluse într-un singur program IDE (Integrated Development Environment), gratuit

De asemenea, știți de ce calea secvențială se numește așa? De fapt, acest lucru se datorează faptului că datele transmise sunt trimise una după alta. Daca va place sunt in coada le-lei. Exact ca o conversație între două persoane: persoana care vorbește nu poate spune mai multe propoziții în același timp, sau mai multe cuvinte sau sunete. Fiecare element urmează într-o ordine logică.

Folosind o cronogramă, s-ar observa următoarele. Este ca un număr care are unități, zeci, sute, mii etc. referirea poate fi făcută la bitul cel mai puțin semnificativ din codul binar, ceea ce este corect. Și, deoarece datele sunt transferate invers prin legături seriale, vom avea bitul cel mai puțin semnificativ imediat după pornire, deci la stânga și bitul cel mai semnificativ la dreapta. Cu numărul anterior, dacă cineva l-ar citi înapoi, ar da: un pic cu o greutate mică în stânga și dreapta bitului cel mai semnificativ.

pentru a descărca de pe site-ul Arduino: selectați sistemul de operare al computerului și descărcați programul. Arată exact ca majoritatea programelor de calculator obișnuite. Are mai multe file pentru diferite ferestre. Una dintre aceste ferestre este folosită pentru a edita programul. Se numește schiță în jargonul Arduino. Schițele sunt scrise în C++ simplificat.

Schița nu începe când este aplicată alimentarea sau Arduino este resetat

Prin urmare, este important să știți unde bitul cel mai puțin semnificativ ar trebui să poată citi datele din locație. În caz contrar, detectăm date incorecte! Observați tensiunile negative care corespund stării logice 1 și tensiunile pozitive din starea logică.

Ele sunt exprimate în biți pe secundă. Când se utilizează o legătură serială, va fi determinată viteza de transmisie. Această viteză este supusă mai multor constrângeri: lungimea cablului folosit pentru conectarea celor două părți și viteza cu care cei doi interlocutori se pot înțelege.


Fig.2 Programul Arduino apare ca o fereastră în care puteți introduce textul programului, care se numește pur și simplu schiță.

Puteți compila schița la Programul Arduino(Fig. 2) făcând clic pe butonul Verificare din colțul din stânga sus al ferestrei: procesul de compilare traduce programul C++ în codurile de mașină corespunzătoare ale procesorului ATmega328. Odată compilată, schița executabilă poate fi încărcată în memoria Arduino prin intermediul cablu USB, când faceți clic pe butonul Încărcare. Poate fi necesar să selectați portul COM corespunzător din meniu dacă există mai multe disponibile. Încărcarea unei schițe face întotdeauna ca compilatorul să pornească primul. Schița rulează imediat după finalizarea descărcării.

Cu cât cablul este mai scurt, cu atât este mai mare debitului, deoarece există mai puțină tensiune și riscul de interferență. Deși, dacă distanța dintre cele două părți crește, viteza de comunicare va scădea efectiv. În ciuda tensiunii impuse de standard, pot exista și alte erori și erori de transmisie. Există o soluție pentru a reduce acest risc. Constă în adăugarea de biți de paritate. Vei vedea, e ușor! 😉 Chiar înainte de bitul de oprire vom adăuga un bit care va fi par sau impar. Deci, dacă utilizați o legătură serială, dacă este selectată paritatea egală, atunci numărul niveluri logice Un 1 în date plus bitul de paritate ar trebui să rezulte într-un număr par.

Caracteristici suplimentare adăugat la limbajul de bază folosind biblioteci externe dezvoltate de echipa Arduino sau de dezvoltatori terți. Bibliotecile pot fi incluse în codul executabil selectând elementul de meniu corespunzător. Dacă este necesar, adăugarea unei biblioteci va adăuga automat linii la schiță care vor spune compilatorului despre noua sintaxă.

Programele nu pot fi flashate în Arduino

Există multe componente implicate în procesul de transfer al unui program de la computer la Arduino. Dacă cel puțin unul dintre ele nu funcționează corect, procesul de firmware va fi întrerupt. În special, procesul de firmware depinde de: drivere Arduino, alegerea modelului de dispozitiv și a portului în mediul Arduino, conexiunea fizică la placă, firmware-ul controlerului 8U2 (pe Arduino Unoși Mega 2560), bootloader al microcontrolerului principal al dispozitivului, setări de biți de siguranță etc. Mai jos sunt câteva sugestii pentru depanarea anumitor componente.

Mediul Arduino

  • Asigurați-vă că modelul dvs. Arduino este selectat în meniul Instrumente > Placă. Dacă aveți un Arduino Uno, selectați elementul corespunzător. De asemenea, rețineți că modelele după Arduino Duemilanove vin cu un microcontroler ATmega328, în timp ce versiunile mai vechi vin cu un ATmega168. Pentru a afla ce controler este folosit în Arduino, citiți eticheta de pe microcontroler (cel mai mare cip de pe placă). Mai multe informații despre meniul Board pot fi găsite în secțiunea Arduino Development Environment.
  • Apoi verificați dacă este selectat portul corect în meniul Instrumente > Port serial (dacă portul nu apare, încercați să reporniți IDE când dispozitivul este conectat la computer). Pe computerele Mac, portul serial ar trebui să arate cam așa: /dev/tty.usbmodem621 (pentru Arduino Uno sau Mega 2560) sau /dev/tty.usbserial-A02f8e (pentru versiunile mai vechi de Arduino cu cip FTDI). Pe Linux: /dev/ttyACM0 sau ceva similar (pentru Arduino Uno sau Mega 2560) sau /dev/ttyUSB0 (pentru versiunile mai vechi de Arduino). Pe Windows, acesta va fi un port COM, dar înainte de a-l selecta în Managerul de dispozitive, trebuie să verificați care dintre ele este asociat cu Arduino. Dacă aceste porturi nu sunt listate, consultați următoarea secțiune despre drivere.

Șoferii

Driverele permit aplicației software de pe un computer (adică mediul Arduino) să comunice cu hardware-ul conectat la acesta (placa Arduino). În legătură cu Arduino, driverele sunt responsabile pentru crearea unui port serial virtual (sau port COM virtual) în sistem. Arduino Uno și Mega 2560 cu microcontroler ATmega8U2 folosesc drivere standard (USB CDC) ale sistemului de operare. Alte plăci Arduino, unde rolul unui convertor USB-UART este îndeplinit de un cip FTDI, folosesc drivere de la FTDI.

Cel mai simplu mod de a verifica dacă driverele sunt instalate corect este să conectați Arduino la computer și să deschideți meniul Instrumente > Port serial în mediul de dezvoltare. După conectarea Arduino, ar trebui să apară noi elemente de meniu aici. În acest caz, nu contează deloc ce nume exact de port va fi atribuit lui Arduino.

  • Pe Windows 7 (în special versiunea pe 64 de biți), poate fi necesar să accesați Device Manager și să actualizați driverele Arduino Uno sau Mega 2560. Pentru a face acest lucru, în manager, faceți clic dreapta pe dispozitiv (placa trebuie să fie conectată la computer) și selectați din nou fișierul .inf corespunzător Windows. Acest fișier se află în folderul drivere/ al software-ului Arduino (dar nu în subdirectorul Drivers USB FTDI).
  • Dacă în timpul instalării Drivere Arduino Uno sau Mega 2560 sub Windows XP, obțineți următoarea eroare: „Sistemul nu poate găsi fișierul specificat”, apoi încercați această soluție (despre adăugarea cheii „RunOnce” la ramura de registry „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion ”).
  • Pe Linux, Arduino Uno și Mega 2560 sunt definite ca dispozitive /dev/ttyACM0, care nu sunt acceptate de versiunea standard a bibliotecii RXTX utilizată de mediul Arduino pentru comunicare în serie. Prin urmare, versiunea Linux a acestui mediu include o bibliotecă RXTX corectată, care funcționează și cu dispozitivele /dev/ttyACM*. Există și unul special (11.04) care include suport pentru astfel de dispozitive. Dacă utilizați pachetul standard RXTX, atunci trebuie să creați o legătură simbolică în sistem de la /dev/ttyACM0 la /dev/ttyUSB0 (de exemplu) - atunci portul serial va apărea în mediul Arduino.

Acces la portul serial

  • Pe Windows: dacă programul durează mult să se deschidă sau se blochează la pornire sau dacă meniul Instrumente durează prea mult pentru a se deschide, atunci în Manager dispozitive, încercați să dezactivați toate porturile seriale Bluetooth și alte porturi COM de rețea. Când lansați sau deschideți meniul Instrumente, mediul de dezvoltare Arduino scanează în consecință toate porturile seriale ale computerului dvs., prezența unor astfel de porturi de rețea poate duce uneori la înghețarea sau blocarea programului;
  • Asigurați-vă că nu rulați scanere cu porturi seriale, cum ar fi USB Cellular Wifi Dongle (cum ar fi de la Sprint sau Verizon), aplicații de sincronizare PDA, drivere Bluetooth-USB (cum ar fi BlueSoleil), demoni virtuali etc.
  • Asigurați-vă că un firewall (cum ar fi ZoneAlarm) nu cauzează blocarea portului serial.
  • De asemenea, trebuie să închideți toate programele care monitorizează datele care circulă prin USB între Arduino și PC (de exemplu, Processing, PD, vvvv etc.).
  • Pe Linux: încercați să rulați mediul Arduino ca superutilizator, cel puțin temporar, pentru a vedea dacă ajută la flash-ul Arduino sau nu.

Conexiune fizică la placă

  • Mai întâi de toate, asigurați-vă că Arduino este pornit (lit LED verde) și conectat la un computer.
  • Pe computerele Mac există unele probleme când conectarea Arduino Uno și Mega 2560 prin hub USB. Dacă nu apare nimic în meniul „Instrumente > Port serial”, încercați să conectați placa direct la computer și să reporniți Arduino IDE.
  • În timpul instalării firmware-ului, deconectați toate dispozitivele de la pinii digitali 0 și 1, deoarece acești pini sunt conectați la interfața pentru conectarea Arduino la computer (după intermiterea cu succes a codului în controler, aceștia pot fi utilizați din nou).
  • Încercați să flashați Arduino deconectând toate dispozitivele de la acesta (cu excepția cablului USB, desigur).
  • Asigurați-vă că placa nu atinge niciun obiect metalic conductor.
  • Încercați un alt cablu USB, uneori și ele nu reușesc.

Resetare automată

  • Dacă Arudino nu acceptă funcția de resetare automată, asigurați-vă că resetați placa cu câteva secunde înainte de a flashiza firmware-ul. (Arduino Diecimila, Duemilanove și Nano acceptă resetarea automată, la fel ca LilyPad, Pro și Pro Mini cu conectori de programare cu 6 pini).
  • Vă rugăm să rețineți: unele Arduino Diecimilas au fost flashate accidental cu un bootloader greșit. Astfel de modele necesită apăsarea fizică a butonului de resetare înainte de a încărca programul; Vezi mai jos pentru mai multe detalii despre asta.
  • Pe unele computere, trebuie să apăsați butonul de resetare (de pe placă) după ce apăsați butonul Încărcare în mediul Arduino. Experimentați cu diferite intervale de timp între apăsări - de la 0 la 10 secunde sau mai mult, cu un interval de aproximativ 2 secunde.
  • Dacă primiți această eroare: „Dispozitivul nu răspunde corect”. încercați să flashați din nou programul (cu alte cuvinte, resetați placa și faceți clic din nou pe butonul Încărcare).

Încărcător

  • Asigurați-vă că Arduino are instalat un bootloader. Pentru a face acest lucru, pur și simplu reporniți dispozitivul. LED-ul încorporat (conectat la al 13-lea picior al controlerului) ar trebui să clipească. Dacă acest lucru nu se întâmplă, atunci cel mai probabil placa dumneavoastră nu are un bootloader.

Dacă programele tot nu pot fi flash, puneți o întrebare pe forum. Vă rugăm să includeți următoarele informații în mesajul dvs.:

  • Versiunea sistemului dvs. de operare.
  • Tipul dvs. de Arduino. Dacă este un model Mini, LilyPad sau alt model care necesită cablare suplimentară, includeți o fotografie a circuitului dvs. în postare, dacă este posibil.
  • Ați afișat cu succes placa înainte? Dacă da, vă rugăm să descrieți ce ați făcut cu placa înainte ca aceasta să nu mai funcționeze, ce software ați instalat sau dezinstalat recent de pe computer?
  • Mesaje care apar atunci când încercați să încărcați un program în Arduino. Pentru a primi mesaje, țineți apăsat butonul Shift în timp ce faceți clic pe butonul Încărcare din bara de instrumente.

Apare eroarea „Foderul de compilare a dispărut sau nu a putut fi scris” (pe Mac OS X)

Ați extras Arduino.app dintr-o imagine de disc (de exemplu, în folderul Aplicații)? Dacă nu, nu veți putea încărca exemple.

Mediul Arduino nu pornește după actualizarea Java pe computerele Mac

Cea mai recentă actualizare Java a Apple încearcă să folosească versiuni pe 64 de biți ale bibliotecilor native. Cu toate acestea, software-ul Arduino folosește o versiune pe 32 de biți a bibliotecii RXTX. La pornirea Arduino, apare o eroare ca aceasta:

Excepție neprinsă în metoda principală: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: nu a fost găsită nicio imagine adecvată. Am găsit: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: nicio arhitectură potrivită în wrapper universal

Pentru a rezolva această problemă, faceți clic pe aplicația Arduino (adică Arduino 16.app) în fereastra Finder, iar din meniul Fișier selectați Obțineți informații. Pe panou, bifați caseta de selectare „Deschideți în modul pe 32 de biți”. După aceasta, mediul Arduino ar trebui să pornească normal.

La compilarea unui program, apare o eroare java.lang.StackOverflowError

Mediul de dezvoltare Arduino vă preprocesează schița manipulând codul folosind expresii regulate. Uneori, anumite linii de text fac ca acest proces să eșueze. Dacă vedeți o eroare ca aceasta:

Java.lang.StackOverflowError la java.util.Vector.addElement(Sursă necunoscută) la java.util.Stack.push(Sursă necunoscută) la com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)

La com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher._match(Perl5Matcher.java) ) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher._match(Perl5Matcher.java) java) la com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java)

atunci exact aceasta este situatia. Verificați codul pentru secvențe de caractere neobișnuite asociate cu „ghilimele duble”, „ghilimele simple”, bară oblică inversă \, comentarii etc. De exemplu, ghilimele lipsă sau, de exemplu, secvența „\”” (în loc de „„”).

Schița nu rulează când placa este alimentată de la o sursă externă (pe modelele Arduino Diecimila sau mai mici)

Deoarece pinul RX este deconectat, bootloader-ul Arduino poate primi zgomot în loc de date, ceea ce înseamnă că nu va expira niciodată și, în consecință, programul nu va porni. Pentru a rezolva această problemă, încercați să conectați pinul RX la masă printr-un rezistor de 10k ohmi (sau conectați pinii RX și TX).

Mediul de dezvoltare Arduino (pe Windows) se blochează atunci când încearcă să flashezi programul

Această problemă poate apărea din cauza unui conflict între Arduino și procesul Logitech „LVPrcSrv.exe”. Deschideți Task Manager și găsiți-l în lista de procese. Dacă există, atunci ar trebui să finalizați procesul înainte de a flashiza programul.

Arduino nu pornește (LED-ul verde de alimentare nu se aprinde)

Dacă utilizați un Arduino Diecimila sau o versiune mai veche cu USB (cum ar fi NG), asigurați-vă că jumperul de pe placă (partea mică de plastic din apropierea conectorului USB) este setat corect. Dacă placa este alimentată de la o sursă de alimentare externă (conectată la conectorul corespunzător), atunci jumperul ar trebui să închidă cei doi pini care se află mai aproape de conectorul de alimentare. Dacă placa este alimentată de la USB, atunci jumperul ar trebui să închidă cei doi pini care sunt situati mai aproape de conectorul USB. Această imagine arată poziția jumper-ului dacă placa este alimentată de la USB.

(mulțumesc lui mrbbp pentru mesaj și imagine)

Lansarea programului pe Arduino Diecimila durează prea mult (6-8 secunde)

Pe unele Placi Arduino Diecimila a lansat accidental bootloader-ul Arduino NG. Funcționează bine, doar că are un timeout mai lung după resetarea plăcii (deoarece Arduino NG nu implementează resetare automată, care necesită sincronizarea manuală a procesului de firmware). Puteți recunoaște bootloader-ul de la NG după LED-ul conectat la pinul 13: în Arduino NG după resetarea plăcii clipește de 3 ori, iar în Diecimila - 1 dată. Dacă Diecimila dvs. are instalat un bootloader de la NG, atunci înainte de a afișa schița furgonetă, trebuie să apăsați fizic butonul de resetare situat pe placă. Puteți, de asemenea, să flashați bootloader-ul corect de la Diecimila în dispozitivul dvs. pentru mai multe informații, consultați pagina despre bootloader;

Apare o eroare la rularea arduino.exe pe Windows

Dacă apare o eroare la rularea arduino.exe sub Windows, de exemplu:

Arduino a întâmpinat o problemă și trebuie să se închidă.

apoi încercați să porniți Arduino folosind fișierul run.bat. Vă rugăm să aveți răbdare ca... Este nevoie de ceva timp pentru ca mediul Arduino să pornească.

De ce nu funcționează Arduino pe versiuni mai vechi de Mac OS X?

Dacă primești o eroare ca aceasta:

Eroare de legătură (dyld): dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino Simboluri nedefinite: /Applications/arduino-0004/librxtxSerial.jnilib referință nedefinită la _printf$LDBL128 de așteptat să fie definită în / usr/lib/libSystem.B.dylib

atunci probabil că trebuie să vă actualizați sistemul la Mac OS X 10.3.9 sau o versiune ulterioară. Bibliotecile de sistem mai vechi nu sunt compatibile cu Arduno.

Mulțumesc lui Gabe462 pentru mesaj.

La pornirea mediului Arduino, apare o eroare UnsatisfiedLinkError (cu un mesaj despre biblioteca librxtxSerial.jnilib)

Dacă primiți această eroare la pornirea Arduino:

Excepție neprinsă în metoda principală: java.lang.UnsatisfiedLinkError: Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib deja încărcat într-un alt classloader

atunci probabil că aveți o versiune veche a bibliotecii care este responsabilă de comunicare. Căutați fișierele comm.jar sau jcl.jar în folderul /System/Library/Frameworks/JavaVM.framework/ sau în directoarele enumerate în variabilele de mediu CLASSPATH și PATH. (error raportat de Anurag Sehgal)

Ce înseamnă eroarea „Nu s-a putut găsi clasa principală”?

Dacă apare următoarea eroare la pornirea Arduino:

Lansatorul de mașini virtuale Java: nu s-a putut găsi clasa principală. Programul se va închide.

verificați dacă ați extras corect conținutul fișierului zip Arduino - în special, asigurați-vă că folderul lib este situat direct în directorul Arduino și conține fișierul pde.jar.

Cum să faci față conflictelor cygwin pe Windows?

Dacă cygwin este deja instalat pe mașina dvs., atunci când încercați să compilați o schiță în mediul Arduino, poate apărea următoarea eroare:

6? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** eroare fatală - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** Versiunea memoriei partajate a sistemului a fost detectată nepotrivire - 0x75BE0084/0x75BE009C.

Această problemă este cauzată cel mai probabil de utilizarea versiunilor incompatibile ale DLL-ului cygwin.

În căutarea Windows (Start -> Găsiți), tastați cygwin1.dll și ștergeți toate fișierele găsite, cu excepția celei mai recente versiuni. Cea mai recentă versiune ar trebui să fie localizată în folderul x:\cygwin\bin, unde „x” este unitatea pe care a fost instalată distribuția cygwin. De asemenea, este recomandat să reporniți computerul.

De asemenea, asigurați-vă că cygwin nu rulează în procese atunci când mediul Arduino rulează. De asemenea, puteți încerca să eliminați fișierul cygwin1.dll din folderul Arduino și să-l înlocuiți cu fișierul cygwin1.dll din distribuția dvs. cygwin existentă (care se află cel mai probabil în folderul c:\cygwin\bin).

Este nevoie de mult timp pentru a deschide mediul Arduino și meniul Instrumente (pe Windows)

Dacă mediul Arduino durează foarte mult timp să pornească sau se blochează când încercați să deschideți meniul Instrumente, atunci acest lucru indică un conflict cu un alt dispozitiv din sistem. La pornire, precum și la deschiderea meniului Instrumente, software-ul Arduino încearcă să obțină o listă cu toate porturile COM disponibile pe sistem. Este posibil ca un anumit port COM creat de unul dintre dispozitivele computerului să încetinească acest proces. Verificați Manager dispozitive. Încercați să dezactivați toate dispozitivele care pot crea porturi COM în sistem (de exemplu, adaptoare Bluetooth).

Dispozitivul nu apare în Instrumente | Port serial

Dacă utilizați Arduino cu USB, asigurați-vă că driverele pentru cipul FTDI sunt instalate corect (pentru instrucțiuni de instalare, consultați). Dacă utilizați un adaptor USB-UART cu un Arduino obișnuit (fără USB), verificați dacă driverele sunt instalate pentru acest adaptor.

După aceasta, asigurați-vă că placa este cu adevărat conectată: meniul cu o listă de porturi este actualizat de fiecare dată când deschideți meniul Instrumente, așa că dacă tocmai ați deconectat placa, aceasta nu va fi în această listă.

Verificați dacă rulează programe care scanează toate porturile seriale, cum ar fi aplicațiile de sincronizare PDA, driverele Bluetooth-USB (cum ar fi BlueSoleil), demonii virtuali etc.

Pe sistemele Windows, numărul portului COM atribuit lui Arudino poate fi prea mare. De la utilizatorul zeveland:

„O notă rapidă pentru cei care nu pot flash un program în Arduino cu un număr mare de port COM: încercați să reduceți numărul portului asociat cu cipul FTDI.”

„Sistemul meu are o grămadă de porturi COM virtuale de la adaptorul Bluetooth, așa că Arduino i-a fost atribuit portul COM17. IDE-ul nu a putut găsi Arduino, așa că am șters celelalte porturi virtuale din Panoul de control (sub XP) și am schimbat portul pentru cipul FTDI la COM2 Asigurați-vă că Arduino folosește portul desemnat și totul va fi în regulă.

Dacă aveți o versiune veche Drivere FTDI pe un computer Mac, va trebui să le eliminați și să le instalați ultima versiune. Pentru instrucțiuni de instalare, consultați acest subiect de pe forum.

Când se afișează codul sau în programul „Serial Monitor”, apare o eroare gnu.io.PortInUseException (pe sistemele Mac)?

Eroare în serial. () gnu.io.PortInUseException: Aplicație necunoscută la gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) la processing.app.Serial. (Serial.java:127) la processing.app.Serial. (Serial.java:72)

Cel mai adesea, această eroare înseamnă că portul este ocupat de o altă aplicație. Prin urmare, verificați dacă există programe care rulează pe porturile seriale sau USB, cum ar fi aplicațiile de sincronizare PDA, managerii de dispozitive Bluetooth, anumite firewall-uri etc. De asemenea, rețineți că unele programe (de exemplu, Max/MSP) lasă portul serial deschis, chiar și atunci când nu îl folosiți - deci este mai bine să închideți toate utilitățile care folosesc portul serial și să părăsiți complet astfel de aplicații.

Dacă această eroare apare în mediul de procesare sau pe Arduino versiunea 0004 sau anterioară, atunci trebuie să rulați scriptul macosx_setup.command și să reporniți computerul. În Arduino 0004, acest script a fost modificat și toți utilizatorii trebuie să îl ruleze (chiar și cei care au rulat același script care a venit cu versiunea Arduino 0003). De asemenea, trebuie să ștergeți conținutul folderului /var/spool/uucp.

Aveți probleme cu driverele USB FTDI

Schița nu începe când este aplicată alimentarea sau Arduino este resetat

Cel mai probabil, acest lucru se întâmplă deoarece trimiteți date de la computer la placă imediat după ce este pornită. În primele câteva secunde după resetare, bootloader-ul (un firmware de program în microcontrolerul plăcii) așteaptă ca computerul să trimită o nouă schiță pentru a fi scrisă în memoria plăcii. Dacă nu au sosit date în aceste câteva secunde, încărcătorul va expira și va lansa programul încărcat anterior. Dacă trimiteți continuu date, încărcătorul nu va expira și nu va rula niciodată schița încărcată. Prin urmare, trebuie fie să găsiți o modalitate de a „ține” trimiterea datelor timp de câteva secunde după pornirea dispozitivului (de exemplu, prin programarea controlerului pentru a trimite unele date către computer în blocul setup()), fie să flashați program în microcontrolerul de deasupra bootloader-ului utilizând un programator extern.

Firmware-ul părea să aibă succes, dar nimic nu funcționează

Ați selectat dispozitivul greșit din meniul Instrumente > Microcontroler. Asigurați-vă că microcontrolerul pe care îl alegeți se potrivește cu cel instalat pe placa dvs. (ATmega8 sau ATmega168) - modelul controlerului este indicat pe cel mai mare cip.

Asigurați-vă că sursa de alimentare este stabilă. Interferența sau întreruperile de curent pot cauza erori la încărcarea unei schițe.

încă unul motiv posibil- dimensiunea schiței este prea mare pentru dispozitivul dvs. Când încarcă o schiță, Arduino 0004 verifică dacă există suficient spațiu de memorie pe ATmega8 pentru programul care este încărcat. În același timp, Arduino își realizează calculele pe baza faptului că bootloader-ul din memoria controlerului ocupă 1 KB. Poate că dispozitivul dvs. are o versiune veche a bootloader-ului cu o capacitate de 2 KB în loc de 1 KB, apoi din cei 8 KB de memorie flash ale microcontrolerului ATmega8, 2 KB vor fi deja ocupați. În consecință, în acest caz, doar o parte a schiței va fi încărcată în controler, dar programul nu știe acest lucru a priori, ceea ce va duce la resetări constante ale dispozitivului.

Dacă aveți un programator (pentru un port paralel sau AVR-ISP), puteți actualiza versiunea de bootloader în microcontroler folosind Instrumente | Burn Bootloader. În caz contrar, puteți pur și simplu să ajustați setările mediului Arduino indicând cantitatea disponibilă de memorie de program în variabila upload.maximum_size aflată în interiorul fișierului de configurare (consultați instrucțiunile pentru a găsi acest fișier). Schimbați valoarea 7168 specificată acolo la 6144, după care mediul de dezvoltare vă va avertiza corect dacă dimensiunea de schiță permisă este depășită.

Cum pot reduce dimensiunea firmware-ului?

Microcontrolerul ATmega168 din Arduino este un model destul de ieftin, care are doar 16 KB de memorie de program, ceea ce de fapt nu este foarte mult (din care 2 KB sunt deja ocupați de bootloader).

Dacă utilizați calcule cu virgulă mobilă în programul dvs., încercați să rescrieți codul pentru a le înlocui cu calcule cu numere întregi - acest lucru va economisi aproximativ 2 KB de memorie. La începutul programului, eliminați directivele #include ale tuturor bibliotecilor neutilizate.

De asemenea, verificați dacă codul programului poate fi optimizat pentru a-l scurta.

Lucrăm constant la optimizarea nucleului Arduino pentru a reduce spațiul ocupat de funcțiile sale în volumul total al schiței compilate și a lăsa cât mai mult spațiu pentru scrierea programelor.

Nu este generat niciun semnal PWM (ieșire analogică) atunci când apelați analogWrite() pe niciun alt pini decât 3, 5, 6, 9, 10 și 11

În microcontrolerul Arduino (ATmega168), suportul hardware pentru PWM / analogWrite() este implementat numai pe anumiți pini. Prin urmare, apelarea funcției analogWrite() pe orice alți pini de controler va avea ca rezultat formarea fie a unui nivel ridicat de semnal (5 V - pentru valori mai mari de 128), fie nivel scăzut(0 V - pentru valori mai mici de 128). În versiunile mai vechi de Arduino cu microcontrolerul ATmega8, suportul PWM este implementat numai pe pinii 9, 10 și 11.

De ce primesc erori despre funcții sau tipuri nedeclarate?

Mediul de dezvoltare Arduino încearcă să genereze automat prototipuri de funcții definite de utilizator, astfel încât acestea să poată fi plasate în orice ordine în programul dumneavoastră. Cu toate acestea, procesul de generare a prototipurilor nu este perfect și uneori duce la erori ciudate.

De exemplu, dacă vă declarați tipul de date într-un program și apoi creați o funcție care utilizează acest tip, va apărea o eroare când încercați să compilați schița. În acest caz, eroarea apare deoarece prototipul generat automat pentru această funcție va fi localizat ÎNAINTE de declararea tipului.

Dacă declarați o funcție care returnează un rezultat pe 16 biți (de exemplu, de tip „unsigned int”), cadrul nu va înțelege că este o funcție și, prin urmare, nu va crea un prototip al acesteia. În acest caz, va trebui să o scrieți manual sau să plasați declarația acestei funcții mai sus în codul programului - înainte de a fi apelată pentru prima dată în program.

Când încercați să flashați programul, apare eroarea „semnătură nevalidă a dispozitivului”.

Următoarea eroare:

Avrdude: Da! Semnătură nevalidă a dispozitivului.

Verificați conexiunile și încercați din nou sau utilizați -F pentru a trece peste această verificare.