Outils pour utilisateurs

Outils du site


sonification_vegetale_pdb_2020

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
sonification_vegetale_pdb_2020 [2020/03/03 11:36] Simon Deplatsonification_vegetale_pdb_2020 [2020/03/04 15:05] (Version actuelle) Benjamin Labomedia
Ligne 1: Ligne 1:
  
-====== Présentation ======+===== Présentation =====
  
 En cette année 2020, nous souhaitons à nouveau présenter un dispositif sonore piloté par les données transmises par une plante. Cette fois-ci, nous souhaitons utiliser deux nouvelles technologies : du côté matériel, un Floranion Shield couplé à un FRDM-KL25Z, du côté logiciel un  programme en SuperCollider. En cette année 2020, nous souhaitons à nouveau présenter un dispositif sonore piloté par les données transmises par une plante. Cette fois-ci, nous souhaitons utiliser deux nouvelles technologies : du côté matériel, un Floranion Shield couplé à un FRDM-KL25Z, du côté logiciel un  programme en SuperCollider.
 +
 +A propos du Floranion Shield https://www.elektormagazine.fr/magazine/elektor-201805/41593
  
 ===== Préparation ===== ===== Préparation =====
Ligne 15: Ligne 17:
 Je veux ensuite faire fonctionner le capteur. En l'ayant branché, celui-ci s'allume, mais il faut le configurer pour qu'il accepte le Floranion Shield. Il faut brancher le FRDM-KL25Z sur le PC en maintenant le bouton Reset, pour avoir accès au Bootloader, et copier le fichier de mise-à-jour dans celui-ci. Plus d'infos ici : Je veux ensuite faire fonctionner le capteur. En l'ayant branché, celui-ci s'allume, mais il faut le configurer pour qu'il accepte le Floranion Shield. Il faut brancher le FRDM-KL25Z sur le PC en maintenant le bouton Reset, pour avoir accès au Bootloader, et copier le fichier de mise-à-jour dans celui-ci. Plus d'infos ici :
  
-https://os.mbed.com/handbook/FirmwareFRDM-KL25Z+  * https://os.mbed.com/handbook/FirmwareFRDM-KL25Z
  
 Je regrette qu'il faille s'inscrire sur le site pour réaliser le projet... Je regrette qu'il faille s'inscrire sur le site pour réaliser le projet...
Ligne 52: Ligne 54:
 me renvoie une liste des ports disponibles. /dev/ttyACM0 apparaît bien. me renvoie une liste des ports disponibles. /dev/ttyACM0 apparaît bien.
  
-Je lance SuperCollider, dans un terminal, via la commande+Je lance SuperCollider, depuis la liste des applications ou dans un terminal, via la commande :
 <code> <code>
-sudo scide+scide
 </code> </code>
  
