Site Loader

Arduino Playground — HomePage

Arduino Playground is a work in progress. We can use all the help you can give, so please read the Participate section and get your fingers typing!


Playground Content Tree

Arduino en Español, Български, Català, Deutsch, Français, Italiano, Português, Русский
Manuals and Curriculum
  • More Good starting places — Cohesive documentation that will step you through a variety of topics.
Board Setup and Configuration
  • Learn more about using and configuring your boards. For example: power supplies, burning bootloaders, firmwares, etc.
Development Tools
  • Software for PCs for Arduino development.
Arduino on other Chips
  • The Arduino IDE can be configured to program a variety of microcontrollers, not just the ones found on the standard Arduino boards.
Interfacing With Hardware
  • Output — Examples and information for specific output devices and peripherals: How to connect and wire up devices and code to drive them.
  • Input — Examples and information on specific input devices and peripherals: How to connect and wire up devices and code to get data from them.
  • User Interface
  • Storage — Adding external storage to your Arduino board.
  • Communication — various means of communicating to and from an Arduino board.
  • Data Logging and Plotting — libraries for SD cards, data loggers and plotters
  • Power supplies — Solutions for powering your project.
  • General — General interfacing that does not fit under any of the categories, or span across multiple.
Interfacing with Software
  • How to get Arduino to talk to various pieces of software on your computer.
User Code Library
  • Here you find general use software snippets and libraries for calculations and ‘internal’ purposed. Tutorials for learning C, math, sleep, etc.
    • Snippets and Sketches
    • Libraries
    • Tutorials
  • If you have code to contribute related to an external device, find the right spot under Interfacing With Hardware.
Suggestions & Bugs
  • With your help this free open source project can continue to improve. Bug reports, feature requests, and pull requests are welcome!
Electronics Techniques
  • Soldering tutorials and electronics texts and resources.
Sources for Electronic Parts
Related Hardware and Initiatives
  • Arduino-compatible hardware, related initiatives, and other microcontroller platforms.
Arduino People/Groups & Sites
Exhibition
  • A gallery of projects made with Arduino (as opposed to tutorials on how to recreate them).
Project Ideas
  • A list of project ideas, divided into three difficulty levels:
    Easy, Intermediate and Advanced.
Languages
  • Català
  • Español — Spanish
  • Français
  • Italiano
  • Deutsch
  • Português
  • Simplified Chinese (简体中文)

«.h: Нет такого файла или каталога» — 2 простых исправления ошибки Arduino

Среда, 11 часов вечера. Вы только что потратили три часа на работу над своим следующим проектом Arduino, и, НАКОНЕЦ, вы готовы дать Ваш набросок закружился. Вы нажали кнопку «Загрузить», ладони вспотели от предвкушения того, что вся ваша тяжелая работа увенчалась успехом. И тогда вы видите ошибку:

Нет такого файла или каталога.

Конечно, это случайная аберрация». Не о чем беспокоиться», — бормочете вы, изголодавшись по полубреду, снова нажимая «Загрузить». И еще раз эти сводящие с ума слова «нет такого файла или каталога» смотрят на вас в ответ с враждебной насмешкой газлайтинга.0003

Ты был здесь?

Если вы пытаетесь запустить скетч Arduino, но постоянно сталкиваетесь с ошибкой «нет такого файла или каталога», не волнуйтесь. На самом деле это довольно распространенная проблема, и есть два простых решения, которые почти всегда работают.

Продолжайте читать. Мы покажем вам, что они из себя представляют.

 

Нет такой ошибки файла!

Сообщения об ошибках могут быть такой головной болью. Однако они служат полезной цели, сообщая нам о том, что пошло не так. На первый взгляд, ошибка «нет такого файла или каталога» особенно раздражает, потому что кажется, что она нарушает это полезное правило. Конечно, есть файл или каталог! Вы только что сделали вещь, и она тут же, спрятанная в каталоге.

Но подождите, давайте посмотрим поближе. Если вы посмотрите на нижнюю часть Arduino IDE, где отображается сообщение об ошибке, вы увидите эту удобную маленькую кнопку с надписью «копировать сообщения об ошибках».

Нажмите на это сейчас. Вы, вероятно, не упадете со стула, узнав, что, нажав эту кнопку, вы просто скопировали сообщение об ошибке из маленького окна в нижней части пользовательского интерфейса The Serial Monitor в буфер обмена вашего компьютера.

