• Welcome to Forum des utilisateurs de Blockly(s). Please login or sign up.
 

Anémomètre : insérer les variables dans la formule

Démarré par FPiot, octobre 07, 2017, 12:20:38 am

« précédent - suivant »

FPiot

Bonjour,

Je suis en train de créer des blocs pour utiliser un capteur de vent avec un interrupteur ILS. Dans l'un de mes blocs, je dois saisir la valeur du rayon de l'anémomètre à coupelles et le coefficient d'étalonnage. Par contre, je ne sais pas comment transférer ces 2 variables dans la formule du code à générer. Pour plus de clarté, je vous joins une image. Merci pour votre aide.

Bzhtitude

Salut

essaies de mettre tes variables entre '+ + ' dans le code arduino

ex : 'vitesse = ' + RAYON +  ' * 3.141... '
de façon à concaténer la chaîne.


FPiot

J'ai tout essayé depuis ce matin dont celle-ci. Impossible de déclarer ces 2 valeurs du bloc dans le script. Ça doit être sûrement simple mais je ne maitrise pas beaucoup ce langage.

Bzhtitude

tu peux nous montrer le js du dessin du bloc pour voir les variables.

fontaine.jp

Salut,
Normalement il faut déclarer les variables avant de les utiliser.
Il me semble qu'il faudrait plutôt mettre les déclarations des variables actuellement lignes 108, 109, 110 à la ligne 69, 70, 71.
Et faire comme Bzhtitude a dit :
" blabla " + variable_déclararée_avant + " encore du blabla"
Tu peux dans firefox voir les erreurs de javascript en allant dans le menu --> développement --> outils de développement --> console
ça permet de voir d'où vient le problème.
A+

FPiot

Voici le code. J'espère que ça va te permettre de trouver. C'est la seule chose qu'il me reste avant de pouvoir transférer l'ensemble des blocs anémomètre au développeur pour la mise en ligne.

Sympa de regarder.


'use strict';

goog.provide('Blockly.Blocks.anemometre');

goog.require('Blockly.Blocks');
goog.require('Blockly.Types');

Blockly.Blocks.vitesse_rotation = {
  init: function() {
    this.setColour(Blockly.Blocks.anemometre.HUE);
this.setHelpUrl(Blockly.Msg.VITESSE_ROTATION_HELPURL);
    this.appendDummyInput("")
        .appendField(Blockly.Msg.VITESSE_ROTATION_TEXT)
        .appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/capteur_vent/anemo_rotation.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize));
this.appendValueInput("PIN")
        .setCheck('Number')
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField(Blockly.Msg.VITESSE_ROTATION_INPUT);   
    this.setOutput(true, 'Number');   
    this.setTooltip(Blockly.Msg.VITESSE_ROTATION_TOOLTIP);
  }
};



Blockly.Blocks.vitesse_ventkmh = {
  init: function() {
    this.setColour(Blockly.Blocks.anemometre.HUE);

this.setHelpUrl(Blockly.Msg.VITESSE_VENTKMH_HELPURL);
   
this.appendDummyInput("")
        .appendField(Blockly.Msg.VITESSE_VENTKMH_TEXT)
        .appendField(new Blockly.FieldImage(Blockly.pathToBlockly + 'blocks/capteur_vent/anemo_vitessekmh.jpg', Blockly.Arduino.imageSize, Blockly.Arduino.imageSize));

this.appendValueInput("PIN")
        .setCheck('Number')
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField(Blockly.Msg.VITESSE_VENTKMH_INPUT);

this.appendValueInput("RAYONBRAS")
        .setCheck('Number')
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField(Blockly.Msg.VITESSE_VENTKMH_RAYON);

this.appendValueInput("COEFETAL")
        .setCheck('Number')
        .setAlign(Blockly.ALIGN_RIGHT)
        .appendField(Blockly.Msg.VITESSE_VENTKMH_COEFF);         
   
this.setOutput(true, 'Number');   
   
this.setTooltip(Blockly.Msg.VITESSE_VENTKMH_TOOLTIP);
  }
};

FPiot

MERCI à vous Bzhtitude et fontaine.jp. Ça tourne ... j'avais déjà replacé les variables plus haut dans le script mais je crois que la seule chose à ne pas avoir faite est d'avoir mis entre les signes + le nom de la variable à côté de l'instruction "var". Je mettais celle qui était dans la parenthèse... J'avais trop "le nez dans le guidon" comme on dit. Le fait d'avoir fait une pause m'a fait fait prendre du recul car après avoir lu le message de fontaine.jp et relu celui de  Bzhtitude, j'ai pigé tout de suite mon erreur. En tout cas , UN GRAND MERCI A VOUS DEUX. ;)

SebCanet