2013-03-26 108 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,但可能會更高。