2012-04-22 1 views
0

私は、変数がすでに存在するかどうかを確認するプログラムを用意しています。表示されている場合は表示し、表示されていない場合はPROGMEMコマンドを使用してArduinoに格納します。誰かがPROGMEMについてもっと説明し、私が話しているプログラムを作る方法を教えてもらえますか?Arduino Unoに既に格納されている変数を確認するにはどうすればよいですか?

+1

実行中にプログラム空間(PROGMEM)にデータを保存することはできません。これは定数データを格納するためにのみ使用できます。 'pgm_read _...'関数を使ってArduinoのスケッチでデータを読み込むことができますが、書き込むことはできません(http://www.nongnu.org/avr-libc/user-manual/group__avr__pgmspace.htmlを参照)。 –

答えて

5

一般的に言えば、関数内の変数を作成する場合は、関数が閉じられたときにのみ既存の変数がすべて削除されます。それらを生かし続けるには、グローバル変数を作成したり、その前に静的変数を使用したりしてください。ここ

static int myvariable; 

そして、ここのような は、あなたの質問に対する答えであるEEPROMのための

if (myvariable!=NULL) 
    { 
    printfucntion(myvariable); 
    } 

ソリューション

EEPROM読む は、EEPROMの各バイトの値を読み取り、コンピュータにそれを印刷します。

#include <EEPROM.h> 

// start reading from the first byte (address 0) of the EEPROM 
int address = 0; 
byte value; 

void setup() 
{ 
    Serial.begin(9600); 
} 

void loop() 
{ 
    // read a byte from the current address of the EEPROM 
    value = EEPROM.read(address); 

    Serial.print(address); 
    Serial.print("\t"); 
    Serial.print(value, DEC); 
    Serial.println(); 

    //move to next address of the EEPROM 
    address = address + 1; 

    // there are only 512 bytes of EEPROM, from 0 to 511, so if you are 
    // on address 512, wrap around to address 0 
    // if you have arduinoMega probably there is more eeprom space 
    if (address == 512) 
    address = 0; 

    delay(500); 
} 

私は助けてくれることを願っています。

+0

それは理にかなっていますが、いったん変数が見つかると、その変数を保存する方法はありますか?方法はありますか? –

+0

おかげで申し訳ありません私はあなたの最初の投稿をもう一度読んでいますあなたはAVRのeepromからreadigを意味します私は私の最後の投稿を編集します –

+0

はい、あなたは大いに助けました!どうもありがとうございました!どうもありがとう! –

1

これはかなり古くからの質問ですが、あまり人気がありません。しかし、有効な質問です。 PHPでは、変数の存在をテストするのに常にisset()を使用しています。だから、おそらく、OPはC言語の非常に文字どおりの正式な国に行くことに慣れていない、make-love-not-war PHPの世界から埋め込み/ Cプログラミングに来ている。

pointed out hereとして、 C言語には#ifdef#ifndefがあり、何かが定義されているかどうかをテストする目的でよく使われます。この使用法のニュアンスをよりよく理解するためには、おそらくProgrammers.SEを訪問し、条件付き定義についての専門家の哲学について問い合わせるべきです。

Me?私はArduino上のEEPROMを介して永続的な変数のストレージを研究しています。ここにはtwo異なるexcellentの記事があります。約#ifdefさんの?私はソフトウエア・アーキテクトにとってはソフトウェアエンジニアではなく、それを保存しています。 ;-)私は意図的にそれらを実装したことはありません、それらをたくさん見てください。

OPの質問に対するリテラルの回答は、変数をクエリして使用しようとすることです。 ArduinoのIDEコンパイラが定義されていない場合、それは悲鳴を上げるでしょう。

0

単純ですが、単に変数を宣言する必要があります。要素の配列と比較して、比較したいと思います。 array要素とenter要素が存在する場合は、Serial.print()文を使用して表示します。それ以外の場合は、それを累積するバッファの配列に格納します。それを表示します。

シングルリンクリストを実行しているとき

関連する問題