Ошибка при вводе EEPROM.read() и EEPROM.write()

Я пытаюсь сохранить данные в ATmega328 (Arduino Uno), используя следующий код с помощью tinkercad:

#include <EEPROM.h>

void setup() {
  int addr, data=1;
  Serial.begin(9600);
  for (addr=0; addr<1023; addr++) {
    EEPROM.write(addr, data);
  }
  for (addr=0; addr<1023 ; addr++) {
    Serial.print(EEPROM.read(addr), DEC);
  }
}

Когда я имитирую код в tinkercad, я получаю следующую ошибку:

In function `main':
43: undefined reference to `loop'
 error: ld returned 1 exit status

Пожалуйста, помогите мне, где ошибка в моем коде. Я не могу понять источник ошибки.

, 👍0


1 ответ


Лучший ответ:

4

Просматривали ли вы примеры программ Arduino IDE?

Все они имеют функции setup() и loop().

Вероятно, в коде Tinkercad отсутствует функция loop().

Вы можете решить эту проблему, добавив пустой void loop() { } после кода void setup() { ... }.

,

Спасибо, теперь код работает. Но у меня есть вопрос в этом коде, почему используется пустой цикл void(), потому что он выполняется бесконечно. Это может быть глупый вопрос, я новичок в программировании Arduino. Но скажите, пожалуйста, какое значение имеет пустой цикл void() в этом коде?, @Manu

В большинстве проектов код Arduino не просто выполняется один раз, а работает в непрерывном цикле, например, для обслуживания нажатий кнопок, отображения данных, измерения датчиков и обработки их. Для облегчения этой задачи создатели Arduino IDE сделали функцию loop() стандартной частью каждой программы Arduino. Это не часть стандартного С++. В вашем случае ваша программа выполняется только один раз, и функция loop() не имеет никакого значения. Он просто ничего не делает «контролируемым» способом (непрерывный цикл) и ждет сброса., @StarCat