Эта вводная статья для тех, кто уже успел распаковать со своим ребенком десяток-другой цветных коробок от конструкторов, построил сотни разнообразных конструкций и заполнил деталями от Лего все доступные емкости в чулане. Если вы готовы перейти на следующий уровень: с электроникой, микроконтроллерами, датчиками и умными устройствами – значит, пришло время для экспериментов с Ардуино!
В этой серии статей мы соберем самое главное, что нужно узнать об Ардуино, чтобы начать заниматься с детьми самостоятельно. Даже если вы никогда не брали в руки паяльник и слова «контроллер» и «контроллёр» для вас имеют примерно схожий смысл, можете быть уверенными – у вас все равно все получится! Мир электроники и робототехники сегодня полон простых и очень удобных решений, позволяющих практически с нуля создавать очень интересные проекты. Наш учебник поможет вам быстро сориентироваться и сделать первые шаги.
Начало работы с Arduino в системе Windows
При необходимости запрограммировать устройство для работы с микроконтроллером под Windows требуются:
- любая версия платы «Ардуино»;
- кабель USB;
- среда разработки «Ардуино IDE».
Последняя и драйверы скачиваются из интернета. Плата через кабель подсоединяется к компьютеру. В настройках указывается тип платы «Ардуино», с которой работает программист.
Устанавливаются драйверы и средство разработки. Можно открывать подходящие примеры работ и на их основе создавать свои приложения.
#37. Подключение матричной клавиатуры 4х4 Arduino
Сегодня в уроке рассмотрим принцип работы матричной клавиатуры 4х4. Подключим клавиатуру 4х4 к Arduino и напишем скетч для получения значений при нажатии на кнопки.
Технические параметры матричной клавиатуры для Arduino.
Обновлено: 19 октября , 2022 Подробнее …
Особенности работы с «Ардуино Мини»
Работа с Arduino Mini следует тем же правилам, что и с другими платами, за исключением некоторых моментов:
- подключение Arduino Mini к ПК сложнее, чем у стандартных моделей;
- в настройках IDE необходимо указать вручную тип платы из меню Tools | Board и выбрать «Arduino Mini»;
- прошивка нового скетча в Arduino Mini начинается с физического нажатия кнопки сброса на плате прямо перед началом операции.
Научиться программировать и работать с этим контроллером под силу даже детям. Интегрированная среда предоставляет простой и логический интерфейс.
Краткие сведения об Arduino Mini
Данная версия микроконтроллера должна обеспечить минимальные размеры при сохранении остальных функций, что накладывает некоторые особенности на плату:
- Микрочип в Arduino Mini (применяется ATmega328) меньше по размерам.
- Имеет 2 дополнительных аналоговых входа, всего 8. Однако 4 из них не имеют выводов на плате. Для них нужно самостоятельно припаивать штыри вывода. 2 вывода используются для интерфейса I2C и библиотекой Wire.
- Прочность Arduino Mini меньше других плат производителя.
- ATmega328 впаян в плату и потому не съемный, замене подлежит весь микроконтроллер.
- Не выдерживает перегрузок по напряжению на входах выше 9 В.
#36. GSM-модуль SIM800L. AT команды и отправка СМС
Сегодня в уроке рассмотрим Модуль GSM GPRS SIM800L V2.0 MicroSIM с антенной. Посмотрим в чем его преимущества и недостатки. Разберемся, как управлять данным модулем с помощью AT команд и оправим CMC сообщение.
Модуль GSM GPRS SIM800L V2.0 обладает минимальным функционалом — обмен данными с GSM-модулем по UART. Плата имеет слот для установки внешней SIM-карты. SIM800L V2.0 GSM/GPRS — это четырех диапазонный GSM/GPRS модуль, совместимый с Arduino. Модуль используется для реализации функций GSM и GPRS. Преимуществом этого модуля является возможность напрямую подключать его к Arduino или другому микроконтроллеру с напряжением питания 5В.
Обновлено: 15 сентября , 2022 Подробнее …
Основные функции
Язык программирования, используемый в «Ардуино ИДЕ», является усеченным вариантом С++. Основные функции, используемые для организации работы микроконтроллера, разбиты на группы, которые:
- осуществляют ввод и вывод сигнала в цифровом виде;
- управляют вводом и выводом аналогового сигнала;
- обеспечивают дополнительные возможности управления вводом и выводом;
- осуществляют управление временем;
- проводят математические вычисления и функции;
- осуществляют вычисления в тригонометрии;
- обеспечивают получение случайных чисел;
- проводят операции с Битами и байтами;
- обеспечивают вызов внешних прерываний;
- осуществляют генерацию прерывания микрочипа.
Что такое скетч и его функции
Программа (функция в терминах С++), имеющая заданную структуру и предназначенная для «Ардуино»-платформы называется скетчем. Скетч многое сохранил от C++:
- синтаксис — точка с запятой используется в качестве разделителя строк;
- целочисленные константы — декларируются в заголовочных файлах;
- использование языковых конструкций switch case, else if.
При подаче питания запускается загрузчик bootloader, хранимый в энергонезависимой памяти, и передает управление пользовательскому скетчу.
Структура скетча включает две обязательные функции:
- setup();
- loop().
При передаче управления скетчу первой вызывается, и только один раз, функция setup(). Таким образом, эта функция всегда выполняется при подаче напряжения на микроконтроллер. В нее стоит помещать задания по инициализации переменных, установке режимов пинов и связанных с ними датчиков, оборудования. По завершении setup() в цикле вызывается функция loop(), которая выполняется до отключения питания.
Обучение начинающих программировать микроконтроллерные платы freeduino лучше проводить на примерах простейших приложений. Иллюстрацией использования этих функций станет скетч, управляющий светодиодом, аналог классической «Hello, World!».
1 2 3 4 5 6 7 8 9 10 11 12 | void setup() { pinMode(14, OUTPUT); // Установка 14-пина на вывод } void loop() { digitalWrite(14, HIGH); // подаем напряжение, включаем светодиод delay(500); // задержка 0,5 с digitalWrite(14, LOW); // гасим светодиод delay(500); // ожидание 0,5 с } |
void setup() { pinMode(14, OUTPUT); // Установка 14-пина на вывод } void loop() { digitalWrite(14, HIGH); // подаем напряжение, включаем светодиод delay(500); // задержка 0,5 с digitalWrite(14, LOW); // гасим светодиод delay(500); // ожидание 0,5 с }
Для начала работы требуется загрузить скетч в микроконтроллер. Запускаем Arduino IDE и копируем или набираем скетч. Для переноса выбираем пункт меню среды «Залить». При этом осуществляется компиляция программы, перевод ее в машинный код. Предыдущие залитые скетчи нет необходимости удалять — все происходит автоматически. Перезапуск «Ардуино» приведет к работе скетча и миганию светодиода на микроконтроллере.
Если данный скетч показался бесполезной демонстрационной игрушкой, то это не так. Внесем небольшие изменения в скетч:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #define PIN_RELAY 5 // Эта строка может быть помещена в отдельный заголовочный файл. // в ней определяется пин, на который будет выводиться сигнал управления реле void setup() { pinMode(PIN_RELAY, OUTPUT); // пин реле объявляется работающим на выход digitalWrite(PIN_RELAY, HIGH); // Отключаем реле высоким сигналом } void loop() { digitalWrite(PIN_RELAY, LOW); // Включили реле низким сигналом delay(5000); // пауза в 5 с digitalWrite(PIN_RELAY, HIGH); // Отключили реле высоким сигналом delay(5000); // задержка в 5 с } |
#define PIN_RELAY 5 // Эта строка может быть помещена в отдельный заголовочный файл. // в ней определяется пин, на который будет выводиться сигнал управления реле void setup() { pinMode(PIN_RELAY, OUTPUT); // пин реле объявляется работающим на выход digitalWrite(PIN_RELAY, HIGH); // Отключаем реле высоким сигналом } void loop() { digitalWrite(PIN_RELAY, LOW); // Включили реле низким сигналом delay(5000); // пауза в 5 с digitalWrite(PIN_RELAY, HIGH); // Отключили реле высоким сигналом delay(5000); // задержка в 5 с }
Обратите внимание на синтаксис используемого языка, который один в один похож на С++, и способ использования готовых функций.
Arduino, Raspberry Pi
Arduino
— аппаратная платформа для разработки устройств, с платой ввода/вывода и простой средой разработки на Processing/Wiring. Базируется на МК Atmel AVR (ATmega), большинство плат программируются через USB. Платы Arduino позволяют своими руками создавать различные устройства, являются хорошим инструментом для начинающих и обучения МК. Большинство устройств можно собрать даже не прибегая к помощи паяльника! В данном разделе вы найдете различные интересные схемы и проекты для платформы Arduino, их клонов Freeduino, Seeeduino, а также плат Raspberry Pi, Python и др. Не забудьте посетить форум по Arduino
- Недорогой тепловизор своими руками
- Солнечный трекер
- Система распознавания и слежения за лицами
- Интервалометр с LCD для Sony NEX
- Поворотная вебкамера контролируемая Arduino
- Ethernet камера на базе Arduino
- Простая камера для замедленной съемки (timelapse) с использованием Raspberry Pi
- Модернизация поворотного стола для 3D-фото
- Измеритель ёмкости аккумуляторов (Li-Ion/NiMH/NiCD/Pb)
- Простой тестер емкости Li-ion аккумуляторов
- Измерение емкости конденсаторов с помощью Arduino
- Измеритель индуктивности на базе Arduino
- Намоточный станок на Arduino
- Намоточный станок на Arduino версия 2.0
- Счетчик расхода воды
- Тахометр на Arduino
- Измерение тока потребления устройств при помощи токовых датчиков серии ZXCT
- Мониторинг потребляемой электроэнергии в реальном времени при помощи Arduino и LabView
- Дисплей для отображения частоты сети электропитания
- Цифровой вольтметр на Arduino с подключением к ПК через последовательный порт
- 4-канальный вольтметр с ЖК-индикатором на базе Arduino
- Парктроник своими руками
- Велосипедный спидометр на Arduino
- Как СМСнуть обогревателю?
- Запуск и сборка GSM модуля M590E
- GPS-трекер для авто с отправкой данных на сервер с использованием GSM/GPRS шилда
- Ошейник для кота с GPS навигацией на базе микроконтроллера TinyDuino
- Портативный компас TinyCompass
- Текстовой дисплей для удаленной связи с офисом на базе Arduino Uno
- Умный магнит для холодильника на базе Arduino
- Устройство мониторинга сейсмоактивности
- Барометр с расширенными функциями
- Барометр своими руками
- Бесконтактный контроль температуры при RFID-доступе сотрудников с отправкой данных в облако LORAWAN
- ИК-термометр своими руками
- Инфракрасный датчик движения (PIR сенсор)
- Автоматическое освещение AtMega328 (PIR)
- Автономный светодиодный прожектор на Arduino
- Сложно о простом: цифровой термометр
- Термореле на NTC резисторе
- Arduino, датчик движения и релейный модуль
- Самодельное противоугонное устройство на Ардуино и датчике отпечатков пальцев
- GSM охранная система для дома на базе Arduino
- Радиочастотное (RFID) управление доступом с помощью Arduino UNO и модуля EM-18
- Электронная система учета посетителей
- Декодер и передатчик азбуки Морзе на Arduino
- Прием сигнала от нескольких передатчиков 433МГц на Arduino
- Радио на Arduino
- Аудиоплеер на Arduino
- Умный дом с Arduino
- Cервер домашней метеостанции на Arduino + Виджет на Android для вывода данных
- Cервер домашней метеостанции на Arduino + Виджет на Android. Добавление датчика BMP085
- Cервер домашней метеостанции на Arduino — виджет для OS X
- Метеостанция на Arduino и MR3020 для народного мониторинга
- Считываем показания температурного датчика DS18B20
- Метеостанция на Arduino с беспроводным датчиком температуры
- Arduino: Делаем самостоятельно датчик температуры
- Метеостанция + построение графика + C#
- IoT сканер штрих-кода с отправкой результатов в облако
- Отправка данных с IoT-устройства по сети LORAWAN в сервис The Things Network
- Мониторинг данных коронавируса Covid-19
- Климатический монитор Смотрителя Убежища в стилe Fallout на ESP8266
- Датчик температуры и влажности с использованием модуля Wi-Fi ESP8266
- WiFi ESP8266. Nodemcu Lua для ESP-01. Управление нагрузками по web интерфейсу
- Установка цвета RGB светодиодной ленты с помощью клавиатуры Capacitive Touch Disk Pad
- NodeMCU — быстрый старт для любителей Arduino
- WeMos D1R2
- Подключение Arduino к Интернету: настройка режима клиент-сервер, обработка GET и POST запросов
- Отправка данных с Arduino на сервер (ENC28J60)
- Детектор загрязнения окружающего воздуха
- Подключения модуля датчика газа MQ-2 и Arduino
- Резистивный датчик давления FSR402
- DDS-генератор синусоидального сигнала
- Генератор сигналов на Arduino
- LCD осциллограф на Arduino
- Подключаем к Arduino модуль Bluetooth
- Передача данных по Bluetooth между Android и Arduino
- Управление лампами через смартфон
- Система управления приборами 220В со смартфона
- Интернет вещей с RemoteXY
- Интернет вещей с RemoteXY: конфигурация подключения.
- Интернет вещей с RemoteXY: работа с он-лайн редактором и элементы оформления интерфейса
- Интернет вещей с RemoteXY: элементы управления, часть 2
- Интернет вещей с RemoteXY: элементы индикации
- Интернет вещей с RemoteXY: элементы управления
- Умная розетка на примере чайника
- Arduino как HID устройство
- Передача MIDI данных в компьютер
- USB MIDI контроллер на Arduino
- Емкостная сенсорная Midi клавиатура
- Мини синтезатор на Arduino с использованием зуммера
- Простые часы на газоразрядных индикаторах, оптронах и Arduino
- Часы на Arduino с использованием стандартного индикатора
- Настройка модуля часов реального времени RTC для Arduino
- Часы на ардуино из дисплея покупателя (VFD)
- Часы на Ардуино
- Светодиодные часы на Ардуино
- O-Clock – простые часы-будильник на Arduino и матричном индикаторе 8х32
- Будильник с обратным отсчетом на Arduino с дисплеем Nokia 5110
- Универсальный 8 канальный таймер на Arduino
- OLED i2c дисплей 128х64 пикселя
- Цветной OLED дисплей 96х64 пикселя
- Arduino и динамические индикаторы
- Ambilight своими руками
- Динамическая подсветка для телевизора
- RGB светодиодная подсветка для пианино
- JoyLED — нестандартное управление RGB-светодиодом
- Управление светодиодной лентой с помощью ТВ-пульта и Ардуино
- Светодиодный диско-пол на Arduino
- Игровая ТВ-приставка на Arduino. Часть 1
- Игровая ТВ-приставка на Arduino. Часть 2
- Тетрис на базе Arduino и двухцветных светодиодных матриц
- Контроллер кнопок для игры Что? Где? Когда?
- «Умная гантель»
- ГТО по-современному
- Логическая игра Переправа на Arduino
- Игрушка на Arduino: Саймон сказал
- Игра Кости на Arduino
- Необычное управление светодиодными (и не только) матрицами на Arduino и 74HC585
- Новогоднее волшебство или магическая коробочка на Arduino
- Спортивный счётчик на Arduino
- Датчик проходов на arduino
- Дигитайзер на arduino uno
- Управление камерой, приборами и данные с датчиков на экране телевизора
- TV-выход на Arduino
- VGA на Arduino
- Необычный кодовый замок на Arduino
- Кодовый замок из ардуино
- Сейф, который распознает цвета
- Brute Force BIOS’а ПК при помощи Arduino
- Автополив для комнатных растений на Arduino
- Автоматический контроллер температуры и влажности для домашних питомцев на базе Arduino
- SMART-GARAGE
- Сигнализатор замерзших труб на Arduino
- Простейший звонок с двумя мелодиями
- Поющее растение на базе Arduino
- Вращающаяся платформа с регулируемой RGB подсветкой и с управлением по Bluetooth
- Проигрывание WAV-файлов при помощи Arduino
- Аудио спектроанализатор на RGB-ленте WS2812
- Анализатор спектра звука
- 3x3x3 LED куб
- Светодиодный куб 4х4х4
- Светодиодный куб 5х5х5
- LED Cube 8x8x8 на Arduino с RTC
- Контроль яркости LED — куба
- Голографические часы на Arduino
- Простой POV дисплей на базе Arduino
- Светодиодная матрица 24×6
- 3D интерфейс ввода на Arduino
- Сенсорная панель управления
- Makey Makey управление новогодней RGB-гирляндой
- Apple Remote Shield на Arduino
- Arduino лазертаг
- Управление iRobot Create с помощью беспроводного геймпада через Arduino
- Разработка расширения Arduino для мобильных роботов
- Отправка данных с Arduino на WEB-сервер GET-запросом
- Управляем любой ДУ техникой дома по ИК с вебстраницы
- Розетка, активируемая звуком
- Голосовое управление радиорозетками UNIEL
- RGB-ночник управляемый руками
- LANp – лампа RGB из частей сканера контролируемая по сети
- Световой диммер управляемый Arduino
- AC диммер на Arduino
- Измерение освещенности на Arduino и вывод на дисплей Nokia 5110
- Контроллер день-ночь на базе Arduino
- Контроллер батарейного питания для arduino
- Блок питания для Arduino из ATX
- ATX блок питания управляемый Arduino
- Однофазный частотный преобразователь на Arduino
- Arduino своими руками с USB портом
- Nanino — самодельная Arduino
- Делаем сами Arduino Uno Mini
- EGYDuino – клон Arduino своими руками
- Самодельная Ардуино-совместимая отладочная плата на бюджетном МК ATmega88/168/328
- Быстрый старт с Ардуино — отладочная плата Arduino UNO R3
- Arduino Pro Mini и UniProf
- Отладочная плата с микроконтроллером ATmega328
- Shell-оболочка Bitlash на Arduino
- Разрабатываем интерпретатор brainfuck на Arduino
- Запрограммируйте Arduino с помощью Android устройства!
- Весы для улья своими руками
- Автоматическая кормушка для аквариума
- Подключение монетоприемника к Arduino
- Вендинговый разменный автомат на Arduino
- Подключение PS/2 клавиатуры
- Мини USB клавиатура на микроконтроллере
- Пробуждение ПК по сети на Arduino и ENC28J60
- Запись и чтение на SD-карту
- Подключение I2C EEPROM к Arduino
Уроки по Ардуино
- Arduino IDE — введение (видеоурок)
- Arduino UNO урок 1 — Управление светодиодом
- Arduino UNO урок 2 — Управление сервоприводом
- Arduino UNO урок 3 — Тайминг
- Arduino UNO урок 4 — Бегущий огонь
- Arduino UNO урок 5 — Fade
- Arduino UNO урок 6 — Энкодер
- Arduino UNO урок 7 — Пьезоизлучатель
- Arduino UNO урок 8 — Ночник
- Arduino UNO урок 9 — Управление мощной нагрузкой
- Arduino UNO урок 10 — LCD
- Arduino UNO урок 11 — Serial LCD
- Arduino UNO урок 12 — Джойстик
- Arduino UNO урок 13 — Подключаем драйвер двигателя L298N
- Arduino UNO урок 14 — Подключаем цифровой компас HMC5883L
- Управление биполярным шаговым двигателем без использования драйвера
- Arduino Uno. Подключение ИК-приемника
- Подключение семисегментного индикатора (1 разряд) к Arduino по SPI
- Сдвиговый регистр 74HC595
- Подключение LED матрицы 8*8 к Arduino через сдвиговые регистры
- Объект String в Arduino и команды через последовательный порт
- Контроль положения контактов 3-х позиционного переключателя с помощью Ардуино
- Текстовое меню на Arduino для дисплея 20х4
- Arduino: спасибо и прощай
- Android и Arduino. Введение в ADK
- Android и Arduino. Программное обеспечение
- Android и Arduino. Привет Arduino из Android
- Android и Arduino. Привет Android из Arduino
- Android и Arduino. Двухсторонний обмен данными
- Курс молодого бойца мира Arduino
- Курс Arduino — Датчики
- Курс Arduino — Логика
- Курс Arduino — Serial Monitor
- Курс Arduino — Отображение данных на LCD
- Курс Arduino — Звук
- Курс Arduino — Моторы
- Курс Arduino — Микросхемы
- Курс Arduino — Время и Random
- Курс Arduino — Прерывания, создание функций, советы
- Курс Arduino — Модули
- Курс Arduino — Дальномеры
- Курс Arduino — Processing
- Система контроля параметров комнатных растений
- Логгер температуры и относительной влажности на chipKIT Uno32
Raspberry Pi и другие платы
- Raspberry Pi 4 и Intel Neural Compute Stick 2
- Использование GPIO выводов Raspberry Pi
- Элементы умного дома z-wave на Razberry и Z-Uno. Часть 1
- Элементы умного дома z-wave на Razberry и Z-Uno. Часть 2
- Web-управление Raspberry Pi GPIO
- Raspberry Pi в качестве FM-передатчика
- FAQ по Raspberry Pi
- Raspberry Pi, Raspbian, XBMC и 7 дюймовый сенсорный экран eGalax
- Hi-Fi-плеер на Raspberry PI с использованием ПО RuneAudio
- Двойной удар: AirPlay-Pi и новая жизнь старого радио
- FM радиовещательная станция на Raspberry Pi
- Медиацентр на Raspberry Pi 2
- Табло котировок Forex в режиме реального времени на RGB-матрице 32×64
- Светодиодное табло, управляемое миникомпьютером Raspberry Pi и WiFi-адаптером
- Светодиодное табло размером 128×32 пикселей, управляемое микрокомпьютером Raspberry Pi
- Портативный лэптоп на базе Raspberry Pi
- Плоттер на Raspberry Pi с использованием компонентов от CD-ROM
- Подключение приставочных джойстиков NES/Dendy к Raspberry Pi
- Сундучок на базе Raspberry Pi, который распознает ваше лицо
- Музыкально-световой клавесин на Intel Galileo
- Фотостудия для кукол Барби
- Использование HMI TFT-дисплея STONE и ESP32 для управления массажным креслом
- Управление сервоприводом с помощью HMI LCD экрана и STM32
- Мини-компьютер M5StickC на модуле ESP32-PICO
- Плата разработчика MAIXDUINO для приложений AI + IoT
- Знакомство с платой MicroPython
- 10 миниатюрных макетных плат для решения любых задач
- FEZ и .NET Micro Framework
- Particle Photon
- DFRobot Curie Nano
- Latte Panda
- Обзор FEZ Panda II
- Netduino: Взаимодействие с символьным ЖК-дисплеем
Как работают цифровые выводы
На цифровых выходах имеется возможность подключать и деактивировать подтягивающие резисторы. Управление ими осуществляется программным способом.
Выводы могут обеспечивать достаточно большой ток (до 40 мА). Этого значения достаточно для подключения светодиода, другого электронного устройства, но мало для большинства электромеханических устройств, таких как реле, соленоид, двигатель.
При сильной нагрузке защита в большинстве случаев успевает сработать и отключить данную ножку контроллера. Рекомендуется к выходам подключать через резисторы 470 Ом или 1 кОм, если есть потребность обеспечить максимально возможный ток.
#35. Выводим символы на дисплей LCD 1602 и LCD 2004.
Для создания проектов на Arduino достаточно часто применяют дисплей LCD 1602 и LCD 2004. Как подключить LCD 1602 к Arduino рассмотрели в предыдущем уроке. Кроме текста очень часто нужно вывести специальные символы. Например, обозначение температуры — градус цельсия или процент влажности, а также направление продвижения или вращения. Как же вывести спец символы на дисплей LCD 1602 и LCD 2004? В данном уроке рассмотрим вывод из набора предустановленных символов и создадим свои символы, которые также выведем на LCD 1602 и LCD 2004.
Обновлено: 8 июля , 2022 Подробнее …
Нюансы аналоговых входов
Выходной аналоговый сигнал обеспечивается АЦП. В чипах Atmega использован шестиканальный АЦП. Его разрешение составляет 10 бит или значения от 0 до 1023. Основное назначение входов — чтение сигнала аналоговых датчиков.
Выводы Arduino, соответствующие аналоговым входам, нумеруются от 14 до 19. Выводы аналоговых входов могут подключать подтягивающие резисторы, работающие так же, как на цифровых выводах. Включение резисторов производится командой: digitalWrite(14, HIGH); // включить резистор на выводе аналогового входа 0
Если вы управляли выводом, задавая режим, то перед последующим изменением его функций осуществите сброс параметров во избежание некорректной работы. Используя аналоговые входы, следует уделить внимание работе с serial wire, вспомогательным каналом передачи данных.
Память в «Ардуино»
В микроконтроллере ATmega168, используемом на платформах Arduino, применяется три вида памяти:
- флеш — используется для хранения скетчей;
- ОЗУ — оперативная с произвольным доступом;
- EEPROM — энергонезависимая.
Во флеш-памяти и EEPROM данные сохраняются при отключении питания. ОЗУ теряет информацию. Микроконтроллер ATmega168 оснащен:
- 16 Кб флеш-памяти (2 Кб используется для хранения загрузчика);
- 1024 байта ОЗУ;
- 512 байт EEPROM.
Малый объем ОЗУ, при большом числе строк, может полностью израсходоваться.
При отсутствии свободного места в ОЗУ происходит сбой программы. Существует несколько путей решения проблемы:
- часть данных хранить на компьютере, пользователь периодически обращается за данными туда или сохраняет их там;
- при больших массивах сократить размер оперируемых данных, например тип Инт заменить на тип Байт;
- константы выносить за пределы ОЗУ, хранить во флеш-памяти.
Работа с EEPROM ведется при помощи специализированной библиотеки.
Перепрошивка контроллера
Алгоритм перепрошивки контроллера примерно одинаков для всех схем, с ним разберутся даже дети. Рассмотрим, как образец, работу с Atmega8U2 для Mega2560:
- загружается программа «FLIP» с сайта компании Атмел (atmel.com);
- скачивается последняя версия прошивки;
- перемычкой или лучше резистором на 10кОм замыкаются два контакта на тыльной стороне платы;
- «Ардуино» через USB подключается к ПК;
- на несколько секунд замыкаются два контакта сброса контроллера;
- устанавливаются драйверы для обнаруженного ПК устройства;
- запускается программа FLIP, в меню выбираем «File->Load HEX File» и загружаем новую прошивку;
- в меню ищем «Device->Select», затем выбираем из списка «at90usb82»;
- выбираем команду открыть в «Settings→Communication→Usb-Open»;
- проверяем установку параметров и запускаем прожиг «Run»;
- убираем перемычку-резистор с платы.
Перепрошивка завершена, устройство готово к работе.
Создание библиотек
Программист может создавать свои библиотеки для Arduino, чтобы не писать повторяющиеся куски кода с нуля. В них удобно собрать обучающие алгоритмы, вынести неизменяемый визуальный графический контент. Начинается все с отработки скетча, который выполняет требуемые задачи. После этого следует определить, какая часть кода должна быть перенесена в библиотеку. Далее начинаем процесс конвертации скетча в библиотеку, которая состоит из двух файлов:
- заголовочный с расширением .h;
- с кодом и расширением .cpp).
Первый дает пояснение содержимому библиотеки. Он включает перечень функций, объектов, переменных, которые использует библиотека. Несмотря на лайт-версию С++, в библиотеке могут использоваться атрибуты видимости объектов, классы, конструкторы и деструкторы и другие возможности ООП. В заголовках применяются директивы языка C++. Библиотека не помещается в особый модуль и хранится в текстовом виде, в формате файлов .cpp и .h в отдельной папке с именем библиотеки, но размещенном в каталоге libraries. Текстовые файлы компилируются при использовании указанной библиотеки.