diff --git a/arduino/act1/act1.ino b/arduino/act1/act1.ino new file mode 100644 index 0000000000000000000000000000000000000000..e5e6f233dffabd1c83bcb8699f9f38e2e2049be5 --- /dev/null +++ b/arduino/act1/act1.ino @@ -0,0 +1,86 @@ +#include <WebUSB.h> + +/** + Creating an instance of WebUSBSerial will add an additional USB interface to + the device that is marked as vendor-specific (rather than USB CDC-ACM) and + is therefore accessible to the browser. + + The URL here provides a hint to the browser about what page the user should + navigate to to interact with the device. +*/ +WebUSB WebUSBSerial(1 /* https:// */, "apollo.antoine-rcbs.ovh/activity_1"); +DFMiniMp3<HardwareSerial, Mp3Notify> mp3(Serial1); + +#define Serial WebUSBSerial + +#define RING_PIN 2 + +String currentCommand = ""; + + + + + +void setup() { + while (!Serial) { + ; + } + Serial.begin(9600); + Serial.println("Arduino connected and answering"); + delay(1000); + Serial.flush(); +} + +void loop() { + if (Serial) { + while (Serial.available() > 0) { + char c = '0'; + while (c != ';') { + c = Serial.read(); + currentCommand += c; + delay(1); + } + runCommand(currentCommand); + currentCommand = ""; + } + Serial.flush(); + } +} + + +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 == "IO") { + turnIO(args[0].toInt(), args[1].toInt()); + } else if (id == "DELAY") { + waitForUnlock(args[0].toInt()); + } +} + +/* FONCTIONS METIER */ + +void turnIO(int pin, boolean val) { + digitalWrite(pin, val); +} + +void waitForUnlock(int delayMs) { + delay(delayMs); + Serial.println("UNLOCK;"); +}