如何在Arduino Uno上检查已存储的变量?

时间:2012-04-22 09:57:59

标签: arduino

我有一个我想要制作的程序,它会询问变量是否已经存在。如果是,则显示它,如果没有,则显示它并使用PROGMEM命令将其存储在Arduino中。有人可以解释更多关于PROGMEM以及如何制作我正在谈论的程序吗?

3 个答案:

答案 0 :(得分:5)

一般来说,如果要在函数中创建任何变量,只有在函数关闭时才会存在,所有变量都将被删除。如果你想让它们保持活着,试着创建全局变量或在它之前使用static; 喜欢这里

static int myvariable;

以下是您的问题的答案

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

eeprom的解决方案

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);
}

我希望我能帮忙。

答案 1 :(得分:1)

这是一个非常陈旧的问题,而且不那么受欢迎。但这是一个有效的问题。在php中,我一直使用isset()来测试变量的存在。所以,或许OP正在进入嵌入式/ C编程,来自php-love-not-war世界的php,任何事情都会发生,并且不习惯于非常文字和正式的C国。

作为pointed out here,C语言具有 #ifdef #ifndef 条件定义,如果定义了某些内容,通常用于测试的确切目的。为了更好地理解这种用法​​的细微差别,人们应该访问Programmers.SE并询问有关条件定义的专业理念。

我吗?我正在通过EEPROM研究Arduino上的永久变量存储。以下是twoexcellent篇文章。关于 #ifdef 的?我只是一个软弱的软件工程师,为软件架构师保存。 ;-)我从来没有故意实施过它们,只是看了很多。

OP问题的字面答案是:查询变量并尝试使用它。如果没有定义,Arduino的IDE编译器会尖叫。

答案 2 :(得分:0)

它很简单,只需要声明一个变量。只需要与元素数组进行比较,你想比较一下。如果使用Serial.print()语句显示数组元素和输入元素,则将其存储在累积它的缓冲区数组中。显示它。

正在进行单链接列表