第五十六课--Microduino EEPROM数据流串口输入/zh

来自Microduino Wikipedia
跳转至: 导航搜索


目的

本教程将用Microduino实现一个数据流串口输入的功能。

设备

Microduino-Core/zh

Microduino-USBTTL/zh

原理图

程序

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

调试

步骤一:下载代码,运行。

EEPROMStreamInput

我们用到了一个串口命令Serial.parseInt(),他的作用是查找传入的串行数据流中的下一个有效的整数。Serial.read()只能每次读取一个字节。。。使用起来并不是很方便。Serial.parseInt()能一次读取一个数据流。。弥补了这方面使用上不便的缺陷。

步骤二:打开串口通讯,此时每个一秒钟应该显示一次当前EEPROM地址0位置的一个类型为unsigned long的值。(我这里地址0位置的值是123456)

EEPROMStreamInput

步骤三:在输入框任何数值(0~4294967295 ),这个数据流就会在EEPROM中存储并在下方输出(我这里输入的是77777)

EEPROMStreamInput

结果

在串口中输入的数据流会存入到EEPROM中。

视频