Blinkar LED med hjälp av dina hjärnvågor (8 / 10 steg)
Steg 8: Ladda upp skiss till Arduino ombord
Ladda ner skissen här
Program för gränsyta Arduino med Brainsense pannband
***************************************************************************************
Titel: Brainsense med Arduino
***************************************************************************************
///////////////////////////////////////////////////////////////////////
/ Arduino Bluetooth-gränssnitt med Brainsense
//
Detta är exempelkod som tillhandahålls av Pantech Prolabs. och ges
licens gratis.
////////////////////////////////////////////////////////////////////////
#define LED 13
#define BAUDVÄRDE 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
kontrollsumma variabler
byte generatedChecksum = 0;
byte checksum = 0;
int payloadLength = 0;
byte payloadData [64] = {0}.
byte poorQuality = 0;
byte uppmärksamhet = 0;
byte meditation = 0;
systemvariabler
lång lastReceivedPacket = 0;
booleska bigPacket = false;
/////////////////////////
/ Mikroprocessor 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
}
///////////////////////////////
/ Läsa data från seriella UART /
///////////////////////////////
byte ReadOneByte()
{
int ByteRead;
tag (!. Serial.available());
ByteRead = Serial.read();
#if DEBUGOUTPUT
Serial.Print((Char)ByteRead); Upprepa samma byte ut USB följetong (för felsökning)
#endif
återvända ByteRead;
}
////////////
/ HUVUDSAKLIGA LOOP /
////////////
void loop()
{
Leta efter sync byte
IF(ReadOneByte() == 170)
{
IF(ReadOneByte() == 170)
{
payloadLength = ReadOneByte();
om (payloadLength > 169) //Payload längd inte kan vara större än 169
hemkomst.
generatedChecksum = 0;
för (int jag = 0; jag < payloadLength; i ++)
{
payloadData [i] = ReadOneByte(); Läs nyttolasten i minnet
generatedChecksum += payloadData [i];
}
kontrollsumma = ReadOneByte(); Läsa kontrollsumma byte från ström
generatedChecksum = 255 - generatedChecksum; Ta en komplimang genererade kontrollsumma
IF(CHECKSUM == generatedChecksum)
{
poorQuality = 200.
uppmärksamhet = 0;
meditation = 0;
för (int jag = 0; jag < payloadLength; i ++)
{/ / Tolka nyttolasten
Switch (payloadData[i])
{
fall 2:
i ++;
poorQuality = payloadData [i];
bigPacket = sant;
bryta;
fall 4:
i ++;
uppmärksamhet = payloadData [i];
bryta;
fall 5:
i ++;
meditation = payloadData [i];
bryta;
fall 0x80:
jag = jag + 3.
bryta;
fall 0x83:
jag = i + 25.
bryta;
standard:
bryta;
} / / Växla
} / / för loop
#if! DEBUGOUTPUT
*** Lägg till din kod här ***
IF(bigPacket)
{
IF(poorQuality == 0)
digitalWrite (LED, hög);
annat
digitalWrite (LED, låg);
Serial.Print ("PoorQuality:");
Serial.Print (poorQuality, DEC);
Serial.Print ("uppmärksamhet:");
Serial.Print (uppmärksamhet, DEC);
Serial.Print ("tid sedan sista packet:");
Serial.Print(Millis() - lastReceivedPacket, DEC);
lastReceivedPacket = millis();
Serial.Print("\n");
Switch(Attention / 10)
{
fall 0:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, låg);
digitalWrite (GREENLED3, låg);
digitalWrite (YELLOWLED1, låg);
digitalWrite (YELLOWLED2, låg);
digitalWrite (YELLOWLED3, låg);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 1:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, låg);
digitalWrite (YELLOWLED1, låg);
digitalWrite (YELLOWLED2, låg);
digitalWrite (YELLOWLED3, låg);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 2:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, låg);
digitalWrite (YELLOWLED2, låg);
digitalWrite (YELLOWLED3, låg);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 3:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, låg);
digitalWrite (YELLOWLED3, låg);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 4:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, låg);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 5:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, låg);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 6:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, hög);
digitalWrite (REDLED1, låg);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
fall 7:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, hög);
digitalWrite (REDLED1, hög);
digitalWrite (REDLED2, låg);
digitalWrite (REDLED3, låg);
bryta;
mål 8:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, hög);
digitalWrite (REDLED1, hög);
digitalWrite (REDLED2, hög);
digitalWrite (REDLED3, låg);
bryta;
mål 9:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, hög);
digitalWrite (REDLED1, hög);
digitalWrite (REDLED2, hög);
digitalWrite (REDLED3, hög);
bryta;
mål 10:
digitalWrite (GREENLED1, hög);
digitalWrite (GREENLED2, hög);
digitalWrite (GREENLED3, hög);
digitalWrite (YELLOWLED1, hög);
digitalWrite (YELLOWLED2, hög);
digitalWrite (YELLOWLED3, hög);
digitalWrite (YELLOWLED4, hög);
digitalWrite (REDLED1, hög);
digitalWrite (REDLED2, hög);
digitalWrite (REDLED3, hög);
bryta;
}
}
#endif
bigPacket = false;
}
annat {
Kontrollsummefel
} / / end om annan för kontrollsumma
} / / end om läsa 0xAA byte
} / / end om läsa 0xAA byte
}