Эта функция копирования невероятно полезна. Например, вы можете вставить сообщение об ошибке в Google и узнать больше об ошибке. Или вы можете воспользоваться активным сообществом Arduino, попросив помощи на форуме. Однако для этой ситуации мы можем быть немного более простыми. Все, что мы собираемся сделать, это более подробно рассмотреть, что такое сообщение на самом деле говоря. Для этого просто запустите текстовый редактор вашего ПК и вставьте его в пустой экран.

 

Расшифровка ошибки «Нет такого файла»

Вот она, надоедливая ошибка во всей своей свежевставленной красоте.

Я разберу это для вас построчно.

  • Первая строка проста. Он просто описывает используемую версию Arduino, какая операционная система работает и какую плату вы выбрали.
  • Строка 2 начинает сосредотачиваться на проблеме.
    • Первый бит, «ручка», относится к названию программы. Это ваш эскиз, в основном.
    • Вторая часть обычно начинает сбивать людей с толку, но это легко понять, если знать. «10» в этом примере говорит вам, что ошибка произошла в строке 10 вашего скетча. «19» сообщает вам длину строки кода в пробелах и символах. Первое число обычно является более полезным из двух, потому что вы можете использовать его, чтобы найти ошибку в вашем эскизе.
  • Затем мы добираемся до дымящегося пистолета ошибки. Он говорит: «servo.h: нет такого файла или каталога».

Итак, эта штука, «Servo.h.» Это то, что нам нужно исправить, и благодаря строке 2, мы знаем, где их найти. Строка 10. всегда строка 10.

Теперь, когда мы немного лучше знаем, что происходит, давайте приступим к реализации исправления.

 

Ошибки нашего пути

Давайте тщательно проанализируем эту проклятую строку 10.

Он говорит «#include »

Когда мы проверяем этот код, эта строка сообщает компилятору Arduino IDE: «Эй, чтобы эта программа работала, вам нужно получить этот файл с именем servo.h ».

Допустим, у вас есть машина для изготовления этикеток, и вы хотели использовать ее для печати крутых мотивационных этикеток, например «Успех!» и «Продолжайте пробовать!» и «Смотри, Начос!» Чтобы это произошло, вам сначала нужно загрузить рулон этикеток. Нет рулона этикеток? Ну, тогда производитель этикеток не сработает.

Эскиз, который вы пытаетесь загрузить, похож на производителя этикеток. Файл (в нашем примере это файл с именем «servo.h») представляет собой рулон этикеток.

Таким образом, сообщение об ошибке на самом деле говорит что-то полезное. Он говорит: «Эй, программист, ты сказал, что мне нужен этот другой файл. Ну, я искал его, и его там нет. Что дает?»

Теперь мы знаем, что сообщение об ошибке не является полной чушью, давайте рассмотрим два наиболее распространенных сценария, которые его вызывают.

 

Сценарий 1. Толстые пальцы

Этот скетч написан вами. На самом деле это вы написали строку «#include». Первое, что вы должны проверить, это правильное написание и использование заглавных букв. Может вы неправильно написали название библиотеки? Или (как в примере ниже), возможно, вы написали не те буквы.

Таким образом, «servo.h» должен иметь заглавную букву «S». Полностью и с правильной заглавной буквой следует читать «Servo. h». Вы заметите выше, что слово servo меняет цвет, когда оно правильно пишется с заглавной буквы. Это изменение цвета означает, что имя библиотеки «Servo» распознается как «ключевое слово» в среде разработки Arduino IDE.

Имейте в виду, что это может быть не так для всех используемых вами библиотек. Другими словами, изменение цвета не всегда будет означать, что вы используете правильное написание или заглавные буквы, но часто это полезное визуальное напоминание.

О, и, наверное, хорошо бы упомянуть, что каждый в истории программирования Arduino в какой-то момент писал с ошибкой или неправильно писал слово с заглавной буквы. Удивительно, как долго вы можете смотреть на строку кода и пропустить что-то подобное.

Так что не парься.

 

Сценарий 2. Отсутствующие файлы

Это приводит нас к следующему распространенному сценарию ошибки «Нет такого файла или каталога».

