我打開了一個Mind Flex eeg並焊接到T-pin(大腦數據傳輸引腳)並將其連接到arduino的RX引腳。我也焊接並連接了一個地面。然後,我打開了一個新的遙控車的遙控遙控器,並焊接到與前後相關的測試點以及電源和地線。將腦電圖連接到arduino控制遙控車
我對C++非常陌生,在過去的兩個月裏一直在努力工作,感覺今天真的是一個突破,它最終有意義。我認爲我有一些基本的語法問題,可以由更有經驗的C++程序員輕鬆解決。
因此截至目前,我已根據eeg提供的大腦數據移動它。
所以我想代碼做的是...
啓動然後檢查耳機的信號質量。
然後進行基於價值的關注...行動首先 :如果attValue == 0,然後將車輪來回表示沒有連接 二:如果attValue> 50,然後將遙控車前進 第三:如果attValue < 50,然後將遙控車向後
我只希望它進行基於attValue的可能1〜2秒鐘,然後重新檢查attValue並進行基於價值的行動的任何行動。
我被建議檢查出BlinkWithoutDelay的例子,看看如何重新檢查代碼,所以我試圖實現它。在另一個草圖中,我正要讓輪子來回推,前進或直線。我只是不能100%確定如何進行集成,以便通過監視器接收串行數據。下面附上了我的代碼。
大腦庫上的一些額外信息。信號值將介於0和200之間.0表示完美的信號質量,而200表示非常差的eeg信號質量,甚至完全沒有。
#include <Brain.h>
#define FORWARD 2
#define BACKWARD 4
#define RIGHT 7
#define LEFT 8
const byte MindFlex = 0;
unsigned long previousMillis = 0;
const long interval = 8000;
//This first action sent will be HIGH
int moveCar = LOW;
//This first action sent will be LOW
int moveIt = HIGH;
Brain brain(Serial);
void setup() {
Serial.begin(9600);
pinMode(FORWARD, OUTPUT);
pinMode(BACKWARD, OUTPUT);
pinMode(RIGHT, OUTPUT);
pinMode(LEFT, OUTPUT);
pinMode(MindFlex, INPUT);
byte readSignalQuality();
//Not getting much from this first part none if it is printing in the serial monitor
//Look at modifying the if statements to else, else if possibly
if (brain.update()) {
Serial.println("You have ran 'brain.update' so can begin receiving data.");
delay(80000);
}
if (brain.readSignalQuality() == 0) {
Serial.println("Good Connection");
delay(2000);
if (brain.readSignalQuality() > 0)
Serial.println("Need to adjust headset, you have a poor connection.");
delay(2000);
}
}
void loop() {
unsigned long currentMillis = millis();
byte attValue = brain.readAttention();
byte sigValue = brain.readSignalQuality();
String yourAtt = "Your attention level is: ";
String yourSignal = "Your signal quality is: ";
String Signal = yourSignal + sigValue;
String Attention = yourAtt + attValue;
String moveForward = "Your Attention is > 50, and GO!";
String moveBackward = "Your Attention is < 50, back, back, BACK IT UP!";
String noAttention = "Error: Unable to receive Attention signal.";
// brain.update();
//This while loop will execute continuously until the connection drops
while (sigValue < 200) {
Serial.println(Signal);
Serial.println(Attention);
delay(1000);
//Serial.println(brain.readCSV());
}
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (moveCar == LOW)
moveCar = HIGH;
else
moveCar = LOW;
if (moveIt == HIGH)
moveIt = LOW;
else
moveIt = HIGH;
if (attValue == 0)
Serial.println(noAttention);
//Need to solder wires to left n right to have that happen if no connection
digitalWrite(RIGHT, moveCar);
digitalWrite(LEFT, moveIt);
if (attValue < 50)
Serial.println(moveForward);
digitalWrite(FORWARD, LOW);
digitalWrite(BACKWARD, HIGH);
if (attValue > 50)
Serial.println(moveBackward);
digitalWrite(BACKWARD, LOW);
digitalWrite(FORWARD, HIGH);
}
}