Etape 8: Télécharger le croquis sur la carte Arduino
Télécharger le croquis ici
Programme pour l’interface Arduino avec bandeau Brainsense
***************************************************************************************
Titre : Brainsense avec Arduino
***************************************************************************************
///////////////////////////////////////////////////////////////////////
/ Interface Bluetooth Arduino avec Brainsense
//
Il s’agit d’exemple de code fourni par Pantech Prolabs. et n’est fourni
licence libre.
////////////////////////////////////////////////////////////////////////
#define LED 13
#define bauds 57600
#define DEBUGOUTPUT 0
#define GREENLED1 3
#define verteLED2 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 contrôle
generatedChecksum octets = 0 ;
somme de contrôle octet = 0 ;
int payloadLength = 0 ;
payloadData Byte [64] = {0} ;
brouillonne octets = 0 ;
attention octets = 0 ;
méditation de l’octet = 0 ;
variables système
long lastReceivedPacket = 0 ;
bigPacket booléen = false ;
/////////////////////////
/ Microprocesseur Setup /
/////////////////////////
void setup()
{
pinMode (GREENLED1, sortie) ;
pinMode (verteLED2, sortie) ;
pinMode (GREENLED3, sortie) ;
pinMode (YELLOWLED1, sortie) ;
pinMode (YELLOWLED2, sortie) ;
pinMode (YELLOWLED3, sortie) ;
pinMode (YELLOWLED4, sortie) ;
pinMode (REDLED1, sortie) ;
pinMode (REDLED2, sortie) ;
pinMode (REDLED3, sortie) ;
pinMode (LED, sortie) ;
Serial.Begin(baudrate) ; USB
}
///////////////////////////////
/ Lire les données de la série UART /
///////////////////////////////
Byte ReadOneByte()
{
int ByteRead ;
while (!. Serial.available()) ;
ByteRead = Serial.read() ;
#if DEBUGOUTPUT
Serial.Print((Char)ByteRead) ; écho le même octet sur le port USB de série (pour des fins de débogage)
#endif
Return ByteRead ;
}
////////////
/ BOUCLE MAIN /
////////////
void loop()
{
Recherchez les octets de synchronisation
if(ReadOneByte() == 170)
{
if(ReadOneByte() == 170)
{
payloadLength = ReadOneByte() ;
Si la longueur de //Payload (payloadLength > 169) ne peut pas être supérieur à 169
retour ;
generatedChecksum = 0 ;
pour (int i = 0; i < payloadLength; i ++)
{
payloadData [i] = ReadOneByte() ; Charge utile de lire dans la mémoire
generatedChecksum += payloadData [i] ;
}
checksum = ReadOneByte() ; Lire l’octet total de contrôle de flux
generatedChecksum = 255 - generatedChecksum ; Prendre son compliment de somme de contrôle généré
if(checksum == generatedChecksum)
{
brouillonne = 200 ;
attention = 0 ;
méditation = 0 ;
pour (int i = 0; i < payloadLength; i ++)
{/ / Analyser la charge utile
commutateur (payloadData[i])
{
cas 2 :
i ++ ;
brouillonne = payloadData [i] ;
bigPacket = true ;
rupture ;
cas 4 :
i ++ ;
attention = payloadData [i] ;
rupture ;
cas no 5 :
i ++ ;
méditation = payloadData [i] ;
rupture ;
cas 0 x 80 :
i = i + 3 ;
rupture ;
cas 0 x 83 :
i = i + 25 ;
rupture ;
par défaut :
rupture ;
} / / switch
} / / boucle for
#if ! DEBUGOUTPUT
*** Ajoutez ici votre code ***
if(bigPacket)
{
if(poorQuality == 0)
digitalWrite (LED, haute) ;
d’autre
digitalWrite (LED, faible) ;
Serial.Print ("brouillonne:") ;
Serial.Print (brouillonne, DEC) ;
Serial.Print ("Attention:") ;
Serial.Print (attention, DEC) ;
Serial.Print ("temps depuis le dernier paquet:") ;
Serial.Print(Millis() - lastReceivedPacket, DEC) ;
lastReceivedPacket = millis() ;
Serial.Print("\n") ;
Switch(attention / 10)
{
case 0 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, basse) ;
digitalWrite (GREENLED3, basse) ;
digitalWrite (YELLOWLED1, basse) ;
digitalWrite (YELLOWLED2, basse) ;
digitalWrite (YELLOWLED3, basse) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 1 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, basse) ;
digitalWrite (YELLOWLED1, basse) ;
digitalWrite (YELLOWLED2, basse) ;
digitalWrite (YELLOWLED3, basse) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 2 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, basse) ;
digitalWrite (YELLOWLED2, basse) ;
digitalWrite (YELLOWLED3, basse) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 3 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, basse) ;
digitalWrite (YELLOWLED3, basse) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 4 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, basse) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas no 5 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, basse) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 6 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, élevé) ;
digitalWrite (REDLED1, basse) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 7 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, élevé) ;
digitalWrite (REDLED1, élevé) ;
digitalWrite (REDLED2, basse) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 8 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, élevé) ;
digitalWrite (REDLED1, élevé) ;
digitalWrite (REDLED2, élevé) ;
digitalWrite (REDLED3, basse) ;
rupture ;
cas 9 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, élevé) ;
digitalWrite (REDLED1, élevé) ;
digitalWrite (REDLED2, élevé) ;
digitalWrite (REDLED3, élevé) ;
rupture ;
cas no 10 :
digitalWrite (GREENLED1, élevé) ;
digitalWrite (verteLED2, élevé) ;
digitalWrite (GREENLED3, élevé) ;
digitalWrite (YELLOWLED1, élevé) ;
digitalWrite (YELLOWLED2, élevé) ;
digitalWrite (YELLOWLED3, élevé) ;
digitalWrite (YELLOWLED4, élevé) ;
digitalWrite (REDLED1, élevé) ;
digitalWrite (REDLED2, élevé) ;
digitalWrite (REDLED3, élevé) ;
rupture ;
}
}
#endif
bigPacket = false ;
}
else {}
Erreur de somme de contrôle
} / / fin si d’autre pour la somme de contrôle
} / / fin si lu 0xAA octets
} / / fin si lu 0xAA octets
}