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édentes Révision précédente
Prochaine révision
Révision précédente
fr:arduino:blockly_rduino:creerblocsmultiling:bloccode [2016/08/21 01:14]
admin [On prépare le code :]
fr:arduino:blockly_rduino:creerblocsmultiling:bloccode [2018/11/18 19:00] (Version actuelle)
Ligne 8: Ligne 8:
  
 On peut s'​aider des blocs existants pour générer le code à faire apparaître : On peut s'​aider des blocs existants pour générer le code à faire apparaître :
 +
 +<​code>​
 +#include <​Servo.h>​
 +
 +Servo servo_2;
 +
 +void setup() {
 +   ​servo_2.attach(2);​
 +}
 +
 +void loop() {
 +   ​servo_2.write(180);​
 +   ​delay(3000);​
 +   ​servo_2.write(0);​
 +   ​delay(3000);​
 +}
 +</​code>​
  
 Donc il faudra //faire //écrire : Donc il faudra //faire //écrire :
Ligne 16: Ligne 33:
   * dans la boucle '​loop'​ on décrit le fonctionnement voulu   * dans la boucle '​loop'​ on décrit le fonctionnement voulu
  
-Le 2 est le numéro de la broche où sera connectée la Flycam, mais elle doit être alimentée par un bloc extérieur puis on utilise la variable ad-hoc : <font inherit ​color: inherit; background-color:​ #​FAEBD7 ​/​inherit;;​inherit;;​inherit background-color: ​#FAEBD7 >​variable '​PIN'</​font>​ définie lors de **this.appendValueInput (<font inherit color: inherit; background-color:​ #FAEBD7 /​inherit;;​inherit;;​inherit background-color:​ #FAEBD7 >“PIN”</​font>,​ '​Number'​)**+Le 2 est le numéro de la broche où sera connectée la Flycam, mais elle doit être alimentée par un bloc extérieur puis on utilise la variable ad-hoc : <font inherit/​inherit;;​inherit;;#​FAEBD7>​variable '​PIN'</​font>​ définie lors de **this.appendValueInput (“PIN”)**
  
