我有一个我想做的程序,它会询问变量是否已经存在。如果是,它会显示它,如果不是,它会创建它并使用 PROGMEM 命令将其存储在 Arduino 中。有人可以解释更多关于 PROGMEM 以及如何制作我正在谈论的程序吗?
3 回答
一般来说,如果您在函数中创建任何变量,它们仅在函数关闭时才存在,所有变量都会被删除。如果您想让它们保持活力,请尝试创建全局变量或在它之前使用静态;像这儿
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);
}
我希望我有所帮助。
这是一个相当陈旧的问题,而且不是那么受欢迎。但是是一个有效的问题。在 php 中,我一直在使用isset()
来测试变量的存在。因此,也许 OP 正在从 php 的“不做爱”世界进入嵌入式 / C 编程,在这个世界中,任何事情都会发生,并且不习惯于 C 的极其文字和正式的国家。
正如这里所指出的,C 语言具有条件定义#ifdef,#ifndef通常用于测试是否定义了某些内容。为了更好地理解这种用法的细微差别,应该访问Programmers.SE并询问有关条件定义的专业哲学。
我?我正在通过 EEPROM 研究 Arduino 上的永久变量存储。这里有两篇不同的优秀文章。而关于#ifdef's? 我只是一名卑微的软件工程师,并将其留给软件架构师。;-) 我从来没有故意实现它们,只是看到了很多。
OP 问题的字面答案是:查询变量并尝试使用它。如果未定义,Arduino 的 IDE 编译器会尖叫。
它很简单,只需要声明一个变量。只需与元素数组进行比较,你想与之比较。如果存在数组元素和输入元素,则使用 Serial.print() 语句显示,否则将其存储在缓冲区数组中累积它。显示它。
当你在做单链接列表时