2013-03-26 105 views
1

我正在为一个项目编写一些代码,我有一个GSM模块与Arduino进行交互,以在传感器被触发时与某些通知进行通信并通过SMS接收命令。一个这样的命令是通过SMS设置“呼叫”号码。 IE如果我将“设置”一词发送给GSM模块,则接收到该消息的编号将成为GSM模块在触发传感器时调出的新号码。永久更改字符变量

我必须初始化代码中的一个默认电话号码:

char ph_number[]="+35387914xxxx"; 

然后我的计划之内,我有一些代码来检查“包含‘设置’命令,如果这样设置ph_number任何SMS =发件人号码。

我需要然后永久保存该新号码,以成为默认呼出号码,即使Arduino被重置,直到收到新的Set命令为止。有没有办法做到这一点?它甚至有可能吗?

+2

这是很多不必要的文字,只是简单地问:'Arduino上是否有永久存储器?如果是,我该如何使用它?' – mah 2013-03-26 12:38:54

+1

请参阅[Arduino EEPROM](http://arduino.cc/) en/Reference/EEPROM) – angelatlarge 2013-03-26 16:00:16

回答

2

您可以将它存储在FLASH或EEPROM中的特定位置,并在启动时从此处读取它。

+0

不支持从草图写入Arduino的FLASH,所以FLASH并不是真正的选择。 – angelatlarge 2013-03-26 15:53:57

1

您可以使用Arduino EEPROM library来读取/写入EEPROM。这使您可以在同一时间访问一个点的存储器,例如素描是:

#include <EEPROM.h> 

int a = 0; 
int value; 

void setup() 
{ 
    a = EEPROM.read(0); //reads from point 0 in the memory (the first point) 
} 

void loop() 
{ 
    value = analogRead(A0); 
    if(value != a){ 
     a = value; 
     EEPROM.write(0, a); 
    } 
} 

当保存字符,它们首先被转换成十进制等价物被保存之前,再后来必须转换出。同样重要的是要记住,存储器中的每个点只能存储1个字节的数据,最大值为255,EEPROM的读/写次数有限 - 工厂指定的最大值为100000,但可能会更高。