- Библиотеки
- Память
- Операторы
- Sketch
- Управляющие операторы
- Синтаксис
- Арифметические операторы
- Операторы сравнения
- Логические операторы
- Указатели доступа
- Битовые операторы
- Составные операторы
- Данные
- Типы данных
- Преобразование типов данных
- Область видимости переменных и квалификаторы
- Утилиты
- Функции
- Цифровой ввод/вывод
- Аналоговый вход/выход
- Расширенный ввод/вывод
- Время
- Математические функции
- Тригонометрические функции
- Символы
- Случайные числа
- Биты и байты
- Внешние Прерывания
- Прерывания
- Функции передачи данных
- Функции
Память
В микроконтроллерах, используемых на платах Arduino (например, ATmega168), есть три вида памяти:
- Флэш-память - это место, где хранится скетч Arduino.
- SRAM (статическая память с произвольным доступом) - это место, где скетч создает переменные и управляет ими при запуске.
- EEPROM (энергонезависимая память) - это область памяти, которую программисты могут использовать для хранения постоянной информации.
Флэш-память и EEPROM энергонезависимы (информация сохраняется после выключения питания). Память SRAM энергозависима и запись в память будет утеряна при выключении питания.
Примечание. Флэш-память (PROGMEM) может быть заполнена только во время записи программы. Вы не можете изменить значения во флэш-памяти после запуска программы.
Объемы памяти для различных микроконтроллеров, используемых на платах Arduino, следующие:
ATMega168 | ATMega328P | ATmega1280 | ATmega2560 | |
---|---|---|---|---|
Flash (Исп. 1 кБайт для загрузчика) | 16 kBytes | 32 kBytes | 128 kBytes | 256 kBytes |
SRAM | 1024 bytes | 2048 bytes | 8 kBytes | 8 kBytes |
EEPROM | 512 bytes | 1024 bytes | 4 kBytes | 4 kBytes |
Необходимо обратить внимание, что Flash (программная) память намного больше, чем доступная SRAM. Когда вы создаете переменные на языке Arduino, такие как:
char message[] = "I support the Cape Wind project.";
Вы копируете 33 байта (1 символ = 1 байт плюс завершающий нуль) из памяти программы в SRAM перед ее использованием. 33 байта - это не так много памяти из допустимых 1024 байт, но если для примера требуются большие структуры данных, например, большой объем текста для отправки на дисплей или большая таблица поиска, использовать флеш-память непосредственно для хранения может быть единственным вариантом. Для этого используйте ключевое слово PROGMEM.
Версия 1.0 IDE Arduino представила синтаксис F() для хранения строк во флэш-памяти, а не в ОЗУ. например:
Serial.println(F("This string will be stored in flash memory"));
Чтобы использовать EEPROM, см. Библиотеку EEPROM