Arduino uno не показва виртуален com порт. Отстраняване на неизправности Първи стъпки с Arduino. Arduino няма да стартира след актуализация на Java на Mac

Ядрото на платформата Arduino е микроконтролен чип, известен като ATmega328.

ATmega328 всъщност е 8-битов компютър във всички отношения: след като бъде включен, неговият процесор зарежда байт от дадено място в паметта и го интерпретира като команда. Какво следва след това зависи от стойността на този байт. Само за разлика от познатите ни компютри, ATmega328 не работи с операционна система: използването на ресурсите е под пълния контрол на програмиста. Не можем да разчитаме на операционна система, която може да разпредели неправилно паметта, да я препълни или да доведе до други последствия, нежелани за прецизна автоматична система. Освен това процесорът може да работи само по една задача в даден момент (вероятно знаете, че всички процесори работят по този начин, но операционната система разпределя работното време на различни задачи по такъв начин, че изглежда, че няколко програми на вашия компютър са работещи по едно и също време).

Ако наистина имате нужда от повече обяснение, за да стигнете до края на тази настройка, имате такова, но обикновено можете да минете и без него! 😉. Сега трябва да настроите софтуерза да съответства на вашата карта. В лентата с менюта щракнете върху „Инструменти“, след това върху „Тип карта“ и изберете картата, която искате да свържете.

След това, когато е готово, щракнете отново върху „Инструменти“ и изберете порта, който току-що беше добавен към списъка. И след като проверите дали картата е свързана, стартирайте файла със съдържанието. Щракнете върху „Да“, когато бъдете подканени за администраторски права, след което щракнете върху „Инсталиране“. Когато инсталацията приключи, ще се отвори диалогов прозорец и ще ви уведоми. След като това стане, рестартирайте компютъра си, ако е необходимо и картата вече ще бъде разпозната! 🙂.

Новият Arduino има напълно празна памет, следователно първият байт, обработен от процесора, има стойност нула: „Без операция“. Преди с помощта на Arduinoтрябва да заредите изпълнима програма в паметта му, т.е. поредица от битове, първият от които се интерпретира като команда и се изпълнява. Ако командата се нуждае от параметри за изпълнение, те се вземат от следващите байтове памет. След изпълнение на командата, процесорът зарежда получения байт в паметта и го интерпретира като команда. Ако изключите Arduino, паметта не се изтрива. Последователността от заредени в него байтове се съхранява в енергонезависима памет, така че когато го включите отново, програмата започва отново отначало.

Ако картата ви работи правилно, можете да преминете към следващата част на тази страница 😉. След това отделете картата и я сглобете отново. След приключване се появява съобщение между редактора и конзолата, че записването е успешно. Вашата карта вече е заредена!

За да улесните живота си на бъдещите програмисти, ето няколко съвета. Активиране на информация за грешка. . Наистина, ако има грешка във вашата програма, когато искате да компилирате или дори да заредите вашата програма, в долната част на прозореца ще се появи съобщение за грешка. В някои случаи това съобщение не е достатъчно ясно или точно, за да идентифицира проблема, в който случай повече информация за съобщенията за грешка може да бъде много практична.

Честотата на процесорните операции се задава от 16 MHz тактов генератор. Захранването може да се извърши през USB конектора. Да работиш без Arduino USB захранваненеобходимо е отделно захранване от 7 до 12 V (това напрежение се нормализира до необходимите нива от вграден регулатор, така че просто се нуждаете от евтино захранване за това). На борда на потребителя са достъпни и двете нива на напрежение от 5V и 3,3V, от които може да се изтегли максимум 50mA ток.

Покажете номера на реда и активирайте архивирането на кода. . Наистина, за да не се изгубите в кода си, когато този стане дълъг, номерът на реда ще ви уведоми кой ред е тази част от вашия код и ще ви позволи да се върнете там по-лесно.

Отново има две отметки в настройките. Очевидно това не са средствата, с които ще се занимаваме в тази част. Не, ще видим средствата за комуникация, които картата Arduino има. Тя има тази малка картичка под капака! 😉. Всичко зависи от това какво искате да комуникирате с медиите, които предоставяте. Това решение обаче все още е нестабилно и изисква потребителят да е пред алармената система. Днес, с развитието на технологиите и "всичко свързано", би било жалко да не можем да отидем по-далеч.

Arduino паметта се състои от три вида: флаш памет, където програмата се съхранява 32 KB; RAM(SRAM) 2 KB, където процесорът съхранява и презаписва променливите, използвани в програмата; и памет само за четене (EEP-ROM) от 1 KB, където програмистът може да съхранява данни, които трябва да останат при рестартиране на контролера (като флаш памет, където се съхранява програмата). В сравнение с днешните компютри, които обработват поне няколко гигабайта, 35 kb изглеждат смешни, но всъщност са достатъчни за повечето цели. Поради липса операционна система, използването на паметта е изцяло ваша отговорност: ако възникне препълване на паметта или се осъществи достъп до несъществуващо място в паметта, вашата програма може да се държи непредвидимо и това е доста трудно да се проследи по време на отстраняване на грешки. Винаги трябва да държите броя на променливите под контрол във вашата програма.

