第五十六课--Microduino EEPROM数据流串口输入/zh
Radiumray9@gmail.com(讨论 | 贡献)2014年11月17日 (一) 05:38的版本 (Created page with "{| style="width: 800px;" |- | ==目的== 本教程将用Microduino实现一个数据流串口输入的功能。 ==设备== Microduino-Core/zh [[Microduino-USBTTL/zh]...")
目的本教程将用Microduino实现一个数据流串口输入的功能。 设备原理图程序 #include <EEPROM.h>
#define EEPROM_write(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) EEPROM.write(address+i, pp[i]);}
#define EEPROM_read(address, p) {int i = 0; byte *pp = (byte*)&(p);for(; i < sizeof(p); i++) pp[i]=EEPROM.read(address+i);}
unsigned long incomingByte = 0; // 定义无符号长整数型变量incomingByte初始值为0
void setup() {
Serial.begin(9600); // 打开串口,设置数据传输速率9600
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.parseInt(); //读取串口传入的下一个有效整数,把该整数赋值给incomingByte变量
EEPROM_write(0,incomingByte) //把incomingByte变量从0地址位开始写入EEPROM
}
EEPROM_read(0,incomingByte) //从0地址位开始读取EEPROM,把值写入变量incomingByte
Serial.println(incomingByte); //通过串口输出
delay(1000);
}
调试步骤一:下载代码,运行。 我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。 步骤二:打开串口通讯,此时每个一秒钟应该显示一次当前EEPROM地址0位置的一个类型为unsigned long的值。 步骤三:在输入框任何数值(0~4294967295 ),这个数据流就会在EEPROM中存储并在下方输出
结果在串口中输入的数据流会存入到EEPROM中。 视频 |