1

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

4

3 回答 3

6

一般来说,如果您在函数中创建任何变量,它们仅在函数关闭时才存在,所有变量都会被删除。如果您想让它们保持活力,请尝试创建全局变量或在它之前使用静态;像这儿

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

我希望我有所帮助。

于 2012-04-22T10:09:13.853 回答
1

这是一个相当陈旧的问题,而且不是那么受欢迎。但是是一个有效的问题。在 php 中,我一直在使用isset()来测试变量的存在。因此,也许 OP 正在从 php 的“不做爱”世界进入嵌入式 / C 编程,在这个世界中,任何事情都会发生,并且不习惯于 C 的极其文字和正式的国家。

正如这里所指出的,C 语言具有条件定义#ifdef#ifndef通常用于测试是否定义了某些内容。为了更好地理解这种用法​​的细微差别,应该访问Programmers.SE并询问有关条件定义的专业哲学。

我?我正在通过 EEPROM 研究 Arduino 上的永久变量存储。这里有两篇不同的优秀文章。而关于#ifdef's? 我只是一名卑微的软件工程师,并将其留给软件架构师。;-) 我从来没有故意实现它们,只是看到了很多。

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

于 2013-06-29T06:25:35.423 回答
0

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

当你在做单链接列表时

于 2014-01-08T12:01:01.797 回答