Ошибка при вводе 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
Пожалуйста, помогите мне, где ошибка в моем коде. Я не могу понять источник ошибки.
@Manu, 👍0
1 ответ
Лучший ответ:
▲ 4
Просматривали ли вы примеры программ Arduino IDE?
Все они имеют функции setup()
и loop()
.
Вероятно, в коде Tinkercad отсутствует функция loop()
.
Вы можете решить эту проблему, добавив пустой void loop() { }
после кода void setup() { ... }
.
,
@StarCat
Смотрите также:
- Atmega328p — переход на низкое энергопотребление 1,8 В с использованием генератора 4 МГц — прошивка загрузчика
- Запустить код один раз после программирования
- Ardutester Millenium I2c Lcd ничего не показывает!
- Автономный ATMega328 — нужно ли прожигать загрузчик?
- Светодиод не мигает - Arduino UNO+WiFi R3 ATmega328P+Плата ESP8266
- Внутренний EEPROM UNO "чтение" возвращает неправильные значения, когда он предшествует "записи".
- Мусорные значения в EEPROM. при записи больших значений
- avrdude ser_open() can't set com-state
Спасибо, теперь код работает. Но у меня есть вопрос в этом коде, почему используется пустой цикл void(), потому что он выполняется бесконечно. Это может быть глупый вопрос, я новичок в программировании Arduino. Но скажите, пожалуйста, какое значение имеет пустой цикл void() в этом коде?, @Manu
В большинстве проектов код Arduino не просто выполняется один раз, а работает в непрерывном цикле, например, для обслуживания нажатий кнопок, отображения данных, измерения датчиков и обработки их. Для облегчения этой задачи создатели Arduino IDE сделали функцию loop() стандартной частью каждой программы Arduino. Это не часть стандартного С++. В вашем случае ваша программа выполняется только один раз, и функция loop() не имеет никакого значения. Он просто ничего не делает «контролируемым» способом (непрерывный цикл) и ждет сброса., @StarCat