c++ - 无法通过循环更新数据
问题描述
我目前正在使用 Arduino 开发 EEG 系统。该系统的目的是使振动器振动 0.1 秒,等待 0.5 秒,然后再次振动 0.1 秒。但是从一开始我希望它从一开始每 0.1 秒读取一次 EEG (Serial.println(brain.readCSV()); Serial.println(brain.readErrors());)。
问题是它只需要一个样本并且在整个过程中重复它直到它循环,而不是通过循环不断更新。
我怎样才能让它在整个系统运行时连续读取新数据。
#include "Brain.h"
#include <SPI.h>
#include <Wire.h>
int n=0;
int m=0;
// Set up the brain parser, pass it the hardware serial object you want to listen on.
Brain brain(Serial);
int vib = 5;
void setup() {
// Start the hardware serial.
Serial.begin(9600);
pinMode(vib, OUTPUT);
}
void loop() {
// Expect packets about once per second.
// The .readCSV() function returns a string (well, char*) listing the most recent brain data, in the following format:
// "signal strength, attention, meditation, delta, theta, low alpha, high alpha, low beta, high beta, low gamma, high gamma"
if (brain.update()) {
Serial.println(brain.readCSV());
Serial.println(brain.readErrors());
if(brain.readSignalQuality() == 0) {
// Vibrate
digitalWrite(vib,HIGH);
Serial.println(brain.readCSV());
Serial.println(brain.readErrors());
delay(100);
while (n<500){
n=n+100;
digitalWrite(vib,LOW);
Serial.println(brain.readCSV());
Serial.println(brain.readErrors());
Serial.println(n);
delay(100);
}
digitalWrite(vib,HIGH);
Serial.println(brain.readCSV());
Serial.println(brain.readErrors());
delay(100);
while (m<10000){
m=m+100;
digitalWrite(vib,LOW);
Serial.println(brain.readCSV());
Serial.println(brain.readErrors());
Serial.println(m);
delay(100);
}
n=0;
m=0;
}
}
}
解决方案
正如 Delta_G 在评论中所说,每次需要新数据时都需要调用 Brain.update()。查看Brain.cpp的源代码,请注意“readErrors”仅返回一个仅在您运行 update() 后才会更改的变量(并且 readCSV 对一组也在 update() 中更新的变量运行 sprintf)。这意味着 readErrors 和 readCSV 实际上并没有提取新数据。
推荐阅读
- openlayers - 如何在 openlayers 6.x 中旋转静态图像
- javascript - 使用会话/本地的不同页面之间的交互
- vue.js - 开玩笑 store.dispatch 模拟导致递归循环和 OOM
- java - 方法 read() 未调用,但其代码已执行
- elasticsearch - 可以将没有logstash的两台不同机器的日志发送到elasticsearch吗?
- node.js - 仅将文件夹重定向到 nodejs api 端口
- tensorflow - 避免 TF 模型子部分中的重复计算
- python - 如何在 python docker 容器中使用 Kyrix 数据可视化工具
- android - 将 Android 应用修改为仅适用于特定设备
- r - 如何更改学习者教程的主题?