Arduino中有三种可用的存储器——Flash、RAM和EEPROM。
闪存被用来存储程序。即使Arduino电源被切断或重新启动,它也会保留下来。
运行时使用的所有数据和变量都存储在RAM中。然而,RAM是一种易失性内存,每次重新启动或断电都会将其清除。
为了存储重置时保留的数据,Arduino提供了EEPROM。
eepm是什么?
EEPROM是电可擦可编程只读存储器的缩写。它可以被认为像电脑的硬盘驱动器。然而,在EEPROM的情况下,读/写时间要快得多。
EEPROM中的数据可以写入、覆盖或擦除。但这必须由用户显式地完成。您可以使用Arduino的EEPROM库来访问为您完成这项工作的api。
eeprom通常用于存储Arduino重新启动或打开后需要收回的设置。假设Arduino需要记住灯的最后已知状态,即它打开和关闭,并在电源恢复时恢复该状态。在这种情况下,最后已知的状态可以写入EEPROM,该EEPROM可以在Arduino重新启动时读出。
你能存储多少字节?
Arduinos有一个8位可寻址存储器。每个内存块中只能存储8位的数字。这意味着一个可单独寻址的内存块可以存储从0到255的任何数字。较大的数字必须被分解成8位单元,需要存储多个块。
EEPROM的总大小取决于您正在使用的Arduino的型号。其中,Arduino Mega的内存最多,为4096字节,其次是Uno、Nano、Mini(1024字节)。一些arduino,比如某些版本的Nano和Mini,如果安装了Atmega168控制器,EEPROM只有512字节。Arduinos还允许您连接外部eeprom以增加存储容量。
当然,EEPROM的寿命是有限的。因此,只有一定的次数可以在上面擦除和重写数据。通常,Arduino中的eeprom会持续大约100,000个写/擦除周期。幸运的是,EEPROM上的读取操作不会影响它的寿命。
如何清除Arduino内存
方法1
1.USB线必须拔下
在开始这个过程之前,第一步应该是断开Arduino的USB线。这将删除电源,也释放用于usb -串行通信的RX和TX引脚。
2.将RX引脚连接到地面
下一步应该是连接RX引脚到地面。虽然您可以通过在RX引脚和GND引脚之间连接跳线来实现这一点,但保持10Kohm的电阻将能够将两个引脚之间的电流限制到安全值。
3.USB线必须插好
拉下RX引脚后,重新连接USB线,打开Arduino的电源。
4.上传一个新程序
打开Arduino IDE,将任何基本的草图加载到Arduino中。你可以上传“眨眼”草图或“最低限度”草图以保持简单。
5.把电缆
接下来,通过拔掉USB线再次断开Arduino的电源。这样做是为了安全地移除RX下拉,而不会引起任何意外的电气短路。
6.拆除RX接地
一旦你已经删除USB电缆,删除电阻或电线,你已经连接到RX引脚和接地引脚之间。
7.确保Arduino直接连接到PC设备,而不是通过集线器
如果这种方法对您不起作用,那么您应该检查Arduino是如何连接到计算机的USB端口的。如果它是通过USB集线器连接的,那么它可能无法工作。将它直接连接到PC的USB端口是最好的方法。
方法2
如果您不习惯将RX引脚连接到GND引脚,那么您可以使用下面给出的方法。
1.拔下USB线
这种方法还需要先拔掉USB线。这是因为后续步骤将要求您更改Arduino将连接到的USB端口的端口设置。
2.选择设备管理器
从“管理”窗口的下拉菜单中打开设备管理器,当你右键单击“这台PC”时出现。
3.选择端口(COM和LPT)
Arduino的端口通常列在设备列表的COM & LPT部分。从列表中选择“COM & LPT”。
4.在你的Arduino板上按右键(COMx)
在所有连接的COM端口中,您应该知道哪个COM端口对应Arduino。
5.然后选择“属性-端口设置-将流量控制设置到硬件”
现在,您需要修改与Arduino对应的COM端口的端口设置。为此,从出现的下拉菜单中选择Properties。单击“端口设置”,然后将“流量控制”改为“硬件”。
6.创建一个空草图(示例如下)
在这种方法中,你还可以使用“Bare Minimum”草图来闪向Arduino。在Arduino IDE中加载草图。
7.再次连接USB线
重新连接USB线到Arduino,重新为它供电。
8.按Ctrl + U上传
上传“最低限度”草图。你也可以通过按键盘上的Ctrl+U来做到这一点,而不必访问工具栏菜单。
这里是一个空草图的例子,你可以使用
/ /空的草图
无效的设置()
{
}
//循环程序会一直循环下去:
无效循环()
{
延迟(1000);
}
结论
如果你把Arduino放在一边几周,你可能会忘记最后上传的是哪张草图。在这种情况下,如果你把它插在电路上,它可能会损坏你的Arduino或相关的电路。
因此,在您在不同的电路中使用它之前,总是擦除并加载一个空白草图到它上面。