|
|
程序作用:每次arduino开机,就读取eeprom中的变量并加1并存入eeprom中。从串口输入c就可以清除eeprom为0.
代码如下:
#include <avr/eeprom.h>
#define Ewrite(address, var) eeprom_write_block((const void *)&(var), (void *)(address), sizeof(var))
#define Eread(address, var) eeprom_read_block((void *)&(var), (const void *)(address), sizeof(var))
long b=0;
//
void setup()
{
Serial.begin(9600);
Eread(0,b);
b=b+1;
Ewrite(0,b);
}
void loop()
{
if ( Serial.available()) {
char ch = Serial.read();//读取串口数据
switch(ch) {
case 'c'://如果数据后带a,则表示是servo1的数据,比如串口发送85a
b=0;
Ewrite(0,b);
Serial.print("clear ok!");
break;
}
}
Eread(0,b);
Serial.println(b,DEC);
delay(2000);
}
程序中的问题:
每次打开串口调试工具时,eeprom中的变量就可直接加3,比如:开始是变量b=6,关闭串口调试工具,再打开b=9,依此类推,难道每次打开串口调试工具中,arduino就重启三次吗?还有我将epprom清0,拨去arduino,再插入,每次b都从6开始,难道,之前已经自动重启了6次了吗,还是我的程序有问题,请高手看看! |
|