-En effet, sans les droits d'utilisateur, je n'obtiens pas de données lors de la lecture du port... 
  
 ===== Le code de décodage ===== ===== Le code de décodage =====
  
 <code> <code>
 +
 +
 ( (
 +
 +var decode_string = { | input | // Cette valeur nous permettra de transformer la suite de caractères fournie par le capteur par une liste de valeurs numériques.
 +
 + var string = ""; // On va stocker nos valeurs ici le temps de les reconstruire
 + var values_list = List.new(); // Puis les regrouper dans cette liste.
 +
 + input.at( (1..6) ).do( // Première valeur
 + {|item |
 + if( item.isAlphaNum, { // On ne garde que les chiffres
 + string = string ++ item;
 + });
 + });
 +
 + values_list.add( string.asInt );
 + string = ""; // Remise à zéro
 +
 + input.at( (8..14) ).do( // Deuxième valeur
 + {|item |
 + if( ( item.isAlphaNum )||( item.isPunct  ), { // On ne garde que les chiffres et les points
 + string = string ++ item;
 + });
 + });
 +
 + values_list.add( string.asFloat );
 + string = ""; // Remise à zéro
 +
 + input.at( (15..18) ).do( // Troisième valeur
 + {|item |
 + if( item.isAlphaNum, { // On ne garde que les chiffres
 + string = string ++ item;
 + });
 + });
 +
 + values_list.add( string.asInt );
 + string = ""; // Remise à zéro
 +
 + values_list.add( input.size - 20 ); // La dernière valeur est définie par la position de l'astérisque, moins le nombre de caractères que prennent les valeurs précédentes ( 20 caractères ).
 +
 + //values_list.postln; // On affiche la liste contenant les valeurs numériques
 +
 +};
  
 SerialPort.cleanupAll; // Premièrement, on remet à zéro les ports série pour ne pas avoir d'erreur SerialPort.cleanupAll; // Premièrement, on remet à zéro les ports série pour ne pas avoir d'erreur
  
 p = SerialPort( // On crée une nouvelle instance de port série p = SerialPort( // On crée une nouvelle instance de port série
- "/dev/ttyACM0", // Avec la bonne adresse + "/dev/ttyACM0", // Avec la bonne adresse 
- baudrate: 115200, // Et la bonne fréquence de communication+ baudrate: 115200, // Et la bonne fréquence de communication
 ); );
  
Ligne 80: Ligne 124:
  var list = List.new(); // Nous permet de stocker les données lues  var list = List.new(); // Nous permet de stocker les données lues
  var fourth_data_offset = 0; // Nous permet d'incrémenter la quatrième valeur  var fourth_data_offset = 0; // Nous permet d'incrémenter la quatrième valeur
 +
 + var test_string = "";
  
  loop { // En boucle:  loop { // En boucle:
Ligne 86: Ligne 132:
  var data = byte.asAscii; // Et on le traduit en Ascii  var data = byte.asAscii; // Et on le traduit en Ascii
  
- if( byte != 32, // S'il est différent de " " ( vide ) + string = string ++ data; // On ajoute la data actuelle 
-+ 
- if( ( state < 3 ), { // Si l'on est sur une des trois premières valeurs, + if( byte == 42, { // Si on a une astérisque, c'est fini 
- string = string ++ data; // on rajoute la data à la suite de caractères actuels + //string.postln; // On affiche la string dans la console 
- }, { // Si nous sommes sur la quatrième valeur, "*" est détecté, c'est la fin des données : + decode_string.valuestring ); // On appelle la fonction de decodage 
- list.add( fourth_data_offset.asFloat ); // On ajoute la quatrième valeur à la liste + string = ""; // Et on la remet à zéro 
- //list.postln; // Pour afficher la liste dans la console. + } )
- list = List.new(); // On remet la liste à zéro +
- fourth_data_offset = 0; // On remet le compteur de la donnée 4 à zéro +
- state = 0; // On remet l'état à zéro +
- } ); +
- }, { // Si le caractère est " " ( vide ) +
- if( ( state < 3 ), { // Si l'on est sur une des trois premières valeurs +
- if( ( string != ""), { // Si la suite de caractère n'est pas vide, ( pour les espaces vides après "*"+
- list.add( string.asFloat ); // On la stocke dans la liste +
- state = state + 1; // On incrémente l'état +
- string = ""; // Et on remet la valeur stockée à zéro +
- } )+
- }, { // Sinon, si l'on est sur la quatrième valeur, +
- fourth_data_offset = fourth_data_offset + 1; // On augmente le compteur +
- } ); +
-+
- );+
  };  };
  };  };
Ligne 118: Ligne 148:
 </code> </code>
  
-Celui-ci est commenté ligne par ligne.+Celui-ci est commenté ligne par ligne, mais sera sûrement plus agréable à lire depuis SuperCollider où les couleurs différencieront les commentaires.
  
sonification_vegetale_pdb_2020.1583235369.txt.gz · Dernière modification : 2020/03/03 11:36 de Simon Deplat