同人イラスト・漫画・同人サークル|infernoayase-インフェルノアヤセ-

ケモノ・獣人の同人漫画を中心に活動してる「ふさもふ」の同人サークルです。

【Arduino】内蔵EEPROM読み書き支援ライブラリ-rom_adv-【型変換】

こんにちは。ふさもふです。

このライブラリーはArduinoに内蔵されるEEPROMの読み書きを簡単にする
ラッパーライブラリーです。

Arduino言語の仕様上、内蔵EEPROMにはbyte型しか読書できません。
その他の型を読書するにはByte型に分割する必要があります。

Byte型への分割と統合は泥臭く面倒くさいのでライブラリー化しました。

各変数型を自動的にキャストして指定したメモリー位置から読書を行います。

ライブラリーのインストール方法

1.ZIPファイルをダウンロードする。

nowDownload

 

2.適当なところに置いておく

3.ArduinoIDEを起動して”スケッチ>ライブラリを使用>ライブラリーをインストール…”をクリック

2015-05-15-01

 

4.適当なところに置いたZIPを選択して開く

2015-05-15-02

 

 

初期化処理

/***************************************************
Libraryの読み込み
***************************************************/
#include <EEPROM.h>//標準ライブラリ
#include <rom_adv.h>//当ライブラリ

/****************************************************
EEPOROMの初期化
*****************************************************/
rom_adv rom(1023);//使うマイコンのEEPROMの容量を指定
/*Unoの場合は1023*/

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

メソッド

rom_adv(int address)

コンストラクターメソッド。EEPROMの容量を指定して初期化する。

f_Write(float f, int address)

float型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
float f 内容
int address 書き込む先頭アドレスを指定

i_Write(int i, int address)

int型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
int i 内容
int address 書き込む先頭アドレスを指定

ui_Write(unsigned int ui, int address)

unsigned int型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
unsigned int i 内容
int address 書き込む先頭アドレスを指定

w_Write(word w, int address)

word型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
word w 内容
int address 書き込む先頭アドレスを指定

l_Write(long l, int address)

long型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
long l内容
int address 書き込む先頭アドレスを指定

ul_Write(unsigned long ul, int address)

unsigned long型をEEPROMに書き込むメソッド

☆戻り値→bool型
問題なし→ture
エラー→false

☆引数
unsigned long l内容
int address 書き込む先頭アドレスを指定

s_Write(String *s, int address)

String型をEEPROMに書き込むメソッド
注意:255文字までしか読み書き出来ません!先頭1Byteは文字数を管理する
領域です。他のライブラリとの互換性は保証されません

☆戻り値→int
問題なし→メモリー使用量域
エラー→-1

☆引数
String *s 文字列へのポインター。
int address 書き込む先頭アドレスを指定
※動作が不安定な可能性があります。

float型をEEPROMから読出メソッド

☆戻り値→float

☆引数
int address 読み込む先頭アドレスを指定

i_Read(int address)

int型をEEPROMから読出メソッド

☆戻り値→int

☆引数
int address 読み込む先頭アドレスを指定

ui_Read(int address)

unsigned int型をEEPROMから読出メソッド

☆戻り値→unsigned int

☆引数
int address 読み込む先頭アドレスを指定

w_Read(int address)

word型をEEPROMから読出メソッド

☆戻り値→word

☆引数
int address 読み込む先頭アドレスを指定

l_Read(int address)

long型をEEPROMから読出メソッド

☆戻り値→long

☆引数
long address 読み込む先頭アドレスを指定

ul_Read(int address)

unsigned long型をEEPROMから読出メソッド

☆戻り値→unsigned long型

☆引数
long address 読み込む先頭アドレスを指定

s_Read(int address)

String型をEEPROMから読出メソッド
注意:255文字までしか読み書き出来ません!先頭1Byteは文字数を管理する
領域です。他のライブラリとの互換性は保証されません

☆戻り値→String
ERROR時には”¥0″が返されます

☆引数
int address 読み込む先頭アドレスを指定
※動作が不安定な可能性有り……

更新履歴

  • 0.1.2 2015/05/19 メモリー確保方法変更
  • 0.1.1 2015/05/15 String書き込み時に戻り値で使用したByte数を返す様に変更
  • 0.1.0 2015/05/01 初回作成
LINEで送る
Pocket

この記事のトラックバックURL
  • Ryuu

    arduino 初心者です。EEPROMを使いたいので探していてたどり着きました。

    具体的な命令の書き方を教えてください。 IDE Ver1.6.5 arduino nano
    色々試していますがうまくいきません。以下のように書いています。
    rom_adv rom(1023)は問題ありません。
    long int xxx=7000000
    :
    l_Write (xxx,10);

    宜しくお願いします。

    • ふさもふ

      まだ検証はしていませんが、
      long int型はarduinoには無いですよ。
      ——————————–
      ☆arduino変数型一覧☆

      boolean
      char
      unsigned char
      byte
      int (整数型)
      unsigned int (符号なし整数型)
      word
      long (long整数型)
      unsigned long (符号なしlong整数型)
      float (浮動小数点型)
      double (倍精度浮動小数点型)
      文字列(配列)
      配列
      void
      ——————————–
      ソース:http://www.musashinodenpa.com/arduino/ref/

      l_Writeメソッドはlong型用に設計しているのでlong int型は想定外ですね・・・・・・
      long型で下記のように書いてみては如何でしょうか
      ——————————–
      long xxx=7000000;
      :
      l_Write (xxx,10);
      ——————————–
      これで駄目でしたら検証してLibraryのアップデータ作ります。
      https://uploads.disquscdn.com/images/4dd036f353966dbe7ce7930390de3124461f910c42adcfdcf2c88d53702492a9.png

      • Ryuu

        有難うございます。
        他の言語と混乱していました。
        やってみます。

followMe