Очень часто работа с Arduino включает в себя использование кода, который кто-то разработал и опубликовал в Интернете, а затем его адаптацию к вашему проекту. Это часть того, что делает работу с Arduino такой простой. Одна проблема, которая часто возникает, когда мы делаем это, заключается в том, что мы случайно вводим код без соответствующего файла.

Простой способ проверить, есть ли у вас файл, который ищет скетч, — это перейти в Sketch > Include Library из Arduino IDE. Затем найдите имя этой библиотеки.

К какой бы библиотеке ни обращался оператор #include, вы хотите просмотреть этот большой длинный список в поисках библиотеки с точно таким же именем. Если вы не видите там имя файла, это означает, что библиотека не установлена. Вам нужно будет добавить эту библиотеку, прежде чем скетч скомпилируется без ошибок.

Итак, как добавить эту библиотеку?

Самый простой способ — перейти в Sketch > Include Library > Manage Libraries. Arduino IDE откроет диалоговое окно, в котором вы сможете найти нужную библиотеку.

Убедитесь, что вы вводите именно то слово, которое соответствует строке #include. Как только вы найдете недостающую библиотеку, нажмите «Установить». Arduino IDE сообщит вам, что она устанавливает запрошенную вами библиотеку и соответствующим образом обновляет программное обеспечение.

Затем дважды проверьте, успешно ли установлена ​​библиотека, выбрав Sketch > Include Library. Вы должны увидеть свою новую библиотеку в раскрывающемся списке.

Хорошие новости! Если библиотека есть, теперь вы сможете скомпилировать свой скетч без ошибок.

 

Другие местоположения библиотек

Хорошо, есть одна маленькая ложка дегтя. Как эти чертовы мушки всегда умудряются так все усложнять?

Вот в чем дело. Не все библиотеки живут в этом удобном всплывающем окне внутри Arduino IDE. Сообщество Arduino бурлит умными идеями, но умность (в отличие от плавленого сыра) не всегда выражается в удобно стандартизированных, индивидуально упакованных кусочках. Есть тонн различных способов найти библиотеки Arduino в Интернете.

Если вы загружаете или копируете программу из Интернета, просто перейдите на страницу, на которой вы получили эту программу, и внимательно изучите библиотеку, на которую ссылается автор. Например, у них может быть ссылка на GitHub, место, где люди хранят множество библиотек кода.

Где бы вы ее ни нашли, обычно библиотека будет включена в пакет файла .zip. После того, как вы загрузили .zip-файл, запустите Arduino IDE и выберите «Скетч» > «Включить библиотеку» > «Добавить библиотеку .ZIP». Затем перейдите в папку, в которую вы загрузили файл, и выберите его. Предполагая, что дополнительные мази не вторгаются в ваш рабочий процесс, Arduino IDE отобразит всплывающее сообщение «Библиотека добавлена ​​в ваши библиотеки» прямо над темной областью, где появилась исходная ошибка «Нет такого файла или каталога».

Теперь все как обычно! Просто перейдите в Sketch > Include Library, и новая библиотека появится в раскрывающемся списке.

Как однажды сказал француз-дислектик крупному скрипачу: «Виола!»

Теперь вы знаете не один, а  два способа добавить новую библиотеку. Какое время быть живым!

 

Обзор

Итак, краткое резюме.

Мы рассмотрели два основных сценария, которые вызывают появление ошибки «Нет такого файла или каталога» после компиляции скетча:

  • Феномен толстых пальцев: Проверьте правописание и заглавные буквы! Если вы написали набросок, велика вероятность, что вы допустили маленькую ошибку. И не корите себя за это! Буквально каждый кодер делал это.
  • Перепутались отсутствующие файлы: В противном случае, если вы скопировали код у кого-то другого, проверьте, установлены ли правильные библиотеки. Не видите свою библиотеку? Установите его, используя метод, описанный выше, и все будет хорошо.

Не может быть таких вещей, как бесплатный обед, совпадение или дракон удачи. Но будьте уверены. Ваши файлы и каталоги? Они живы и здоровы.

НИЗКОУРОВНЕВОЕ ПРОГРАММИРОВАНИЕ ARDUINO(ASSEMBLER): ПРЕРЫВАНИЯ ПО ТАЙМЕРУ

09.01.2023

ВВЕДЕНИЕ

ЧТО ТАКОЕ ТАЙМЕР?

Таймер (точнее Таймер/Счетчик ) — это аппаратная часть, реализованная в микроконтроллере (он также есть в других контроллерах и процессорах).

