Микроконтроллер на платах Arduino и Genuino имеют постоянную EEPROM: память, значения которой сохраняются при выключении питания платы (по принципу жесткого диска).
В этом примере показано, как сохранить значения, считанные с аналогового входа 0, в EEPROM с помощью функции EEPROM.write (). Эти значения будут оставаться в EEPROM, когда питание платы будет отключено и могут быть прочитаны позже другой программой.
Требуемое оборудование
Плата Arduino или Genuino
Требуемая схема
Нет схемы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
/* * EEPROM Write * * Stores values read from analog input 0 into the EEPROM. * These values will stay in the EEPROM when the board is * turned off and may be retrieved later by another sketch. */ #include <EEPROM.h> /** the current address in the EEPROM (i.e. which byte we're going to write to next) **/ int addr = 0; void setup() { /** Empty setup. **/ } void loop() { /*** Need to divide by 4 because analog inputs range from 0 to 1023 and each byte of the EEPROM can only hold a value from 0 to 255. ***/ int val = analogRead(0) / 4; /*** Write the value to the appropriate byte of the EEPROM. these values will remain there when the board is turned off. ***/ EEPROM.write(addr, val); /*** Advance to the next address, when at the end restart at the beginning. Larger AVR processors have larger EEPROM sizes, E.g: - Arduno Duemilanove: 512b EEPROM storage. - Arduino Uno: 1kb EEPROM storage. - Arduino Mega: 4kb EEPROM storage. Rather than hard-coding the length, you should use the pre-provided length function. This will make your code portable to all AVR processors. ***/ addr = addr + 1; if (addr == EEPROM.length()) { addr = 0; } /*** As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an EEPROM address is also doable by a bitwise and of the length - 1. ++addr &= EEPROM.length() - 1; ***/ delay(100); } |
Смотрите также:
EEPROM Clear: очистить байты в EEPROM.
EEPROM Read: Чтение EEPROM и отправка его значений на компьютер.
EEPROM Crc: Вычисляет CRC содержимого EEPROM, как если бы это был массив.
EEPROM Get: Считывание данных с EEPROM и их вывод на монитор порта в виде числа с плавающей точкой float.
EEPROM Iteration: Несколько разных способов пройти через пространство памяти EEPROM.
EEPROM Put: Запись данных в EEPROM разными способами.
EEPROM Update: Запись в EEPROM данных, считанных с 0-ого аналогового контакта (A0). Запись осуществляется только в том случае, если новые данные отличаются от предыдущих – это позволяет увеличить срок службы EEPROM.