sonification_vegetale_pdb_2020
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
sonification_vegetale_pdb_2020 [2020/03/03 11:32] – Simon Deplat | sonification_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:// | ||
===== Préparation ===== | ===== Préparation ===== | ||
Ligne 15: | Ligne 17: | ||
Je veux ensuite faire fonctionner le capteur. En l' | Je veux ensuite faire fonctionner le capteur. En l' | ||
- | https:// | + | * https:// |
Je regrette qu'il faille s' | Je regrette qu'il faille s' | ||
Ligne 29: | Ligne 31: | ||
pour afficher les valeurs du capteur à l' | pour afficher les valeurs du capteur à l' | ||
- | Si cela ne fonctionne pas, il est possible que la féquence de lecture du port série soit la mauvaise. Je peux vérifier celle-ci avec la commande : | + | Si cela ne fonctionne pas, il est possible que la féquence de lecture du port série soit mauvaise. Je peux vérifier celle-ci avec la commande : |
< | < | ||
Ligne 44: | Ligne 46: | ||
En fait, il existe déjà une classe pour accéder aux ports série : | En fait, il existe déjà une classe pour accéder aux ports série : | ||
- | [[http:// | + | [[http:// |
< | < | ||
Ligne 52: | Ligne 54: | ||
me renvoie une liste des ports disponibles. / | me renvoie une liste des ports disponibles. / | ||
- | Je lance SuperCollider, | + | Je lance SuperCollider, |
< | < | ||
- | sudo scide | + | scide |
</ | </ | ||
- | En effet, sans les droits d' | ||
===== Le code de décodage ===== | ===== Le code de décodage ===== | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | ( | ||
+ | |||
+ | 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 = ""; | ||
+ | var values_list = List.new(); // Puis les regrouper dans cette liste. | ||
+ | |||
+ | input.at( (1..6) ).do( // Première valeur | ||
+ | {|item | | ||
+ | if( item.isAlphaNum, | ||
+ | string = string ++ item; | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | values_list.add( string.asInt ); | ||
+ | string = ""; | ||
+ | |||
+ | input.at( (8..14) ).do( // Deuxième valeur | ||
+ | {|item | | ||
+ | if( ( item.isAlphaNum )||( item.isPunct | ||
+ | string = string ++ item; | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | values_list.add( string.asFloat ); | ||
+ | string = ""; | ||
+ | |||
+ | input.at( (15..18) ).do( // Troisième valeur | ||
+ | {|item | | ||
+ | if( item.isAlphaNum, | ||
+ | string = string ++ item; | ||
+ | }); | ||
+ | }); | ||
+ | |||
+ | values_list.add( string.asInt ); | ||
+ | string = ""; | ||
+ | |||
+ | values_list.add( input.size - 20 ); // La dernière valeur est définie par la position de l' | ||
+ | |||
+ | // | ||
+ | |||
+ | }; | ||
+ | |||
+ | SerialPort.cleanupAll; | ||
+ | |||
+ | p = SerialPort( // On crée une nouvelle instance de port série | ||
+ | "/ | ||
+ | baudrate: 115200, // Et la bonne fréquence de communication | ||
+ | ); | ||
+ | |||
+ | // Le caractère ' | ||
+ | // Le caractère ' ' (vide) équivaut au byte 32 | ||
+ | |||
+ | r = Routine( // Nous allons créer une boucle pour lire constamment les données du capteur | ||
+ | { | ||
+ | var state = 0; // Nous permet de référencer l' | ||
+ | var string = ""; | ||
+ | var list = List.new(); // Nous permet de stocker les données lues | ||
+ | var fourth_data_offset = 0; // Nous permet d' | ||
+ | |||
+ | var test_string = ""; | ||
+ | |||
+ | loop { // En boucle: | ||
+ | |||
+ | var byte = p.read; // On lit le byte actuel du capteur | ||
+ | var data = byte.asAscii; | ||
+ | |||
+ | string = string ++ data; // On ajoute la data actuelle | ||
+ | |||
+ | if( byte == 42, { // Si on a une astérisque, | ||
+ | // | ||
+ | decode_string.value( string ); // On appelle la fonction de decodage | ||
+ | string = ""; | ||
+ | } ) | ||
+ | }; | ||
+ | }; | ||
+ | ).play; // Et on lance tout ça | ||
+ | |||
+ | ) | ||
+ | |||
+ | r.stop; // Permet d' | ||
+ | </ | ||
+ | |||
+ | 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.1583235169.txt.gz · Dernière modification : 2020/03/03 11:32 de Simon Deplat