Réglage du délais dans le code processing

En premier lieu, afin voir si mon code fonctionnait j’ai recréer à quoi peux ressembler le ouput serial avec un potentiomêtre brancé dans le Arduino. J’ai réussi à faire varier la varaible qui représente le niveau de concentration (0-100) à l’aide du potentiomètre. Voici le code que j’ai importer dans le arduino :


Comme nous pouvons observer, je fait varier la variable value(entre les deux virgules) qui elle représente un chiffre donné par le potentiomètre, et ce toujours entre 0 et 100.

Après avois compilé le programme dans le arduino, voici à quoi ressemble le port Serial 9600 baud (vitesse que j’ai défini afin de transmettre l’information):

Dans mon code processing, je dois lire chaque ligne serial et voir lesquelles commencent par #EEG. Cette méthode sert à définir les informations qui sont dédiés au graphique de l’electroencephalogram de celle qui sont dédiés au graphique du gyroscope.

Le premier problème que j’ai rencontrer était que je n’avais pas de manière afin de déterminer qu’une ligne serial était null. Par conséquent, il y avait des lignes qui étaients vides et donnait l’erreur : ArrayOutOfBoundsException. Avec ce bout de code, je peux vérifier que aucune ligne qui est envoyé sera == null.

Le second problème que j’ai encontré c’est que mon graphique ne répondait pas rapidement. C’est à dire que je modifiais la valeur d’attention et la sphère changeait de grosseur que quelques disaines de secondes après. Afin de régler ce problème, j’ai du réduire le nombre de données que mon programme décryptait afin de l’alléger.

Comme nous pouvons observer, j’ai mis un protocole qui autorise le changement de la variable “Niveauattention” si seulement elle est différente de sa variable précédente. De plus, afin d’éviter mon programme de prendre des données qui ne sont pas bonnes, j’ai mis un restriction de pouvoir jouer avec les lignes qui contiennent seulement trois valeurs. J’ai fait cela puisqu’il y avait certains cas ou mon code processing lisait la ligne plus vite que la vitesse que mon arduino. Cela faisait en sorte qu’il y avait des lignes qui n’avaient pas les 3 variables nécessaires au fonctionnement du programme.

J’ai aussi ajouté cette condition puisque le niveau d’attention passait de 80 à 0 pendant une miliseconde et retournait à sa valeur d’orginine. Cela faisait en sorte que la sphère nous parraissait très sacadé puisqu’elle faisait cette action plus d’une fois par seconde. Ce bout de code à règler le problème en enlevant complètlement le 0 de l’échelle des valeurs.

Leave a comment