Таймер программируется по специальным реестрам. Например, мы настраиваем  предварительный делитель , его режим, генератор сигналов, который будет объяснен более подробно в ближайшее время.

Пока мы работаем с Croduino/Arduino (микроконтроллер Atmel AVR ATmega328), мы снова сконцентрируемся на этой части. ATmega328 имеет три таймера: timer0, timer1 и timer2 . Timer0 и timer2 — 8-битные таймеры, timer1 — 16-битные. Основное различие заключается в разрешении: 8-битное имеет 256 значений, 16-битное — 65536 для большего разрешения, а 16-битное — 65536 для большего разрешения.

Все таймеры основаны на системных часах, на Croduino/Arduino это 16 МГц. Все таймеры в прошивке Arduino (загрузчик) настроены на частоту 1 кГц и разрешены все прерывания.

Представьте, что у вас есть счетчик, который при нажатии кнопки увеличивается на единицу. Таймер/счетчик работает по тому же принципу: считает удары часов. Мы упоминали, что скорость счета составляет 16 миллионов ударов в секунду, примерно 63 нс на удар или операцию. 8-битный таймер будет считать от 0 до 255 и 16-битный от 0-65535. Время, необходимое для сброса счетчика, составляет 256/16 000 000 = 16 мкс и 65 536/16 000 000 = 4 мс для 16-битного реестра. это не очень практичный способ подсвечивать светодиод каждую 1 секунду. Вместо управления скоростью таймера/счетчика мы будем использовать что-то под названием 

Предварительный делитель . В следующем разделе мы сосредоточимся на реестрах, отвечающих за таймеры, и в одном из них мы определим Prescaler.

Предделитель

Предделитель определяет скорость определенного таймера (таймер0, таймер1 или таймер2) по следующей формуле:

(скорость таймера [Гц]) = (тактовая частота Arduino (16МГц) [Гц]) / prescaler

Согласно спецификации, Prescaler имеет определенные значения

1, 8, 64, 256 i 1024 . Можно видеть, что Prescaler 1 будет увеличивать тактовую частоту на 16 МГц, Prescaler 8 — на 2 МГц, Prescaler 64 — на 250 кГц и т. д. Проще говоря, Prescaler, установленный на 1024, будет после каждых 1024 ударов таймера/счетчика на 16 МГц добавлять 1 к своему счетчику (timer0, таймер1, таймер2). Проще говоря, за то время, пока Джон съест 1024 гамбургера, Боб съест 1,9.0003

Вернемся к таймерам. Первый новый реестр, который мы упомянем в этом руководстве, — это OCR выходной регистр сравнения , в котором мы сохраним значение сравнения соответствия . Кажется, что это слишком много сразу? Это не так, обо всем вышеперечисленном мы уже упоминали, а теперь им дали официальные названия. Вставьте его в формулу, чтобы лучше представить:

Объяснение:
16 МГц — скорость таймера/счетчика Arduino, мы вставляем его как 16 000 000 Гц
brzina.timera — учитывая, что мы хотим мигать светодиодом каждую секунду, подставляем частоту 1Гц
-1 — номер счетчика 0 поэтому подставляем -1 в формулу

Из таблицы видно, что наименьший прескалер, который мы можем использовать, равен 256 для 16-битного таймера 1. Причина? Значение 62499 можно сохранить в 16-битном реестре таймера1.
Для измерения счетчиков с частотой 1 Гц (1 секунда) мы можем использовать прескалер 1024, но гораздо точнее использовать прескалер меньшего размера.

Ни в одном из этих случаев мы не можем использовать 8-битные таймеры timer0 и timer2.

Теперь, когда мы выбрали таймер и прескалер, пришло время познакомиться с реестрами, которые нам нужно настроить.

Реестры

для получения дополнительной проверки. DataShing Teet

TCCR1A Управление сходом 0B00000000 (Нормальный) (Нормальный)
0B00000000 (Нормальный) (нормальный)
0B00000000 (Нормальный) (нормальный)

0B00000000 (нормальный)
9.

0 9.9001. (нормальный). нет icr)(256-предделитель)
TCCR1C   Регистр управления отсчетом таймера 0B0000000000 (без силы)

OCR1AH ​​ РЕГИСТРАЦИЯ СПОРТИКА — Высокий байт 0xf4
OCR1AL .

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *