Для работы с EEPROM на борту ардуины, что бы сохранять что-то в память и восстанавливать после включения( там 4 кб памяти доступно)
Вот пример чтения, записи, очистки еппром если я не прав проверьте Код (C): #include <EEPROM.h> int addr=0; int val; //Для хранения принятых данных byte value; void setup() { Serial.begin(9600); } void loop() { if(Serial.available()>0) { // Если есть доступный байт читаем его, записываем в епром. val = Serial.read(); // Работу с выводом и удалением я сделал перед записью в епром так как нам не нужно в ячейках такие значения как Р и С. И если нам не нужно вывести или удалить мы переходим к записи. if(val=='P') { // Если прилетает Р то переходим к шагу вывода. Serial.println("Количество заполненных ячеек = "); Serial.print(addr); //Далее идет процедура вывода всех данных о ячейках и их содержимом. Serial.println("Количество свободных ячеек = "); int a=512-addr; int b=addr; Serial.print(a); for(int i=0; i<addr; i=i+1) { addr=0; Serial.println("Ячейка номер"); Serial.print(i); Serial.print("="); value = EEPROM.read(i); Serial.print(value); } } if(val=='C') { //Если приходит С то очищаем епром. for (int i = 0; i < 512; i++){ EEPROM.write(i, 0); } } EEPROM.write(addr, val); //Если не пришло ни С ни Р то записываем полученную переменную в епром addr = addr + 1; if (addr == 512) { //Если дошли до последней ячейки переходим на нулевую addr = 0; } delay(100); } }
У меня тут вопрос.. какие данные можно писать в ячейки еппрома? только 1 и 0? или такие значения как цифры там разные, буквы?
Здравствуйте. Дело в том что в каждую ячейку EEPROM можно записать значения от 0 до 255. если записать -1 влезет 255 ну и так далее. Объясните что именно вам нужно от EEPROM?
Здравствуйте. мне нужно в примере хеллоу ворд записывать при отключение питания цифры а при включение продолжать. накидал 2 кода
#include <EEPROM.h> #include <LiquidCrystal.h> LiquidCrystal lcd(13, 11, 7, 6, 5, 4); int addr = 0; void setup() { lcd.begin(16, 2); } void loop() { int val = analogRead(0) / 4; EEPROM.write(addr, val); lcd.setCursor(0, 1); lcd.print(addr); lcd.setCursor(0, 1); lcd.print("\t"); lcd.print(val, DEC); lcd.println(); addr = addr + 1; delay(1000); }
тоесть что то вроде калькулятора такого.. посчитал что то, число в память и потом считывать его.. да?
// include the library code: #include <LiquidCrystal.h> #include <EEPROM.h> int addr = 0; // адрес ячейки int value = 42; // сохраняемое значение // initialize the library with the numbers of the interface pins LiquidCrystal lcd(13, 11, 7, 6, 5, 4); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); lcd.print(millis()/1000); }
Вы понимаете, что Запись в епром происходит каждую секунду... а каждую ячейку епрома можно использовать на запись/перезапись только 1000р
Исходя из того что вы мне объяснили составил простенький код все предельно ясно Код (C): #include <LiquidCrystal.h> #include <EEPROM.h> LiquidCrystal lcd(13, 11, 7, 6, 5, 4); int Pkf=0; void setup() { lcd.begin(16, 2); } void loop() { if(EPROM.read(0)==1) Pkf=6;// Если В епроме на ячейке 0 записано 1 то Pkf=6 lcd.setCursor(0, 1); lcd.print(Pkf); Pkf++; if(Pkf==6) EEPROM.write(0, 1); delay(1000); lcd.clear(); }
Уважаемые! Из стандартного комплекта собрал метеостанцию. Прикрутил передачу данных на комп по последовательному порту. Но, дальше задачу усложнили: сохранять показания термопары в память и через путти или монитор последовательного порта посылать запрос и получать список значений либо на монитор, либо в файл. Если можете подскажите конкретно, а если нет, то скажите куда смотреть.
Для такой задачи лучше используйте карту памяти. Пишите показания в файл, а по запросу скидывайте содержимое файла на комп.