![ccee3d3059d79a83435fef299f6a3e88.png](https://i-blog.csdnimg.cn/blog_migrate/008cafb44ab1bde979450285225cbbce.jpeg)
从淘宝上购买以后,很多网店都没有与Arduino连接的代码,经历千辛万苦终于找到了官网的一段与Arduino通讯的代码。下面把资料以及链接附在这里,供大家学习参考讨论
这里附上官网链接:
mindwave_mobile_and_arduino [NeuroSky Developer - Docs]
语雀链接:<TGAM开发套件>相关资料,请点击查看:{ED0084/EDK0029/EDK0047} TGAM脑波开发套件 · 语雀
TGAM脑电波传感器开发套件蓝牙EEG脑波模块Neurosky生物反馈检测-淘宝网item.taobao.com![9f8b53df16ec253b1bc2abf6ffb2deda.png](https://i-blog.csdnimg.cn/blog_migrate/59b13342ba2353f1d4d3756dee11d9e3.jpeg)
![461a6db19f27e048e258d4f28308673c.png](https://i-blog.csdnimg.cn/blog_migrate/1494df3f7ea81549d7fe536a080fded2.jpeg)
关注我私信 可获赠arduino源代码和新开发包!
![c4a90a867da498c5babde86e51dff17e.png](https://i-blog.csdnimg.cn/blog_migrate/301f016c4ee4d8aa28ad6a1756aff7c1.jpeg)
Arduino代码说明
TGAM套件自带一个蓝牙,我们需要在Arduino板上再接一个蓝牙。两个蓝牙之间相互通讯。即设置两个蓝牙,一个为主机,一个为从机。
这里需要注意:主机和从机之间可以互发数据。最主要的区别在于,蓝牙主机是主动搜索,而蓝牙从机只能被动连接。
蓝牙模块图
![af497327767889bac1906627ffa1e0db.png](https://i-blog.csdnimg.cn/blog_migrate/919e83e093ca3341f745bbc275c65633.jpeg)
连接图
![53aa5802437867aa527390b1836b0088.png](https://i-blog.csdnimg.cn/blog_migrate/af4a347a94828c23bf2c41606017f558.jpeg)
![574e669dc104665d4115d58b52187970.png](https://i-blog.csdnimg.cn/blog_migrate/116500c8e65097e4b2a95ae3a428efb3.jpeg)
Arudino代码
// Arduino Bluetooth Interface with Mindwave
//
// This is example code provided by NeuroSky, Inc. and is provided
// license free.
#define LED 13
#define BAUDRATE 57600
#define DEBUGOUTPUT 0
// checksum variables
byte generatedChecksum = 0;
byte checksum = 0;
int payloadLength = 0;
byte payloadData[64] = {0};
byte poorQuality = 0;
byte attention = 0;
byte meditation = 0;
int raw=0;
// system variables
long lastReceivedPacket = 0;
boolean bigPacket = false;
//
// Microprocessor Setup //
//
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(BAUDRATE); // USB
}
// Read data from Serial UART //
byte ReadOneByte() {
int ByteRead;
while(!Serial.available());
digitalWrite(13,HIGH);
ByteRead = Serial.read();
return ByteRead;
}
/
//MAIN LOOP//
/
void loop() {
// Look for sync bytes
if(ReadOneByte() == 170) {
if(ReadOneByte() == 170) {
payloadLength = ReadOneByte();
if(payloadLength > 169) //Payload length can not be greater than 169
return;
generatedChecksum = 0;
for(int i = 0; i < payloadLength; i++) {
payloadData[i] = ReadOneByte(); //Read payload into memory
generatedChecksum += payloadData[i];
}
checksum = ReadOneByte(); //Read checksum byte from stream
generatedChecksum = 255 - generatedChecksum; //Take one's compliment of generated checksum
if(checksum == generatedChecksum) {
poorQuality = 200;
attention = 0;
meditation = 0;
for(int i = 0; i < payloadLength; i++) { // Parse the payload
switch (payloadData[i]) {
case 2:
i++;
poorQuality = payloadData[i];
bigPacket = true;
break;
case 4:
i++;
attention = payloadData[i];
break;
case 5:
i++;
meditation = payloadData[i];
break;
case 0x80:
i = i + 3;
raw=payloadData[i-1]*256+payloadData[i];
if(raw>=32768)
raw=raw-65536;
break;
case 0x83:
i = i + 25;
break;
default:
break;
} // switch
} // for loop
#if !DEBUGOUTPUT
// *** Add your code here ***
if(bigPacket) {
if(poorQuality == 0)
digitalWrite(LED, HIGH);
else
digitalWrite(LED, LOW);
Serial.print("PoorQuality: ");
Serial.print(poorQuality, DEC);
Serial.print(" Attention: ");
Serial.print(attention, DEC);
Serial.print(" raw ");
Serial.print(raw);
Serial.print(" Time since last packet: ");
Serial.print(millis() - lastReceivedPacket, DEC);
lastReceivedPacket = millis();
Serial.print(" Att: ");
int att=Serial.print(attention,DEC);
Serial.print("n");
switch(attention / 10) {
case 0:
digitalWrite(LED, HIGH);
break;
case 1:
digitalWrite(LED, HIGH);
break;
case 2:
digitalWrite(LED, HIGH);
break;
case 3:
digitalWrite(LED, HIGH);
break;
case 4:
digitalWrite(LED, HIGH);
break;
case 5:
digitalWrite(LED, HIGH);
break;
case 6:
digitalWrite(LED, HIGH);
break;
case 7:
digitalWrite(LED, HIGH);
break;
case 8:
digitalWrite(LED, HIGH);
break;
case 9:
digitalWrite(LED, HIGH);
break;
case 10:
digitalWrite(LED, HIGH);
break;
}
Serial.flush();
}
#endif
bigPacket = false;
}
else {
}
Serial.flush();
}
}
}
这里从Arduino串口读取到专注度。从而可以还控制LED灯的开关