Това е основната цел на комуникацията. Тази информация може да захранва базата данни, да служи при изчислението или нещо друго. Всичко зависи от това какво правите с него. Когато се предава информация, е необходимо предавателят, който ще предаде предадената информация, и получателят, който ще получи информацията, да ги обработят.

Единият комуникира с другия, докато другият получава съобщението, изпратено до другия. Във вашия чертеж обаче има две стрелки. Другият, който получава съобщението, може ли да изпрати данните? Всичко обаче зависи от вида на връзката. Например могат да се разграничат три вида разговори. Всеки разговор има само двама събеседници. Казват, че е връзка от точка до точка. В този случай всяко друго устройство, използващо серийната връзка и неговия комуникационен протокол, може да комуникира. Какво е комуникационен протокол?

Процесорът ATmega328 е свързан към 14 дискретни I/O порта (номерирани от 0 до 13), 6 аналогови входа и USB порт. Дискретният I/O е електрическа връзка, което може да има две булеви състояния: 1 и 0, или TRUE и FALSE, или, както в Синтаксис на Arduino, НИСКО и ВИСОКО. Ако сигналът е в НИСКА стойност, съответният щифт има нулев потенциал от 0 V - тоест свързан към общ проводник. Ако сигналът е ВИСОК, тогава нивото на напрежението между този щифт и земята е 5 V.

Това е набор от правила, които определят как две устройства взаимодействат едно с друго. От друга страна, две устройства, които комуникират с различен протокол, няма да бъдат разбрани правилно и дори може да интерпретират действията, които трябва да бъдат извършени, по обратния начин на заявеното. Би било жалко, ако вашето лице за контакт „пусне котката да яде“, когато го помолите да „нахрани котката“. Накратко, ако комуникационните устройства не използват правилния протокол, може да стане истински капхарнаум!

Серийни връзки, има пакет! Недостатъкът, въпреки че може да бъде и предимство, е, че само вие можете да използвате такова съобщение. И кого ще видим сред тях? Някои по-добри ли са от други? оо. Тогава да, има някои, които имат предимства пред други. Човек може по същество да отбележи вида на употребата, която иска да направи, и скоростта, с която устройствата могат да комуникират.

Пинове 0 и 1 се използват за серийно приемане и предаване на данни: чрез тях платката Arduino може да комуникира с модули (щитове), прикрепени към нея, използвайки серийния протокол. Серийните протоколи са комуникационни протоколи, при които всеки бит се предава/получава последователно един след друг. Изводи 2 и 3 също могат да се използват като прекъсвания. Прекъсването е електрически сигнал на цифров вход, който прекъсва текущата програма на процесора, когато възникне дадено логическо състояние. Прекъсванията съществуват и в процесорите на конвенционалните компютри. След като възникне прекъсване, процесорът съхранява състоянието си в паметта и забавя изпълнението на програмата, преминавайки към изпълнението на манипулатор на прекъсване: кратка част от програмния код, необходима за обслужване на прекъсването. След завършване процесорът възобновява състоянието, което е имал преди пристигането на прекъсването, и възобновява изпълнението на програмата.

Как да се справя с cygwin конфликти в Windows?

Той определя електрическия сигнал, използвания протокол и всичко свързано с механиката. За да комуникират чрез серийна връзка, две устройства трябва да имат поне 3 кабела. Първият кабел е електрически референтен, обикновено наричан електрическо заземяване. Малко, когато се измервате: измервате 1,7 метра от земята до върха на главата си, а не 4,4 метра, защото сте на първия етаж и се облягате на пода на партера. Единият се използва за изпращане на данни до един подател, но също и за получаване на данни от друг подател. Тя ви позволява да излъчвате едното и да получавате другото. Зеленото е това, което се използва за изпращане на данни от първата карта, но също така служи за получаване на данни, изпратени за втората карта. Оранжевият е този, който се използва за изпращане на данни от втората карта, но също така служи за получаване на данни, изпратени за първата карта.

  • Това ви позволява да измервате напрежението, като фиксирате същата референтна рамка.
  • Два други кабела осигуряват пренос на данни.
  • Черното е общото електрическо заземяване.
Това е минимумът.

Пинове 3, 5, 6, 9, 10 и 11 могат да се използват като PWM изходи и имат някои аналогови настройки. Съответно клетките на паметта им съдържат стойности между 0 и 255.

Фиг. 1 Arduino UNO, както изглежда отгоре и отдолу. Обърнете внимание на картата на Италия на гърба.

Пин 13 също е свързан към светодиода на платката. Когато сигналът е НИСЪК, светодиодът е изключен, а ако сигналът е ВИСОК, светодиодът свети.

Електрически сигнал и протокол

Стандартът не забранява използването на други кабели, използвани за контрол на потока и обработка на грешки. На първо място, трябва да се знае, че две електронни или компютърни устройства използват данни под формата на битове, за да комуникират. По правило тези комплекти се състоят от 8 бита, които след това образуват един байт. Тези разряди всъщност са нива на електрическо напрежение. Нивата на напрежение, наложени от стандарта, могат да бъдат изброени в таблицата, както следва.

