重新启动Arduino并保留变量
我想重新启动arduino板,但保留一些变量的值。我的解决方案是每当我想重新启动时调用重新启动Arduino并保留变量,arduino,restart,Arduino,Restart,我想重新启动arduino板,但保留一些变量的值。我的解决方案是每当我想重新启动时调用setup()。大概是这样的: int led = 13; int led2 = 50; boolean restart = false; void setup() { pinMode(led, OUTPUT); pinMode(led2, OUTPUT); if(!restart){ digitalWrite(led, LOW); // will only happe
setup()
。大概是这样的:
int led = 13;
int led2 = 50;
boolean restart = false;
void setup() {
pinMode(led, OUTPUT);
pinMode(led2, OUTPUT);
if(!restart){
digitalWrite(led, LOW); // will only happen once
delay(3000);
}
digitalWrite(led, HIGH); // turn the LED on (and will be always on even after reset)
restart = true;
delay(3000);
digitalWrite(led2, HIGH); // indicate restart is called
delay(1000);
digitalWrite(led2, LOW);
setup();}
void loop() { }
我在想这是否会导致RAM的大量使用。还是有更好的方法
谢谢。使用EEPROM库。使用带有中断的按钮保存变量,然后在setup()例程中读取变量
如果您获取或更改信息的速度足够慢,您可以不断写入该值,但请注意,该芯片上的EEPROM仅被认证为每字节100000次写入。从setup()内部调用setup()将导致堆栈溢出。(是的,这将耗尽所有RAM。)嗯,可能不是在setup()中,而是在loop()中偶尔出现一次(例如,当按下一些按钮时/在某些情况下,代码将从头开始)。正如UncleO所说,代码本身肯定会导致堆栈溢出(顺便说一句:loop()将永远不会运行)为什么需要重新启动arduino?我正在使用带GSM屏蔽的arduino,这样它可以读取读数并返回到服务器(PC)。但有时GSM屏蔽会断开连接,我想重新启动Arduino并允许它再次连接到服务器……我不希望使用EEPROM,因为它最多只能写入100000次……(不是长期解决方案?)。您需要多久保留一次数据?如果您每小时保存一次,您将在11年后开始出现故障。通过每次写入不同的扇区以使用整个EEPROM区域,可以极大地扩展这一功能。它将始终取决于您的用例。如果您需要更多的定期写入,您可以使用带有更换时间表的外部插座EEPROM。在这一点上,您还可以使用SD卡,并具有更大的灵活性。您需要保存多少数据以及多久保存一次?