我有一个我想要制作的程序,它会询问变量是否已经存在。如果是,则显示它,如果没有,则显示它并使用PROGMEM命令将其存储在Arduino中。有人可以解释更多关于PROGMEM以及如何制作我正在谈论的程序吗?
答案 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上的永久变量存储。以下是two篇excellent篇文章。关于 #ifdef 的?我只是一个软弱的软件工程师,为软件架构师保存。 ;-)我从来没有故意实施过它们,只是看了很多。
OP问题的字面答案是:查询变量并尝试使用它。如果没有定义,Arduino的IDE编译器会尖叫。
答案 2 :(得分:0)
它很简单,只需要声明一个变量。只需要与元素数组进行比较,你想比较一下。如果使用Serial.print()语句显示数组元素和输入元素,则将其存储在累积它的缓冲区数组中。显示它。
正在进行单链接列表