Така че всички напрежения над зададените стойности, т.е. между -3V и 3V, под -25V и над 25V, са извън диапазона. Твърде високото напрежение може да повреди оборудването. Когато напрежението от -3 V до -3 V се пренебрегне, именно в тези зони се намират повечето и дори почти всички паразити. Това е начин да избегнете грешки при предаване.

В допълнение към стандартната употреба като цифрови I/O, щифтове 10, 11, 12 и 13 осигуряват възможност за комуникация с външни периферни устройства.

Аналоговите входове са обозначени с A0 ... A5: всеки от тях има цифрова резолюция от 10 бита,

тоест, те преобразуват всяко напрежение между 0 и 5V в число между 0 и 1023, което може да бъде достъпно в паметта.

Свързване на Arduino към компютър

Когато няма комуникация по серийната връзка, има така нареченото латентно състояние. Тоест винаги има логическо ниво. Това е логическото ниво. Нека напрежението е между -3V и -25V. Ако това състояние празен ходлипсва, може да има проблем с връзката.

Данните, преминаващи през серийния порт, се предават в двоична форма. Може да не сте наясно с това, но буква от клавиатурата е кодирана в 8 бита, така че един байт. Всъщност това са 7 бита, които са кодирани, но чрез добавяне на 0 пред кодирането запазва стойността си и позволява буквата да бъде кодирана в 8 бита. По този начин за всеки символ на клавиатурата можете да намерите кодиране от 8 бита. Съответно това са десетични, осмични, шестнадесетични и двоични бази. Някои от тях са непознати за вас, както видяхме.

Всички платформи са монтирани върху дъска с размери 60,6 mm × 53,4 mm и тегло не повече от 25 g (фиг. 1).

Платките имат и USB A/B конектори, с които можете да ги свържете към компютър за комуникация. USB връзката също осигурява захранване на Arduino, когато е свързан към компютър, така че не се нуждаете от външен източник на захранване, за да започнете.

Ние, това, което ни интересува, е двоичната основа. Да, защото двоичното е последователност от 0 и 1, които са логическите състояния 0 и 1. Трябва да си представите, че има приемник. За да не бързаме, ще останем с тази единствена буква. Следователно ще видим какво минаваме през серийния път. Наистина, ако се получи обаждане и никой не отговори след спиране, разговорът не може да се проведе. Накрая, след като сте казали всичко, което трябва, приключвате разговора с "Довиждане" или "Здрасти!", "Още!" И така нататък. Така че ще има краен бит или стоп бит, които ще направят същото в серийната връзка.

  • Това първоначално съобщение ви позволява да отворите разговор.
  • Именно той ще се включи в разговор със своя събеседник.
  • Основният елемент на разговора.
Тук влиза в действие серийната комуникация.

програма

Програмата Arduino, както всяка друга програма за процесора, е последователност от битове на машинен език. За да улесни живота на програмистите, екипът на Arduino разработи език за програмиране високо ниво, компилатор и фърмуерен инструмент за изливане на машинен код в паметта на Arduino.

Всички тези инструменти са включени в една програма IDE (интегрирана среда за разработка), безплатна

Също така, знаете ли защо серийният път се нарича така? Всъщност това е така, защото предаваните данни се изпращат една след друга. Ако искате, те са в опашката на le-lei. Точно като разговор между двама души: човекът, който говори, не може да каже няколко изречения едновременно, нито няколко думи или звука. Всеки елемент следва в логичен ред.

С помощта на хронограма може да се забележи следното. Това е като число, което има единици, десетици, стотици, хиляди и т.н. може да се направи препратка към най-малко значимия бит в двоичен код, което е правилно. И тъй като данните се предават с главата надолу по серийните връзки, ще имаме най-малкия бит веднага след началото, така че отляво и най-значимия бит отдясно. С предишното число, ако някой го прочете отзад, ще даде: малко с малко тегло отляво и отдясно на най-значимия бит.

за изтегляне от уебсайта на Arduino: изберете операционната система на вашия компютър и изтеглете програмата. Изглежда точно като повечето обикновени компютърни програми. Има няколко раздела в различни прозорци. Един от тези прозорци се използва за редактиране на програмата. На жаргон на Arduino се нарича скица. Скиците са написани на опростен C++.

Скицата не стартира при включване или нулиране на Arduino

Следователно е важно да знаете къде е най-малкият бит, за да можете да прочетете данните на местоположението. В противен случай откриваме неверни данни! Обърнете внимание на отрицателните напрежения, които съответстват на логическото състояние 1 и положителните напрежения в логическото състояние.

Те се изразяват в битове за секунда. Когато се използва серийна връзка, скоростта на предаване ще бъде определена. Тази скорост подлежи на няколко ограничения: дължината на кабела, използван за свързване на двете страни, и скоростта, с която двете страни могат да се разбират.


Фиг. 2 Програмата Arduino се появява като прозорец, в който можете да въведете текста на програмата, който просто се нарича скица.

Можете да компилирате вашата скица до Програма Ардуино(Фиг. 2), като щракнете върху бутона Проверка в горния ляв ъгъл на прозореца: процесът на компилация превежда програмата C ++ в съответните машинни кодове на процесора ATmega328. Веднъж компилиран, изпълнимият скеч може да бъде зареден в паметта на Arduino чрез USB кабел, когато щракнете върху бутона Качване. Може да се наложи да изберете подходящия COM порт от менюто, ако има повече от един наличен. Зареждането на скица винаги кара първо да стартира компилатора. Скицата започва веднага след приключване на изтеглянето.

