相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有137965人學(xué)過

使用共用體存儲各類型數(shù)據(jù)到EEPROM
發(fā)布時間:2022-03-12 09:11 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 2779
你可能發(fā)現(xiàn)了,使用Arduino提供的EEPROM API,只能將字節(jié)型的數(shù)據(jù)的存入EEPROM。如果要存儲字節(jié)以外的數(shù)據(jù)類型,又需要怎么做呢?

一個float類型的數(shù)據(jù),需要占用4個字節(jié)的存儲空間。因此我們可以把一個float拆分為4個字節(jié),然后逐字節(jié)的寫入EEPROM,來達到保存float數(shù)據(jù)的目的。
這里我們使用共用體,把float數(shù)據(jù)拆分為4個字節(jié)。
共用體:幾個不同的變量共同占用一段內(nèi)存的結(jié)構(gòu),在C語言中,被稱作共用體類型結(jié)構(gòu),簡稱共用體。
首先定義一個名為data的共用體結(jié)構(gòu),共用體中有兩個類型不同的成員變量:
  
union data
  
{
  
   float a;
  
   byte b[4];
  
};
  
再申明一個data類型的變量col:
  
data col;
  
現(xiàn)在你可以通過col.a訪問這個共用體中的float類型成員a,通過col.b訪問這個共用體中的byte類型成員b。col.a和col.b共同占用四個字節(jié)的地址。給col.a賦值后,通過col.b即可拆分float的目的。


這里我們提供一個將float類型存入EEPROM的例程。

[mw_shl_code=cpp,true]/*
OpenJumper Examples
寫入float類型到EEPROM
奈何col  2013.2.2
www.openjumper.com
*/

#include <EEPROM.h>
union data
{
  float a;
  byte b[4];
};
data col;
int addr = 0;
int led = 13;

void setup()
{
  col.a=987.65;
  for(int n=0;n<4;n++)
  EEPROM.write(n, col.b[n]);
  pinMode(led, OUTPUT);     
}

void loop()
{
  //LED閃爍,提示任務(wù)已完成
  digitalWrite(led, HIGH);
  delay(1000);
  digitalWrite(led, LOW);
  delay(1000);   
}
[/mw_shl_code]

讀出儲存在EEPROM中的float類型數(shù)據(jù)思路和寫入時相同,完整代碼如下:



[mw_shl_code=arduino,true]/*
OpenJumper Examples
從EEPROM讀出float類型
奈何col  2013.2.2
www.openjumper.com
*/

#include <EEPROM.h>
union data
{
  float a;
  byte b[4];
};
data c;
int addr = 0;
int led = 13;

void setup(){
  for(int n=0;n<4;n++)
  c.b[n]=EEPROM.read(n);
  Serial.begin(9600);     
}

void loop(){
  //輸出
  Serial.println(c.a);
  delay(1000);   
}[/mw_shl_code]
Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有137965人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計 室內(nèi)設(shè)計 室外設(shè)計 機械設(shè)計 工業(yè)自動化 影視動畫 程序開發(fā) 網(wǎng)頁設(shè)計 會計課程 興趣成長 AIGC