diff --git a/arduino/act1/act1.ino b/arduino/act1/act1.ino
new file mode 100644
index 0000000000000000000000000000000000000000..0c303f9a1b3c0e1ecab65da14784a71b83449919
--- /dev/null
+++ b/arduino/act1/act1.ino
@@ -0,0 +1,154 @@
+#include <WebUSB.h>
+
+#define IN1_1 2
+#define IN2_1 3
+#define IN3_1 4
+#define IN4_1 5
+
+#define IN1_2 10
+#define IN2_2 16
+#define IN3_2 14
+#define IN4_2 15
+
+#define REED_LH2 6
+#define REED_LOX2 7
+#define REED_RP1 8
+#define REED_LOX1 9
+
+String currentCommand = "";
+unsigned long prevTime = 0;
+
+WebUSB WebUSBSerial(1 /* https:// */, "pole-jeune.pages.clubelek.fr/atelier_igb_apollo/activity_1/");
+#define Serial WebUSBSerial
+
+void loadProp(String tank) {
+  if (tank == "RP1") {
+    digitalWrite(IN1_1, LOW);
+    digitalWrite(IN2_1, HIGH);
+  } else if (tank == "LH2") {
+    digitalWrite(IN3_1, HIGH);
+    digitalWrite(IN4_1, LOW);
+  }
+}
+
+void unloadProp(String tank) {
+  if (tank == "RP1") {
+    digitalWrite(IN1_1, HIGH);
+    digitalWrite(IN2_1, LOW);
+  } else if (tank == "LH2") {
+    digitalWrite(IN3_1, LOW);
+    digitalWrite(IN4_1, HIGH);
+  }
+}
+
+void stopLoading(String tank) {
+  if (tank == "RP1") {
+    digitalWrite(IN1_1, LOW);
+    digitalWrite(IN2_1, LOW);
+  } else if (tank == "LH2") {
+    digitalWrite(IN3_1, LOW);
+    digitalWrite(IN4_1, LOW);
+  }
+}
+
+void runCommand(String command) {
+  //Décomposition de la commande en ID + arguments
+  int curIndex = command.indexOf('_');
+  String id = command.substring(0, curIndex);
+  Serial.print(id);
+  String args[5] = {"0", "0", "0", "0", "0"}; //Max 5 args
+  for (int i = 0; i < 5; i++) {
+    int nextIndex = command.indexOf('_', curIndex + 1);
+    args[i] = command.substring(curIndex + 1, nextIndex);
+    Serial.print(args[i]);
+    curIndex = nextIndex;
+    if (args[i].endsWith(";")) {
+      args[i].remove(args[i].indexOf(';'));
+      break;
+    }
+  }
+  //Lancement des diverses commandes
+  if (id == "LOAD") {
+    loadProp(args[0]);
+  } else if (id == "UNLOAD") {
+    unloadProp(args[0]);
+  } else if (id == "STOP") {
+    stopLoading(args[0]);
+  }
+}
+
+
+void setup() {
+  while (!Serial) {}
+  Serial.begin(9600);
+  Serial.println("Arduino connected and answering");
+
+  pinMode(REED_LH2, INPUT_PULLUP);
+  pinMode(REED_LOX2, INPUT_PULLUP);
+  pinMode(REED_RP1, INPUT_PULLUP);
+  pinMode(REED_LOX1, INPUT_PULLUP);
+
+  pinMode(IN1_1, OUTPUT);
+  pinMode(IN2_1, OUTPUT);
+  pinMode(IN3_1, OUTPUT);
+  pinMode(IN4_1, OUTPUT);
+  pinMode(IN1_2, OUTPUT);
+  pinMode(IN2_2, OUTPUT);
+  pinMode(IN3_2, OUTPUT);
+  pinMode(IN4_2, OUTPUT);
+  delay(1000);
+
+  loadProp("LH2");
+  loadProp("RP1");
+  delay(3000);
+  stopLoading("LH2");
+  stopLoading("RP1");
+  delay(1000);
+  unloadProp("LH2");
+  unloadProp("RP1");
+  delay(3000);
+  stopLoading("LH2");
+  stopLoading("RP1");
+  Serial.flush();
+}
+
+
+void loop() {
+  
+
+  if (millis() - prevTime >= 1000) {
+    Serial.print("REEDS_{LH2 :");
+    Serial.print(digitalRead(REED_LH2));
+    Serial.print(", LOX2 :");
+    Serial.print(digitalRead(REED_LOX2));
+    Serial.print(", RP1 :");
+    Serial.print(digitalRead(REED_RP1));
+    Serial.print(", LOX1 :");
+    Serial.print(digitalRead(REED_LOX1));
+    Serial.println("}");
+    prevTime = millis();
+  }
+  
+  if (digitalRead(REED_LH2)) {
+    stopLoading("LH2");
+  }
+  if (digitalRead(REED_RP1)) {
+    stopLoading("RP1");
+  }
+
+  if (Serial) {
+    while (Serial.available() > 0) {
+      char c = '0';
+      while (c != ';') {
+        c = Serial.read();
+        currentCommand += c;
+        delay(1);
+      }
+      runCommand(currentCommand);
+      currentCommand = "";
+    }
+    Serial.flush();
+  }
+}
+
+
diff --git a/public/activity_1/main-script.js b/public/activity_1/main-script.js
index 909fa9e89ebfbe8e57cc549973308c3ca9e9814e..2244f731d2f95d2865e7966b878564d04decb3a2 100644
--- a/public/activity_1/main-script.js
+++ b/public/activity_1/main-script.js
@@ -1,3 +1,12 @@
 /* Insérer ici les fonctions spécifiques à cette activité. Elles peuvent marcher
 avec les fonctions et variables déjà définies dans 'activity_functions.js' du
 dossier 'res'.*/
+var reedStatus;
+
+var checkReedsInterval = setInterval(function() {
+  if (receivedMsg.startsWith('REEDS')) {
+		reedsStatus = JSON.parse(receivedMsg.split('_')[1])
+        console.log(reedsStatus)
+  }
+}, 250);
+