Колкото по-къс е кабелът, толкова по-висок е пропускателна способност, тъй като има по-малко напрежение и риск от смущения. Въпреки че, ако разстоянието между двете страни расте, скоростта на комуникация ефективно ще намалее. Въпреки напрежението, наложено от стандарта, може да има други грешки и грешки при предаване. Има решение за намаляване на този риск. Състои се от добавяне на паритетни битове. Ще видите, лесно е! 😉 Точно преди стоп-бита ще добавим бит, който ще бъде четен или нечетен. Така че, ако използвате серийна връзка, ако е избран четен паритет, тогава броят на логическите нива от 1 в данните плюс битът за паритет трябва да даде четно число.

Допълнителни функциидобавени към основния език с помощта на външни библиотеки, разработени от екипа на Arduino или трети страни. Библиотеките могат да бъдат включени в изпълнимия код, като изберете съответния елемент от менюто. Ако е необходимо, добавянето на библиотека автоматично ще добави редове към скицата, съобщавайки на компилатора за новия синтаксис.

Програмите не мигат в Arduino

В процеса на прехвърляне на програма от компютър към Arduino участват много компоненти. Ако поне един от тях не работи правилно, процесът на фърмуера ще бъде прекъснат. По-специално, процесът на фърмуера зависи от: драйверите на Arduino, модела на устройството и избора на порт в средата на Arduino, физическата връзка към платката, фърмуера на контролера 8U2 (на Ардуино Унои Mega 2560), буутлоудър на главния микроконтролер на устройството, настройки на битовете на предпазителя и др. По-долу са дадени някои препоръки за отстраняване на неизправности с определен компонент.

Arduino среда

  • Уверете се, че вашият модел Arduino е избран в менюто Tools > Board. Ако имате Arduino Uno, изберете подходящия елемент. Също така имайте предвид, че моделите след Arduino Duemilanove идват с микроконтролер ATmega328, докато по-старите версии идват с ATmega168. За да разберете кой контролер се използва във вашия Arduino - прочетете надписа на микроконтролера (най-големият чип на платката). Повече информация за менюто Board можете да намерите в раздела Arduino Development Environment.
  • След това проверете дали е избран правилният порт в менюто Инструменти > Сериен порт (ако портът не се появи, опитайте да рестартирате IDEустройство, свързано към компютъра). На Mac серийният порт трябва да изглежда нещо като /dev/tty.usbmodem621 (за Arduino Uno или Mega 2560) или /dev/tty.usbserial-A02f8e (за по-стари Arduino с FTDI чип). В Linux: /dev/ttyACM0 или подобен (за Arduino Uno или Mega 2560) или /dev/ttyUSB0 (за по-стари версии на Arduino). В Windows това ще бъде COM порт, но преди да изберете в Device Manager, трябва да проверите кой е свързан с Arduino. Ако тези портове не са в списъка, вижте следващия раздел за драйвери.

Шофьори

Драйверите позволяват на приложния софтуер на компютъра (т.е. средата Arduino) да комуникира с хардуера, свързан към него (платката Arduino). По отношение на Arduino, драйверите са отговорни за създаването на виртуален сериен порт (или виртуален COM порт) в системата. Arduino Uno и Mega 2560 с микроконтролер ATmega8U2 използват стандартни драйвери (USB CDC) на операционната система. Други платки Arduino, където FTDI чипът играе ролята на USB-UART конвертор, използват драйвери от FTDI.

Най-лесният начин да проверите дали драйверите са инсталирани правилно е да свържете Arduino към компютъра и да отворите менюто Инструменти > Сериен порт в средата за разработка. След свързване на Arduino тук трябва да се появят нови елементи от менюто. В този случай няма никакво значение кое име на порт ще бъде присвоено на Arduino.

  • В Windows 7 (по-специално 64-битовата версия) може да се наложи да влезете в диспечера на устройствата и да актуализирате драйверите на Arduino Uno или Mega 2560. За да направите това, щракнете с десния бутон върху устройството в диспечера на устройства (платката трябва да е свързан към компютъра) и посочете отново към Windows съответния .inf файл. Този файл се намира в папката drivers/ на софтуера Софтуер Arduino(но не и в поддиректорията FTDI USB Drivers).
  • Ако по време на инсталацията Arduino драйвери Uno или Mega 2560 под Windows XP получавате следната грешка: „Системата не може да намери посочения файл“, след това опитайте това решение (относно добавянето на ключа „RunOnce“ към клона на системния регистър „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion“ ).
  • В Linux Arduino Uno и Mega 2560 се дефинират като /dev/ttyACM0 устройства, които не се поддържат от стандартната версия на библиотеката RXTX, използвана от серийната среда на Arduino. Поради това версията на Linux на тази среда включва коригирана RXTX библиотека, която също работи с /dev/ttyACM* устройства. Има и специален (11.04), който включва поддръжка за такива устройства. Ако използвате стандартния RXTX пакет, тогава трябва да създадете символна връзка в системата от /dev/ttyACM0 към /dev/ttyUSB0 (например) - тогава серийният порт ще се появи в средата на Arduino.

