Paso 8: Añadir el sketch a la placa Arduino
Descargar el croquis aquí
Programa para interfaces de Arduino con diadema Brainsense
***************************************************************************************
Título: Brainsense con Arduino
***************************************************************************************
///////////////////////////////////////////////////////////////////////
/ Arduino Bluetooth interfaz con Brainsense
//
Esto es código de ejemplo proporcionado por Pantech Prolabs. y se proporciona
licencia libre.
////////////////////////////////////////////////////////////////////////
#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
variables de suma de comprobación
byte generatedChecksum = 0;
suma de bytes = 0;
int payloadLength = 0;
byte payloadData [64] = {0};
byte poorQuality = 0;
atención de byte = 0;
meditación de byte = 0;
variables de sistema
lastReceivedPacket largo = 0;
Boolean bigPacket = false;
/////////////////////////
Configuración de microprocesador /
/////////////////////////
void setup()
{
pinMode (GREENLED1, salida);
pinMode (GREENLED2, salida);
pinMode (GREENLED3, salida);
pinMode (YELLOWLED1, salida);
pinMode (YELLOWLED2, salida);
pinMode (YELLOWLED3, salida);
pinMode (YELLOWLED4, salida);
pinMode (REDLED1, salida);
pinMode (REDLED2, salida);
pinMode (REDLED3, salida);
pinMode (LED, salida);
Serial.Begin(BAUDRATE); USB
}
///////////////////////////////
/ Leer datos de Serial UART /
///////////////////////////////
byte ReadOneByte()
{
int ByteRead;
mientras (!. Serial.Available());
ByteRead = Serial.read();
#if DEBUGOUTPUT
Serial.Print((Char)ByteRead); echo el mismo byte el USB serial (para propósitos de depuración)
#endif
volver ByteRead;
}
////////////
/ CAÑERÍA DE /
////////////
void loop()
{
Buscar bytes de sincronización
if(ReadOneByte() == 170)
{
if(ReadOneByte() == 170)
{
payloadLength = ReadOneByte();
Si la longitud de //Payload (payloadLength > 169) no puede ser superior a 169
retorno;
generatedChecksum = 0;
para (int i = 0; i < payloadLength; i ++)
{
payloadData [i] = ReadOneByte(); Carga útil de lectura en la memoria
generatedChecksum += payloadData [i];
}
suma de comprobación = ReadOneByte(); Leer byte de suma de comprobación de corriente
generatedChecksum = 255 - generatedChecksum; Tomar el complemento de suma de comprobación generada
if(checksum == generatedChecksum)
{
poorQuality = 200;
atención = 0;
meditación = 0;
para (int i = 0; i < payloadLength; i ++)
{/ / Procesar la carga útil
interruptor (payloadData[i])
{
caso 2:
i ++;
poorQuality = payloadData [i];
bigPacket = true;
rotura;
caso 4:
i ++;
atención = payloadData [i];
rotura;
caso 5:
i ++;
meditación = payloadData [i];
rotura;
caso 0 x 80:
i = i + 3;
rotura;
caso 0x83:
i = i + 25;
rotura;
por defecto:
rotura;
} / / interruptor
} / / bucle
#if! DEBUGOUTPUT
*** Agregue su código aquí ***
if(bigPacket)
{
if(poorQuality == 0)
digitalWrite (LED, alta);
otra cosa
digitalWrite (LED, baja);
Serial.Print ("PoorQuality:");
Serial.Print (poorQuality, DEC);
Serial.Print ("atención:");
Serial.Print (atención, DEC);
Serial.Print ("tiempo desde el último paquete:");
Serial.Print(Millis() - lastReceivedPacket, DEC);
lastReceivedPacket = millis();
Serial.Print("\n");
Switch(Attention / 10)
{
caso 0:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, bajo);
digitalWrite (GREENLED3, bajo);
digitalWrite (YELLOWLED1, bajo);
digitalWrite (YELLOWLED2, bajo);
digitalWrite (YELLOWLED3, bajo);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 1:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, bajo);
digitalWrite (YELLOWLED1, bajo);
digitalWrite (YELLOWLED2, bajo);
digitalWrite (YELLOWLED3, bajo);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 2:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, bajo);
digitalWrite (YELLOWLED2, bajo);
digitalWrite (YELLOWLED3, bajo);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 3:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, bajo);
digitalWrite (YELLOWLED3, bajo);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 4:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, bajo);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 5:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, bajo);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 6:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, alto);
digitalWrite (REDLED1, bajo);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 7:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, alto);
digitalWrite (REDLED1, alto);
digitalWrite (REDLED2, bajo);
digitalWrite (REDLED3, bajo);
rotura;
caso 8:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, alto);
digitalWrite (REDLED1, alto);
digitalWrite (REDLED2, alto);
digitalWrite (REDLED3, bajo);
rotura;
caso 9:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, alto);
digitalWrite (REDLED1, alto);
digitalWrite (REDLED2, alto);
digitalWrite (REDLED3, alto);
rotura;
caso 10:
digitalWrite (GREENLED1, alto);
digitalWrite (GREENLED2, alto);
digitalWrite (GREENLED3, alto);
digitalWrite (YELLOWLED1, alto);
digitalWrite (YELLOWLED2, alto);
digitalWrite (YELLOWLED3, alto);
digitalWrite (YELLOWLED4, alto);
digitalWrite (REDLED1, alto);
digitalWrite (REDLED2, alto);
digitalWrite (REDLED3, alto);
rotura;
}
}
#endif
bigPacket = false;
}
Else {}
Error de suma de comprobación
} / / fin si otra cosa de suma de comprobación
} / / fin si leer byte 0xAA
} / / fin si leer byte 0xAA
}