-{{http://​tic.technologiescollege.fr/​wiki/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​blink.jpg?​nolink&​33x34}}+{{:fr:​arduino:​blockly_rduino:​creerblocsmultiling:​2188eba0622058c7db9cfca16fb67538.png}}
  
  
Ligne 25: Ligne 42:
 On créé un dossier de texte brut dans le dossier '​**\generators\arduino\**'​ **<font inherit/​inherit;;​inherit;;#​FFFF00>​avec le même nom que celui qui a définit le dessin du bloc !</​font>​** On créé un dossier de texte brut dans le dossier '​**\generators\arduino\**'​ **<font inherit/​inherit;;​inherit;;#​FFFF00>​avec le même nom que celui qui a définit le dessin du bloc !</​font>​**
  
-{{http://​tic.technologiescollege.fr/​wiki/​lib/​plugins/​ckgedit/​fckeditor/​userfiles/​blink.jpg?​nolink&​33x34}}+{{:fr:​arduino:​blockly_rduino:​creerblocsmultiling:​522fd245be804047b2b2728365476308.png}} 
 + 
 +On s'​inspire de blocs existants et on attaque !
  
-On s'​sinspire de blocs existants et on attaque ! 
  
 ===== On complète le fichier '​générateur'​ : ===== ===== On complète le fichier '​générateur'​ : =====
Ligne 33: Ligne 51:
 <​code>​ <​code>​
 /** /**
- * Block pour la FlycamOne ​Eco v2+ * Block pour la FlyCamOne ​Eco v2
  * @author Seb Canet (canet.s@free.fr)  * @author Seb Canet (canet.s@free.fr)
  */  */
 'use strict';​ 'use strict';​
  
-goog.provide('​Blockly.Blocks.flycam'​);​+goog.provide('​Blockly.Arduino.flycam'​);​
  
 goog.require('​Blockly.Arduino'​);​ goog.require('​Blockly.Arduino'​);​
  
-Blockly.Blocks.flycam_switch = {+Blockly.Arduino.flycam_switch = function() ​{
   var value_pin = Blockly.Arduino.valueToCode(this,​ '​PIN',​ Blockly.Arduino.ORDER_ATOMIC);​   var value_pin = Blockly.Arduino.valueToCode(this,​ '​PIN',​ Blockly.Arduino.ORDER_ATOMIC);​
  
-  Blockly.Arduino.definitions_['​define_servo'​] = '#​include <​Servo.h>​\n';​ +  Blockly.Arduino.inludes_['​define_servo'​] = '#​include <​Servo.h>​\n';​ 
-  Blockly.Arduino.definitions_['​var_servo' ​  ​value_pin] = 'Servo servo_' ​  ​value_pin ​  ​';​\n';​ +  Blockly.Arduino.definitions_['​var_servo' ​value_pin] = 'Servo servo_' ​value_pin ​';​\n';​ 
-  Blockly.Arduino.setups_['​setup_servo_' ​  ​value_pin] = '​servo_' ​  ​value_pin ​  ​'​.attach(' ​  ​value_pin ​  ​'​);​\n';​ +  Blockly.Arduino.setups_['​setup_servo_' ​value_pin] = '​servo_' ​value_pin ​'​.attach(' ​value_pin ​'​);​\n';​ 
-  var code = '​servo_' ​  ​value_pin ​  ​'​.write(180);​\n'​ +  var code = '​servo_' ​value_pin ​'​.write(180);​\n'​ 
-    '​delay(3000);​\n'​ +  ​+  ​'​delay(3000);​\n'​ 
-    '​servo_' ​  ​value_pin ​  ​'​.write(0);​\n'​ +  ​+  ​'​servo_' ​value_pin ​'​.write(0);​\n'​ 
-    '​delay(3000);\n';+  ​+  ​'​delay(1000);\n';
   return code;   return code;
 }; };
 </​code>​ </​code>​
 +
 +
 +===== On comprend le principe =====
 +
 +  * on définit encore notre catégorie et dépendances mais cette fois on dit qu'il s'agit de code **Arduino **: goog.provide('​Blockly.**Arduino**.flycam'​);​
 +  * on stocke dans une variable la valeur récupérée dans la programmation graphique par blocs : **var value_pin** ​ = Blockly.Arduino.valueToCode(this,​ '​**PIN**',​ Blockly.Arduino.ORDER_ATOMIC);​
 +  * pour chacune des parties du programe Arduino (include - definition - setup - loop), on écrit le texte qui doit aparaître :
 +      * tout en haut on commence par l'​appel à la bibliothèque servo : Blockly.Arduino.inludes_['​define_servo'​] = '#​include <​Servo.h>​\n';​
 +      * puis on définit une variable de type Servo : Blockly.Arduino.definitions_['​var_servo'​ value_pin] = 'Servo servo_'​ value_pin ';​\n';​
 +      * et dans l'​initialisation (ou setup) on //attache //le servomoteur sur la broche n°....contenu dans la **variable value_pin**
 +      * ensuite le code sera automatiquement rajouté dans la boucle infinie '​loop'​.
 +
 +Vous remarquerez qu'il faut tout écrire, même les retours à la ligne grâce à '​\n'​.
 +
 +===== On va plus loin =====
 +
 +Mais, si vous allez comprendre !
 +
 +Au lieu d'​enchaîner les actions peu explicites servo2.write puis wait puis ...., on va créer une fonction en langage Arduino qui sera appelée dans la boucle infinie '​loop'​.
 +
 +<​code>​
 +Blockly.Arduino.flycam_switch = function() {
 +  var value_pin = Blockly.Arduino.valueToCode(this,​ '​PIN',​ Blockly.Arduino.ORDER_ATOMIC);​
 +
 +  Blockly.Arduino.includes_['​define_servo'​] = '#​include <​Servo.h>';​
 +  Blockly.Arduino.definitions_['​var_servo'​ + value_pin] = 'Servo servo_'​ + value_pin + ';​\n';​
 +  Blockly.Arduino.definitions_['​flycam_switch_function'​] = 'void flycam_switch(Servo SERVO) {\n'
 +  + ' ​ SERVO.write(180);​\n'​
 +  + ' ​ delay(3000);​\n'​
 +  + ' ​ SERVO.write(0);​\n'​
 +  + ' ​ delay(1000);​\n'​
 +  + '​}';​
 +  var code = '​flycam_switch(servo_'​ + value_pin + '​);​\n';​
 +  return code;
 +};
 +</​code>​
 +
 +On passe d'une boucle peu explicite à un système de fonctions plus simples à lire, debugger ou répéter :
 +
 +{{:​fr:​arduino:​blockly_rduino:​creerblocsmultiling:​f40ef6fd559b2761b1afb53e6efdd11a.png}}{{:​fr:​arduino:​blockly_rduino:​creerblocsmultiling:​1d8ce396ed252b2384a30fc61b4a7f7c.png}}
 +
 +===== Ca ne fonctionne toujours pas ??!! =====
 +
 +C'est normal, il reste un chapitre...
  
  
  • fr/arduino/blockly_rduino/creerblocsmultiling/bloccode.1471734871.txt.gz
  • Dernière modification: 2018/11/18 19:00
  • (modification externe)