Достъп до сериен порт

  • В Windows: ако програмата отнема много време за отваряне или се срива при стартиране, или менюто Инструменти в нея отнема твърде много време за отваряне, тогава в диспечера на устройствата опитайте да деактивирате всички Bluetooth серийни портове и други мрежови COM портове. При стартиране или отваряне на менюто Инструменти, средата за разработка Arduino сканира всички серийни портове на вашия компютър, съответно наличието на такива мрежови портове понякога може да доведе до замръзване или срив на програмата.
  • Уверете се, че нямате стартирани програми за сериен скенер, като USB Cellular Wifi Dongle (като от Sprint или Verizon), PDA приложения за синхронизиране, Bluetooth USB драйвери (като BlueSoleil), виртуални демони и др.
  • Уверете се, че причината за блокиране на серийния порт не е защитна стена (например ZoneAlarm).
  • Също така е необходимо да затворите всички програми, които следят данни, изпратени чрез USB между Arduino и компютър (например Processing, PD, vvvv и др.).
  • На Linux: Опитайте да стартирате средата на Arduino като root, поне временно, за да видите дали това помага да флашнете Arduino или не.

Физическа връзка с платката

  • Първо се уверете, че Arduino е включен (свети зелен светодиод) и свързан към компютър.
  • На Mac компютри има някои проблеми, когато свързване на Arduino Uno и Mega 2560 през USB хъб. Ако нищо не се появи в менюто "Инструменти > Сериен порт", опитайте да включите платката директно във вашия компютър и рестартирайте Arduino IDE.
  • По време на фърмуера изключете всички устройства от цифрови пинове 0 и 1, тъй като тези пинове са свързани към интерфейса за свързване на Arduino към компютъра (след успешно флашване на кода към контролера, те могат да се използват отново).
  • Опитайте да флашнете Arduino, като изключите всички устройства от него (с изключение на USB кабела, разбира се).
  • Уверете се, че платката не е в контакт с проводими метални предмети.
  • Опитайте с друг USB кабел, понякога и те не успяват.

Автоматично нулиране

  • Ако вашият Arudino не поддържа функцията за автоматично нулиране, уверете се, че сте нулирали платката няколко секунди, преди да мига. (Arduino Diecimila, Duemilanove и Nano поддържат автоматично нулиране, както LilyPad, Pro и Pro Miniс 6-пинови конектори за програмиране).
  • Моля, обърнете внимание: някои Arduino Diecimila бяха случайно флашнати с грешен буутлоудър. Такива модели изискват физическо натискане на бутона за нулиране преди зареждане на програмата; вижте по-долу за повече информация.
  • На някои компютри трябва да натиснете бутона за нулиране (на платката), след като натиснете бутона за качване в средата на Arduino. Експериментирайте с различни времеви интервали между докосванията - от 0 до 10 секунди или повече с интервал от около 2 секунди.
  • Ако получите тази грешка: „Устройството не реагира правилно“. опитайте отново да флашнете програмата (с други думи, нулирайте платката и натиснете отново бутона Upload).

Товарач

  • Уверете се, че вашият Arduino има буутлоудър. За да направите това, просто рестартирайте устройството си. Вграденият светодиод (свързан към 13-ия пин на контролера) трябва да мига. Ако това не се случи, най-вероятно вашата платка няма буутлоудър.

Ако програмите все още не мигат, задайте въпрос във форума. Моля, включете следната информация в съобщението си:

  • Версията на вашата операционна система.
  • Тип на вашия Arduino. Ако това е Mini, LilyPad или друг модел, който изисква допълнителни кабели, включете снимка на вашата верига, ако е възможно.
  • Успявали ли сте успешно да флашнете платката преди. Ако е така, моля, опишете какво сте правили с платката, преди да спре да работи, какъв софтуер сте инсталирали или премахнали от компютъра си наскоро?
  • Съобщения, които се появяват при опит за зареждане на програма в Arduino. За да получавате съобщения, задръжте натиснат клавиша Shift, докато щракнете върху бутона Качване в лентата с инструменти.

Възниква грешка „Папката за компилация изчезна или не може да бъде записана“ (в Mac OS X)

Извлекли ли сте Arduino.app от образа на диска (напр. в папката Applications)? Ако не, няма да можете да изтеглите примери.

Arduino няма да стартира след актуализация на Java на Mac

Последната актуализация на Java на Apple се опитва да използва 64-битови версии на родните библиотеки. Софтуерът Arduino обаче използва 32-битовата версия на библиотеката RXTX. При стартиране на Arduino възниква следната грешка:

Неуловено изключение в основния метод: java.lang.UnsatisfiedLinkError: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: не е намерено подходящо изображение. Намерих: /Applications/arduino-0016/Arduino 16.app/Contents/Resources/Java/librxtxSerial.jnilib: няма съответстваща архитектура в универсална обвивка

