diff --git a/activity_1/toolbox.xml b/activity_1/toolbox.xml index 8eca1b88a7cc67205cc32d1cae25ee5cd31a8a65..d4bc946bf4fe3a7eb4826d1a3670c79540dcc637 100644 --- a/activity_1/toolbox.xml +++ b/activity_1/toolbox.xml @@ -1,30 +1,48 @@ <xml xmlns="https://developers.google.com/blockly/xml" id="toolbox" style="display: none"> - <category name="Arduino" colour="#a5745b"> - <block type="sendtoarduino"></block> - <block type="turn_led"> - <field name="val">on</field> - </block> - <block type="arduino_wait"> - <value name="time"> - <block type="math_number"> - <field name="NUM">1</field> - </block> - </value> + <category name="Actions" colour="#a5745b"> + <block type="load_fuel"> + <field name="fuel_type">0</field> + <field name="stage">1</field> </block> + <block type="cool_circuit"></block> + <block type="fix_leak"></block> + <block type="pause_launch"></block> + <block type="go_lift"></block> </category> - <category name="Texte" colour="#5b80a5"> - <block type="text"> - <field name="TEXT"></field> + <category name="Lecture capteurs" colour="#5ba58c"> + <block type="get_circuit_temperature"></block> + <block type="is_tank_full"> + <field name="fuel_type">0</field> + <field name="stage">1</field> + </block> + <block type="is_leak_detected"></block> + <block type="is_computer_ok"></block> + </category> + <category name="Logique" colour="#5b80a5"> + <block type="controls_if"></block> + <block type="controls_if"> + <mutation else="1"></mutation> + </block> + <block type="logic_compare"> + <field name="OP">EQ</field> + </block> + <block type="logic_compare"> + <field name="OP">LTE</field> + </block> + <block type="logic_operation"> + <field name="OP">AND</field> + </block> + <block type="logic_negate"></block> + <block type="logic_boolean"> + <field name="BOOL">TRUE</field> </block> </category> - <category name="Variables" colour="#a55b80" custom="VARIABLE"></category> <category name="Boucles" colour="#5ba55b"> - <block type="controls_repeat_ext"> - <value name="TIMES"> - <shadow type="math_number"> - <field name="NUM">10</field> - </shadow> - </value> + <block type="controls_whileUntil"> + <field name="MODE">WHILE</field> + </block> + <block type="controls_flow_statements" disabled="true"> + <field name="FLOW">BREAK</field> </block> </category> </xml> \ No newline at end of file diff --git a/activity_4/main-script.js b/activity_4/main-script.js index db485796a89ed382240924c686bf11b5202c2d59..c3b68b4870f963abe6c416e1b76c2fc25e92c4d2 100644 --- a/activity_4/main-script.js +++ b/activity_4/main-script.js @@ -16,6 +16,16 @@ function init_var() { } +function displayConsignes(id) { + var x = document.getElementsByClassName("consignes"); + var i; + for (i = 0; i < x.length; i++) { + x[i].style.display = "none"; + } + var consignesDiv = document.getElementById(id); + consignesDiv.style.display = 'block'; +} + displayConsignes("desc_1"); diff --git a/res/activity_functions.js b/res/activity_functions.js index cc2fccb240a035f95ecad085d711417cfcd5b76c..686a508a5b0ecde7f389d4babdaaa359c037f37f 100644 --- a/res/activity_functions.js +++ b/res/activity_functions.js @@ -36,15 +36,7 @@ function runCode() { /************************************ FONCTIONS DE COMMUNICATION ARDUINO ************************************/ - function displayConsignes(id) { - var x = document.getElementsByClassName("consignes"); - var i; - for (i = 0; i < x.length; i++) { - x[i].style.display = "none"; - } - var consignesDiv = document.getElementById(id); - consignesDiv.style.display = 'block'; - } + //Envoie ce string à l'Arduino function sendString(str) { if (port !== undefined) { diff --git a/res/blocks/arduino_blocks_def.js b/res/blocks/arduino_blocks_def.js index 5ce4de84e6d1a58e067047d7e6ea07f314b63a30..e924f07b9033cd50f10e083ff38de5461698187c 100644 --- a/res/blocks/arduino_blocks_def.js +++ b/res/blocks/arduino_blocks_def.js @@ -57,6 +57,118 @@ Blockly.Blocks['turn_io'] = { } }; +/* ACT 1*/ + +Blockly.Blocks['load_fuel'] = { + init: function() { + this.appendDummyInput() + .setAlign(Blockly.ALIGN_CENTRE) + .appendField("Charger du") + .appendField(new Blockly.FieldDropdown([["RP1 (Kérosène)","0"], ["LH2 (Hydrogène)","1"], ["LOX (Oxygène)","2"]]), "fuel_type") + .appendField("dans l'étage") + .appendField(new Blockly.FieldNumber(0, 1, 3, 1), "stage"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(0); + this.setTooltip("Charge du carburant d'un type donné dans un étage donné"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['cool_circuit'] = { + init: function() { + this.appendDummyInput() + .appendField("Refroidir les circuits LOX et LH2"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(0); + this.setTooltip("Permet de refroidir les circuits pour charger le carburant"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['get_circuit_temperature'] = { + init: function() { + this.appendDummyInput() + .appendField("température LOX et LH2 (°C)"); + this.setOutput(true, "Number"); + this.setColour(230); + this.setTooltip("Donne la température des circuits de LOX et LH2"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['is_tank_full'] = { + init: function() { + this.appendDummyInput() + .appendField("le") + .appendField(new Blockly.FieldDropdown([["RP1 (Kérosène)","0"], ["LH2 (Hydrogène)","1"], ["LOX (Oxygène)","2"]]), "fuel_type") + .appendField("est plein à l'étage") + .appendField(new Blockly.FieldNumber(0, 1, 3, 1), "stage"); + this.setOutput(true, "Boolean"); + this.setColour(230); + this.setTooltip("Est-ce que ce réservoir de carburant est plein ?"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['is_leak_detected'] = { + init: function() { + this.appendDummyInput() + .appendField("une fuite est présente"); + this.setOutput(true, "Boolean"); + this.setColour(230); + this.setTooltip("Si une fuite est détectée"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['is_computer_ok'] = { + init: function() { + this.appendDummyInput() + .appendField("les systèmes électroniques fonctionnent"); + this.setOutput(true, "Boolean"); + this.setColour(230); + this.setTooltip("Vérifie que toute l'informatique marche"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['fix_leak'] = { + init: function() { + this.appendDummyInput() + .appendField("Envoyer une équipe pour réparer la fuite"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(0); + this.setTooltip("Permet de refroidir les circuits pour charger le carburant"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['pause_launch'] = { + init: function() { + this.appendDummyInput() + .appendField("Mettre en pause le lancement"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(0); + this.setTooltip("Met en pause le décompte de lancement le temps de réparer la panne"); + this.setHelpUrl(""); + } +}; + +Blockly.Blocks['go_lift'] = { + init: function() { + this.appendDummyInput() + .appendField("Faire monter l'ascenseur avec les astronautes"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(0); + this.setTooltip("Fait monter les 3 astronautes au 320e étage pour embarquer dans la fusée"); + this.setHelpUrl(""); + } +}; /* ACT 2*/ diff --git a/res/blocks/arduino_blocks_gen.js b/res/blocks/arduino_blocks_gen.js index 288295e924b0e269cde5fc62c53cf7e6842fc61f..0d54254ed7572687ccd5699bc28f6104f1c344a6 100644 --- a/res/blocks/arduino_blocks_gen.js +++ b/res/blocks/arduino_blocks_gen.js @@ -30,8 +30,69 @@ Blockly.JavaScript['turn_io'] = function(block) { +/* ACTIVITE 1 */ +Blockly.JavaScript['load_fuel'] = function(block) { + var dropdown_fuel_type = block.getFieldValue('fuel_type'); + var number_stage = block.getFieldValue('stage'); + // TODO: Assemble JavaScript into code variable. + var code = '...;\n'; + return code; +}; + +Blockly.JavaScript['cool_circuit'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...;\n'; + return code; +}; + +Blockly.JavaScript['get_circuit_temperature'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...'; + // TODO: Change ORDER_NONE to the correct strength. + return [code, Blockly.JavaScript.ORDER_NONE]; +}; + +Blockly.JavaScript['is_tank_full'] = function(block) { + var dropdown_fuel_type = block.getFieldValue('fuel_type'); + var number_stage = block.getFieldValue('stage'); + // TODO: Assemble JavaScript into code variable. + var code = '...'; + // TODO: Change ORDER_NONE to the correct strength. + return [code, Blockly.JavaScript.ORDER_NONE]; +}; + +Blockly.JavaScript['is_leak_detected'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...'; + // TODO: Change ORDER_NONE to the correct strength. + return [code, Blockly.JavaScript.ORDER_NONE]; +}; + +Blockly.JavaScript['is_computer_ok'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...'; + // TODO: Change ORDER_NONE to the correct strength. + return [code, Blockly.JavaScript.ORDER_NONE]; +}; +Blockly.JavaScript['fix_leak'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...;\n'; + return code; +}; + +Blockly.JavaScript['pause_launch'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...;\n'; + return code; +}; + +Blockly.JavaScript['go_lift'] = function(block) { + // TODO: Assemble JavaScript into code variable. + var code = '...;\n'; + return code; +}; /* ACTIVITE 2 */