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 */