Schritt 8: Laden Sie die Skizze auf Arduino-board
Die Skizze hier herunterladen
Programm für die Anbindung von Arduino mit Brainsense Stirnband
***************************************************************************************
Titel: Brainsense mit Arduino
***************************************************************************************
///////////////////////////////////////////////////////////////////////
/ Arduino Bluetooth-Schnittstelle mit Brainsense
//
Dies ist die Beispiel-Code von Pantech Prolabs zur Verfügung gestellt. und wird zur Verfügung gestellt
lizenzfrei.
////////////////////////////////////////////////////////////////////////
#define LED 13
#define BAUDRATE 57600
#define DEBUGOUTPUT 0
#define GREENLED1 3
#define GREENLED2 4
#define GREENLED3 5
#define YELLOWLED1 6
#define YELLOWLED2 7
#define YELLOWLED3 8
#define YELLOWLED4 9
#define REDLED1 10
#define REDLED2 11
#define REDLED3 12
#define Powercontrol 10
Prüfsumme Variablen
GeneratedChecksum Byte = 0;
Byte Prüfsumme = 0;
Int PayloadLength = 0;
Byte PayloadData [64] = {0};
Byte Entschädigungspflichten = 0;
Byte Aufmerksamkeit = 0;
Byte Meditation = 0;
Systemvariablen
lange LastReceivedPacket = 0;
Boolesche BigPacket = False;
/////////////////////////
/ Mikroprozessor Setup /
/////////////////////////
void setup()
{
PinMode (GREENLED1, OUTPUT);
PinMode (GREENLED2, OUTPUT);
PinMode (GREENLED3, OUTPUT);
PinMode (YELLOWLED1, OUTPUT);
PinMode (YELLOWLED2, OUTPUT);
PinMode (YELLOWLED3, OUTPUT);
PinMode (YELLOWLED4, OUTPUT);
PinMode (REDLED1, OUTPUT);
PinMode (REDLED2, OUTPUT);
PinMode (REDLED3, OUTPUT);
PinMode (LED, OUTPUT);
Serial.Begin(Baudrate); USB
}
///////////////////////////////
/ Lesen von Daten aus seriellen UART /
///////////////////////////////
Byte ReadOneByte()
{
Int ByteRead;
während (!) Serial.available());
ByteRead = Serial.read();
#if DEBUGOUTPUT
Serial.Print((Char)ByteRead); Echo der selben Bytes, die USB serial (für Debug-Zwecke)
#endif
Rückkehr ByteRead;
}
////////////
/ MAIN LOOP /
////////////
void loop()
{
Suchen Sie nach Sync Byte
If(ReadOneByte() == 170)
{
If(ReadOneByte() == 170)
{
PayloadLength = ReadOneByte();
Wenn (PayloadLength > 169) //Payload Länge kann nicht mehr als 169
zurück;
GeneratedChecksum = 0;
für (Int ich = 0; ich < PayloadLength; i ++)
{
PayloadData [i] = ReadOneByte(); Lesen Sie Nutzlast in den Speicher
GeneratedChecksum += PayloadData [i];
}
Prüfsumme = ReadOneByte(); Prüfsummen-Byte aus Stream gelesen
GeneratedChecksum = 255 - GeneratedChecksum; Nehmen Sie das Kompliment generierte Prüfsumme
If(Checksum == generatedChecksum)
{
Entschädigungspflichten = 200;
Achtung = 0;
Meditation = 0;
für (Int ich = 0; ich < PayloadLength; i ++)
{/ / Parsen die Nutzlast
Schalter (payloadData[i])
{
Fall 2:
i ++;
Entschädigungspflichten = PayloadData [i];
BigPacket = True;
zu brechen;
Fall 4:
i ++;
Achtung = PayloadData [i];
zu brechen;
Fall 5:
i ++;
Meditation = PayloadData [i];
zu brechen;
Fall 0 x 80:
Ich = ich + 3;
zu brechen;
Fall 0x83:
Ich = ich + 25;
zu brechen;
Standard:
zu brechen;
} / / Schalter
} / / for-Schleife
#if! DEBUGOUTPUT
*** Fügen Sie Ihren Code hier ***
If(bigPacket)
{
If(poorQuality == 0)
DigitalWrite (LED, HIGH);
anderes
DigitalWrite (LED, LOW);
Serial.Print ("Entschädigungspflichten:");
Serial.Print (Entschädigungspflichten, DEC);
Serial.Print ("Achtung:");
Serial.Print (Achtung, DEC);
Serial.Print ("Mal seit letzte Paket:");
Serial.Print(Millis() - LastReceivedPacket, DEC);
LastReceivedPacket = millis();
Serial.Print("\n");
Switch(Attention / 10)
{
Fall 0:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, LOW);
DigitalWrite (GREENLED3, LOW);
DigitalWrite (YELLOWLED1, LOW);
DigitalWrite (YELLOWLED2, LOW);
DigitalWrite (YELLOWLED3, LOW);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 1:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, LOW);
DigitalWrite (YELLOWLED1, LOW);
DigitalWrite (YELLOWLED2, LOW);
DigitalWrite (YELLOWLED3, LOW);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 2:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, LOW);
DigitalWrite (YELLOWLED2, LOW);
DigitalWrite (YELLOWLED3, LOW);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 3:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, LOW);
DigitalWrite (YELLOWLED3, LOW);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 4:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, LOW);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 5:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, LOW);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 6:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, hohe);
DigitalWrite (REDLED1, LOW);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 7:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, hohe);
DigitalWrite (REDLED1, hohe);
DigitalWrite (REDLED2, LOW);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 8:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, hohe);
DigitalWrite (REDLED1, hohe);
DigitalWrite (REDLED2, hohe);
DigitalWrite (REDLED3, LOW);
zu brechen;
Fall 9:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, hohe);
DigitalWrite (REDLED1, hohe);
DigitalWrite (REDLED2, hohe);
DigitalWrite (REDLED3, hohe);
zu brechen;
Fall 10:
DigitalWrite (GREENLED1, hohe);
DigitalWrite (GREENLED2, hohe);
DigitalWrite (GREENLED3, hohe);
DigitalWrite (YELLOWLED1, hohe);
DigitalWrite (YELLOWLED2, hohe);
DigitalWrite (YELLOWLED3, hohe);
DigitalWrite (YELLOWLED4, hohe);
DigitalWrite (REDLED1, hohe);
DigitalWrite (REDLED2, hohe);
DigitalWrite (REDLED3, hohe);
zu brechen;
}
}
#endif
BigPacket = False;
}
Else {}
Prüfsumme Fehler
} / / Ende wenn anderes für Prüfsumme
} / / Ende wenn 0xAA Byte lesen
} / / Ende wenn 0xAA Byte lesen
}