- Любовные романы
- Фантастика и фэнтези
- Ненаучная фантастика
- Ироническое фэнтези
- Научная Фантастика
- Фэнтези
- Ужасы и Мистика
- Боевая фантастика
- Альтернативная история
- Космическая фантастика
- Попаданцы
- Юмористическая фантастика
- Героическая фантастика
- Детективная фантастика
- Социально-психологическая
- Боевое фэнтези
- Русское фэнтези
- Киберпанк
- Романтическая фантастика
- Городская фантастика
- Технофэнтези
- Мистика
- Разная фантастика
- Иностранное фэнтези
- Историческое фэнтези
- LitRPG
- Эпическая фантастика
- Зарубежная фантастика
- Городское фентези
- Космоопера
- Разное фэнтези
- Книги магов
- Любовное фэнтези
- Постапокалипсис
- Бизнес
- Историческая фантастика
- Социально-философская фантастика
- Сказочная фантастика
- Стимпанк
- Романтическое фэнтези
- Ироническая фантастика
- Детективы и Триллеры
- Проза
- Юмор
- Феерия
- Новелла
- Русская классическая проза
- Современная проза
- Повести
- Контркультура
- Русская современная проза
- Историческая проза
- Проза
- Классическая проза
- Советская классическая проза
- О войне
- Зарубежная современная проза
- Рассказы
- Зарубежная классика
- Очерки
- Антисоветская литература
- Магический реализм
- Разное
- Сентиментальная проза
- Афоризмы
- Эссе
- Эпистолярная проза
- Семейный роман/Семейная сага
- Поэзия, Драматургия
- Приключения
- Детская литература
- Загадки
- Книга-игра
- Детская проза
- Детские приключения
- Сказка
- Прочая детская литература
- Детская фантастика
- Детские стихи
- Детская образовательная литература
- Детские остросюжетные
- Учебная литература
- Зарубежные детские книги
- Детский фольклор
- Буквари
- Книги для подростков
- Школьные учебники
- Внеклассное чтение
- Книги для дошкольников
- Детская познавательная и развивающая литература
- Детские детективы
- Домоводство, Дом и семья
- Юмор
- Документальные книги
- Бизнес
- Работа с клиентами
- Тайм-менеджмент
- Кадровый менеджмент
- Экономика
- Менеджмент и кадры
- Управление, подбор персонала
- О бизнесе популярно
- Интернет-бизнес
- Личные финансы
- Делопроизводство, офис
- Маркетинг, PR, реклама
- Поиск работы
- Бизнес
- Банковское дело
- Малый бизнес
- Ценные бумаги и инвестиции
- Краткое содержание
- Бухучет и аудит
- Ораторское искусство / риторика
- Корпоративная культура, бизнес
- Финансы
- Государственное и муниципальное управление
- Менеджмент
- Зарубежная деловая литература
- Продажи
- Переговоры
- Личная эффективность
- Торговля
- Научные и научно-популярные книги
- Биофизика
- География
- Экология
- Биохимия
- Рефераты
- Культурология
- Техническая литература
- История
- Психология
- Медицина
- Прочая научная литература
- Юриспруденция
- Биология
- Политика
- Литературоведение
- Религиоведение
- Научпоп
- Психология, личное
- Математика
- Психотерапия
- Социология
- Воспитание детей, педагогика
- Языкознание
- Беременность, ожидание детей
- Транспорт, военная техника
- Детская психология
- Науки: разное
- Педагогика
- Зарубежная психология
- Иностранные языки
- Филология
- Радиотехника
- Деловая литература
- Физика
- Альтернативная медицина
- Химия
- Государство и право
- Обществознание
- Образовательная литература
- Учебники
- Зоология
- Архитектура
- Науки о космосе
- Ботаника
- Астрология
- Ветеринария
- История Европы
- География
- Зарубежная публицистика
- О животных
- Шпаргалки
- Разная литература
- Зарубежная литература о культуре и искусстве
- Пословицы, поговорки
- Боевые искусства
- Прочее
- Периодические издания
- Фанфик
- Военное
- Цитаты из афоризмов
- Гиды, путеводители
- Литература 19 века
- Зарубежная образовательная литература
- Военная история
- Кино
- Современная литература
- Военная техника, оружие
- Культура и искусство
- Музыка, музыканты
- Газеты и журналы
- Современная зарубежная литература
- Визуальные искусства
- Отраслевые издания
- Шахматы
- Недвижимость
- Великолепные истории
- Музыка, танцы
- Авто и ПДД
- Изобразительное искусство, фотография
- Истории из жизни
- Готические новеллы
- Начинающие авторы
- Спецслужбы
- Подростковая литература
- Зарубежная прикладная литература
- Религия и духовность
- Старинная литература
- Справочная литература
- Компьютеры и Интернет
- Блог
Занимательная электроника - Юрий Ревич
Шрифт:
Интервал:
Закладка:
На рис. 21.1 показано окно Arduino IDE после компилирования демонстрационного примера из коллекции сайта «Амперки», представляющего собой вывод на русифицированный строчный ЖК-дисплей традиционного «Здравствуй, мир!». Для компиляции с» целью проверки загруженного текста надо выбрать пункт меню Скетч | Проверить/Компилировать (или нажать сочетание клавиш <Ctrl>+<R>), a для его загрузки — пункт Файл | Загрузить (или нажать сочетание клавиш <Ctrl>+<U>). Перед загрузкой файл компилируется заново, потому проверенные программы можно не компилировать отдельно.
Рис. 21.1. Главное окно Arduino IDE
Обычно среды программирования перед компиляцией автоматически сохраняют текущий вариант текста программы, но здесь его придется сохранять отдельной операцией (перед выходом из среды об этом вам напомнят). Причем каждый проект вас заставят сохранять в отдельной папке, имя которой должно совпадать с именем файла (в общем-то, разумный подход, с точки зрения «чайника»).
А вот скомпилированный hex-файл, если он вдруг вам понадобится (его можно ведь загружать обычным программатором, без среды Arduino), придется поискать. Результаты деятельности Arduino IDE размещаются в недрах папки Пользователи<имя пользователя>АррDatаLосаlТеmр (не путайте AppData с системной Application Data, куда вас, скорее всего, не пустят). Там вы найдете кучу папок с расширением tmp, название которых начинается с build (например, build290388496895462656.tmp) — внутри одной из них и находится искомый hex-файл, имя которого должно совпадать с именем файла программы.
Скриншот окна Arduino IDE на рис. 21.1 хорошо иллюстрирует главный недостаток программирования микроконтроллеров на высокоуровневом языке, таком, как Processing, — программа, содержащая всего два десятка строк, в памяти контроллера займет почти 3 килобайта (см. сообщение внизу). И хотя к этим двум десяткам следовало бы причислить еще пару-тройку сотен строк библиотеки LiquidCrystal (см. на скриншоте первую строку скетча[39]), все равно для такой простой программы это очень много — почти полторы тысячи команд AVR-контроллера, которые уже не влезут в память, например, знакомого нам ATtiny2313. Аналогичная программа на «голом» AVR-ассемблере заняла бы от силы пару сотен операторов и спокойно влезла бы в любой контроллер, имеющий достаточное количество выводов для управления строчным дисплеем. Такова цена за удобство и скорость разработки — написание и отладка подобной программы на ассемблере у опытного программиста запросто может занять целый день, а в среде Arduino даже неопытный любитель создаст ее с нуля от силы за час, который в основном потребуется для макетирования схемы с целью проверки функционирования.
Еще больше преимуществ, как мы увидим, такой язык в сравнении с ассемблером дает при выполнении операций с многобайтовыми числами или числами с плавающей запятой и производства некоторых других подобных действий (например, форматированного вывода чисел на дисплей). Эффективность труда программиста возрастает на много порядков.
Среда Arduino сама не найдет устройство. Даже если оно подключено, но по каким-то причинам связь с компьютером нарушена, то при попытке загрузки программы возникнет сообщение об ошибке (красная надпись внизу):
avrdude: stk500_getsync(): not in sync: resp=0x00
Сразу привыкайте к недоработкам редактора Arduino — среда при этом может невозмутимо сообщать, что Загрузка завершена (как говорится, не верь глазам своим!).
Чтобы этого красного сообщения не возникало, следует после установки драйвера и первого запуска arduino.exe сразу установить нужный СОМ-порт через меню Сервис | Последовательный порт. Тогда в нижнем левом углу окна программы появится надпись, соответствующая типу платы и подключенному порту. Если подключенная плата не определяется автоматически или определяется неверно (это может быть, например, при подключении через отдельный адаптер таких плат, как Arduino Mini, не имеющих встроенного USB-порта), то тип платы придется выбрать отдельно через меню Сервис | Плата.
В процессе отладки коммуникационных функций по последовательному порту вам понадобится отключать и включать устройство Arduino. Если вы используете стороннюю коммуникационную программу (как чаще всего и бывает, см. далее), и забудете ее закрыть перед программированием, то порт может оказаться недоступным для Arduino IDE. Прежде всего закройте коммуникационную программу и попробуйте загрузить программу в плату заново — скорее всего, дело только в этом. Но при многих включениях и отключениях платы Arduino драйвер может окончательно запутаться, в результате чего последовательный порт окажется недоступен и в среде Arduino, и в сторонних коммуникационных утилитах. Чтобы восстановить работоспособность порта, необязательно перезагружать компьютер. Найдите устройство Arduino в Диспетчере устройств и в контекстном меню разыщите пункт Отключить. Отключите устройство, и сразу же включите опять (в Windows 7 и 8 пункт меню будет называться Задействовать). После этого порт должен заработать, как надо.
Настройки Arduino IDEПосле загрузки драйвера первым делом проверьте пункт Файл | Настройки (File | Preferences для англоязычной версии). Там вы можете поменять язык самой программы (и, кстати, также и язык сообщений об ошибках), отказаться от проверки наличия обновлений (иначе при каждом запуске будете получать назойливые предложения сменить русскую версию на последнюю английскую), и, главное, поменять размещение текстов ваших программ (скетчей), заданное по умолчанию.
Во всех последних версиях Windows подобные среды программирования предлагают разместить папку с проектами где-нибудь в недрах папки Users (Пользователи). Способ неудобный (проще хранить среду и привязанные к ней документы в одном каталоге) и опасный (потому что потерять пользовательские папки при переустановке системы — как два байта переслать), но вынужденный — по умолчанию писать в системный каталог Program Files пользовательским программам во всех версиях Windows после ХР запрещено. Поэтому я и рекомендовал не распаковывать среду в системный каталог — если вы захотите создать в нем пользовательскую папку с проектами, то для нее придется долго и мучительно возиться с правами доступа. А если он размещен отдельно, то просто создайте внутри папки, содержащей arduino.exe, каталог, с названием, например, Projects, и укажите его в самом первом пункте настроек через кнопку Выбрать.
Много разнообразных настроек доступны через файл preferences.txt (его размещение указано внизу окна настроек). Так, обладателям большого монитора размер окна Arduino IDE по умолчанию покажется мелковатым, а запоминать размер среда почему-то не умеет (ах, если бы это было самым крупным ее недостатком!). Для изменения этого параметра следует отредактировать в файле preferences.txt строки editor.window.height.default И editor.window.width.default (установив, например, 1000 и 800, соответственно). Только не забудьте, что перед внесением изменений в preferences.txt следует создать его резервную копию.
Программы для ArduinoПрограммы для Arduino (скетчи) пишутся на варианте языка Processing/Wiring, специально разработанном для этой среды. Как и многие другие языки, он основан на языке C/C++, потому в случае затруднений в правилах синтаксиса можете смело обращаться к любому сетевому справочнику по функциям этих популярных языков. В среде Arduino работает большинство стандартных функций языка С, так что проблема будет не в том, чтобы найти способ осуществления какого-либо действия (такого, как извлечение корня или преобразование числа в строку и наоборот), а в том, чтобы выбрать подходящий способ из всего многообразия, которым почему-то так гордятся приверженцы этого языка.
Справку по большинству функций языка С можно найти в соответствующем разделе классического учебника Герберта Шилдта [25]. Основные приемы выполнения арифметических и логических операций на языке С неплохо изложены в книге [26]. Что же касается функций, специфических для Arduino, то они изложены в разделе Программирование официального сайта Arduino, в том числе на русском языке [23].
Если вы с языком С до сих пор не знакомы, то учтите, что логики и стройности в нем немного, зато очень много лишнего и непонятного. Не унывайте — чтобы овладеть Arduino, изучать язык досконально не требуется, Processing и был придуман для тех, кто не хочет углубляться в программирование. Нам сейчас будет достаточно следующих элементарных сведений.
Любая программа в среде Arduino состоит из трех основных блоков: блока определений, функции установок и бесконечного цикла, который и составляет собственно программу. Эти блоки полностью аналогичны структуре нашей ассемблерной программы (см. главу 19, где с блока определений начиналась программа, функция установок у нас следовала за меткой Reset, а бесконечный цикл заключал текст, который выполняется вне прерываний (у нас — то, что между меткой Cykle: и оператором rjmp Cykle). Явное использование прерываний в программах Arduino — скорее исключение, что относится к числу недостатков этой платформы (и мы еще будем об этом говорить).