За да разрешите този проблем, щракнете върху приложението Arduino (т.е. Arduino 16.app) в прозореца Finder и от менюто File изберете Get Info. На панела поставете отметка в квадратчето „Отваряне в 32-битов режим“. След това средата на Arduino трябва да стартира нормално.

При компилиране на програмата възниква java.lang.StackOverflowError

Arduino IDE обработва предварително вашата скица, като манипулира кода с регулярни изрази. Понякога определени редове от текст причиняват неуспех на този процес. Ако видите грешка като тази:

Java.lang.StackOverflowError в java.util.Vector.addElement(Неизвестен източник) в java.util.Stack.push(Неизвестен източник) в com.oroinc.text.regex.Perl5Matcher._pushState(Perl5Matcher.java)

В com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) в com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java)) в com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) в com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher.java) в com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher. java) в com.oroinc.text.regex.Perl5Matcher._match(Perl5Matcher .java)

тогава ситуацията е точно такава. Проверете кода за необичайни последователности от знаци, свързани с "двойни кавички", "единични кавички", обратна наклонена черта \, коментари и т.н. Например липсващи кавички или например такава последователност "\" (вместо """) .

Sketch не работи, когато платката се захранва от външен източник (модели на Arduino Diecimila или по-стари)

Тъй като RX пинът е изключен, буутлоудърът на Arduino може да получи шум вместо данни, което означава, че никога няма да изтече и съответно програмата няма да стартира. За да разрешите този проблем, опитайте да свържете щифта RX към маса с резистор от 10 kΩ (или свържете щифтовете RX и TX).

Средата за разработка Arduino (в Windows) замръзва при опит за флашване на програмата

Този проблем може да възникне поради конфликт между Arduino и процеса "LVPrcSrv.exe" на Logitech. Отворете диспечера на задачите и го намерете в списъка с процеси. Ако е там, тогава трябва да завършите процеса, преди да мигате програмата.

Arduino не се включва (зеленият светодиод за захранване не свети)

Ако използвате Arduino Diecimila или по-стар с USB (напр. NG), уверете се, че джъмперът на платката (малката пластмасова част близо до USB конектора) е поставен правилно. Ако платката се захранва от външен източник на захранване (свързан към съответния конектор), тогава джъмперът трябва да затваря двата щифта, които са по-близо до захранващия конектор. Ако платката се захранва от USB, тогава джъмперът трябва да затваря двата щифта, които са по-близо до USB конектора. Тази снимка показва позицията на джъмпера, когато платката се захранва от USB.

(благодарение на mrbbp за публикацията и снимката)

Стартирането на програмата на Arduino Diecimila отнема твърде дълго (6-8 секунди)

На няколко Ардуино дъски Diecimila случайно стартира буутлоудъра Arduino NG. Работи добре, само че има по-дълъг период на изчакване след нулиране на платката (тъй като Arduino NG не прилага автоматично нулиране, което изисква ръчно синхронизиране на процеса на фърмуера). Можете да разпознаете буутлоудъра от NG по светодиода, свързан към пин 13: в Arduino NG, след нулиране на платката, той мига 3 пъти, а в Diecimila - 1 път. Ако вашият Diecimila има инсталиран буутлоудър от NG, тогава преди да мигате скицата, трябва физически да натиснете бутона за нулиране, разположен на платката. Възможно е също да флашнете правилния буутлоудър на Diecimila в устройството, вижте страницата на буутлоудъра за повече подробности.

Грешка при стартиране на arduino.exe в Windows

Ако възникне грешка при стартиране на arduino.exe под Windows, като например това:

Arduino се натъкна на проблем и трябва да се затвори.

след това опитайте да стартирате Arduino, като използвате файла run.bat. Моля, бъдете търпеливи като Отнема известно време, за да стартирате средата на Arduino.

Защо Arduino не работи на по-стари версии на Mac OS X?

Ако получите грешка като тази:

Грешка при връзка (dyld): dyld: /Applications/arduino-0004/Arduino 04.app/Contents/MacOS/Arduino Недефинирани символи: /Applications/arduino-0004/librxtxSerial.jnilib недефинирана препратка към _printf$LDBL128 се очаква да бъде дефинирана в / usr/lib/libSystem.B.dylib

тогава вероятно трябва да актуализирате системата си до Mac OS X 10.3.9 или по-нова версия. По-старите системни библиотеки не са съвместими с Arduino.

Благодаря на Gabe462 за съобщението.

При стартиране на средата Arduino се появява UnsatisfiedLinkError (със съобщение за библиотеката librxtxSerial.jnilib)

Ако получите следната грешка при стартиране на Arduino:

Неуловено изключение в основния метод: java.lang.UnsatisfiedLinkError: Native Library /Users/anu/Desktop/arduino-0002/librxtxSerial.jnilib вече е зареден в друг класов зареждач

тогава вероятно имате стара версия на библиотеката, която отговаря за връзката. Потърсете файловете comm.jar или jcl.jar в папката /System/Library/Frameworks/JavaVM.framework/ или в директориите, изброени в променливите на средата CLASSPATH и PATH. (бъг, открит от Anurag Sehgal)

Какво означава грешката „Не може да се намери главният клас“?

Ако възникне следната грешка при стартиране на Arduino:

Стартираща програма за виртуална машина на Java: Не може да се намери главният клас. Програмата ще излезе.

проверете дали сте разопаковали правилно съдържанието на Arduino .zip - по-специално се уверете, че папката lib се намира директно в директорията на Arduino и съдържа файла pde.jar.

Как да се справя с cygwin конфликти в Windows?

Ако cygwin вече е инсталиран на вашата машина, когато се опитате да компилирате скицата в средата на Arduino, може да възникне следната грешка:

6? (3512) C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe: *** фатална грешка - C:\Dev\arduino-0006\tools\avr\bin\avr-gcc.exe : *** Открито е несъответствие на версията на споделената системна памет - 0x75BE0084/0x75BE009C.

Този проблем най-вероятно се дължи на използването на несъвместими версии на cygwin DLL.

В търсенето на Windows (Старт -> Намери), въведете cygwin1.dll и изтрийте всички намерени файлове, с изключение на най-новата версия. Най-новата версия трябва да се намира в папката x:\cygwin\bin, където "x" е устройството, където е инсталирана дистрибуцията на cygwin. Също така се препоръчва да рестартирате компютъра си.

Също така се уверете, че cygwin не седи в процеси, когато средата на Arduino работи. Можете също така да опитате да премахнете файла cygwin1.dll от папката на Arduino и да го замените с файла cygwin1.dll от съществуващото разпространение на cygwin (което най-вероятно се намира в папката c:\cygwin\bin).

Средата Arduino и менюто Инструменти се отварят за дълго време (в Windows)

Ако средата на Arduino се стартира за много дълго време или замръзва, когато се опитвате да отворите менюто с инструменти, тогава това показва конфликт с друго устройство в системата. При стартиране, а също и при отваряне на менюто Инструменти, софтуерът Arduino се опитва да получи списък с всички налични COM портове в системата. Възможно е специфичен COM порт, създаден от някое от устройствата на компютъра, да забавя този процес. Проверете диспечера на устройствата. Опитайте да деактивирате всички устройства в него, които могат да създават COM портове в системата (например Bluetooth адаптери).

Устройството не се показва в Tools | Сериен порт

Ако използвате Arduino от USB, уверете се, че драйверите за FTDI чипа са инсталирани правилно (вижте инструкциите за инсталиране). Ако използвате USB-UART адаптер с обикновен Arduino (без USB), проверете дали драйверите за този адаптер са инсталирани.

След това се уверете, че платката наистина е свързана: менюто със списъка с портове се актуализира всеки път, когато отворите менюто Инструменти, съответно, ако току-що сте изключили платката, тогава тя няма да бъде в този списък.

Проверете дали работят програми, които сканират всички серийни портове, като приложения за синхронизиране на PDA, Bluetooth-USB драйвери (като BlueSoleil), виртуални демони и др.

В Windows системи номерът на COM порта, зададен от Arudino, може да е твърде голям. От потребител zeveland:

„Малка бележка за тези, които не могат да флашнат програма Arduino с висок номер на COM порт: опитайте да намалите номера на порта, свързан с FTDI чипа.“

„Моята система има куп виртуални COM портове от Bluetooth адаптер, така че на Arduino беше присвоен COM17. IDE не можа да намери Arduino, така че премахнах другите виртуални портове в контролния панел (под XP) и промених порта за FTDI чипа към COM2. Просто се уверете, че arduino използва определения порт и трябва да сте добре."

Ако имате стара версия на драйверите FTDI на Mac компютър, ще трябва да ги деинсталирате и инсталирате последна версия. Вижте тази нишка във форума за инструкции за инсталиране.

Gnu.io.PortInUseException хвърля ли се при мигане на код или в „Сериен монитор“ (на Mac системи)?

Грешка в серийния номер. () gnu.io.PortInUseException: Неизвестно приложение в gnu.io.CommPortIdentifier.open(CommPortIdentifier.java:354) в processing.app.Serial. (Serial.java:127) на адрес processing.app.Serial. (Serial.java:72)

Най-често тази грешка означава, че портът е зает от друго приложение. Затова проверете дали работят някакви програми, които работят със серийни или USB портове, като приложения за синхронизиране на PDA, мениджъри на Bluetooth устройства, определени защитни стени и т.н. Също така имайте предвид, че някои програми (напр. Max/MSP) оставят серийния порт отворен дори когато не го използвате - така че е по-добре да затворите всички помощни програми, които използват серийния порт, и да излезете от тези приложения напълно.

Ако тази грешка възникне в средата за обработка или на Arduino версия 0004 или по-стара, тогава трябва да изпълните скрипта macosx_setup.command и да рестартирате компютъра. В Arduino 0004 този скрипт е променен и всички потребители трябва да го изпълняват (дори тези, които са изпълнявали същия скрипт, който идва с Arduino версия 0003). Трябва също така да изтриете съдържанието на папката /var/spool/uucp.

Възникват проблеми с USB FTDI драйвери

Скицата не стартира при включване или нулиране на Arduino

Най-вероятно това е така, защото изпращате данни от компютъра към платката веднага след включването му. Първите няколко секунди след нулирането, буутлоудърът (програма, мигаща в микроконтролера на платката) чака компютърът да изпрати нова скица, която да бъде записана в паметта на платката. Ако през тези няколко секунди данните не са пристигнали, товарачът ще завърши работата си след изчакване и ще стартира предварително заредената програма. Ако непрекъснато изпращате данни, товарачът няма да изтече и никога няма да изпълни качената скица. Следователно трябва или да намерите начин да „задържите“ изпращането на данни за няколко секунди след включване на устройството (например чрез програмиране на контролера да изпраща някои данни към компютъра в блока за настройка ()), или да флашнете своя програмирайте в микроконтролера в горната част на буутлоудъра с помощта на външен програмист.

Фърмуерът изглежда успешен, но нищо не работи

Неправилно сте избрали устройство от менюто Инструменти > Микроконтролер. Уверете се, че избраният от вас микроконтролер съвпада с този на вашата платка (ATmega8 или ATmega168) - моделът на контролера е посочен на най-големия чип.

Уверете се, че захранването е стабилно. Смущения или прекъсвания на захранването могат да причинят грешки при качване на скица.

Друг възможна причина- размерът на скицата е твърде голям за вашето устройство. Когато качва скица, Arduino 0004 проверява дали има достатъчно място в паметта на ATmega8 за зареждане на програмата. В същото време Arduino извършва своите изчисления въз основа на факта, че товарачът в паметта на контролера заема 1 KB. Може би вашето устройство има стара версия на 2 KB буутлоудър вместо 1 KB, тогава от 8 KB флаш памет на микроконтролера ATmega8 2 KB вече ще бъдат заети. Съответно в този случай само част от скицата ще бъде заредена в контролера, но програмата не знае това a priori, което ще доведе до постоянни нулирания на устройството.

Ако имате програмист (за паралелен порт или AVR-ISP), тогава можете да актуализирате версията на буутлоудъра в микроконтролера, като използвате Инструменти | Записване на Bootloader. В противен случай можете просто да коригирате настройките на средата на Arduino, като посочите наличното количество програмна памет в променливата upload.maximum_size, разположена вътре в конфигурационния файл (вижте инструкциите къде да намерите този файл). Променете посочената там стойност 7168 на 6144, след което средата за разработка правилно ще ви предупреди, когато допустимият размер на скицата бъде надвишен.

Как мога да намаля размера на фърмуера?

Микроконтролерът ATmega168 в Arduino е сравнително евтин модел, който има само 16 KB програмна памет, което всъщност не е много (от които 2 KB вече са заети от буутлоудъра).

Ако използвате изчисления с плаваща запетая във вашата програма, опитайте да пренапишете кода, за да използвате изчисления с цели числа - това ще спести приблизително 2 KB памет. В началото на програмата премахнете директивите #include на всички неизползвани библиотеки.

Също така проверете дали програмният код може да бъде оптимизиран, за да стане по-кратък.

Ние непрекъснато работим върху оптимизирането на ядрото Arduino, за да намалим пространството, заемано от неговите функции в общия обем на компилираната скица, и да оставим възможно най-много място за писане на програми.

Не се генерира PWM сигнал (аналогов изход) при извикване на функцията analogWrite() на щифтове, различни от 3, 5, 6, 9, 10 и 11

В микроконтролера Arduino (ATmega168) хардуерната поддръжка за PWM / analogWrite () се реализира само на определени щифтове. Следователно извикването на функцията analogWrite() на всички други пинове на контролера или ще генерира високо ниво на сигнала (5 V - за стойности, по-големи от 128), или ниско ниво(0 V - за стойности по-малки от 128). В по-старите версии на Arduino с микроконтролера ATmega8 поддръжката на PWM е реализирана само на пинове 9, 10 и 11.

Защо възникват грешки относно недекларирани функции или типове?

Средата за разработка Arduino се опитва автоматично да генерира прототипи на дефинирани от потребителя функции, така че те да могат да бъдат подредени в произволен ред във вашата програма. Процесът на прототипиране обаче не е съвършен и понякога води до объркващи грешки.

Например, ако декларирате вашия тип данни в програма и след това създадете функция, която използва този тип, тогава ще възникне грешка, когато се опитате да компилирате скицата. В този случай грешката възниква, защото автоматично генерираният прототип за тази функция ще бъде разположен ПРЕДИ декларацията на типа.

Ако декларирате функция, която връща 16-битов резултат (например от тип "unsigned int"), средата няма да разбере, че това е функция и съответно няма да създаде неин прототип. В този случай ще трябва да я напишете ръчно или да поставите декларацията на тази функция в програмния код по-горе - преди да бъде извикана за първи път в програмата.

При опит за флашване на програмата възниква грешка "невалиден подпис на устройството"

Следваща грешка:

Avrdude: Мда! Невалиден подпис на устройството. Проверете отново връзките и опитайте отново или използвайте -F, за да отмените тази проверка.

може да означава едно от двете неща: или сте избрали грешната дъска в менюто Инструменти > Дъска, или използвате грешната версия на avrdude. За качване на скици в Arduino се използва леко модифицирана версия на avrdude. Стандартната версия изпраща заявки, идентифициращи устройството във формат, който буутлоудърът на Arduino не разбира, което води до грешка. Затова се уверете, че използвате точната версия на avrdude, която идва с Arduino (