Faire un algorigramme avec Flowcode à partir d'un code Arduino

Bonjour, on m’a donné un algorithme sous Arduino et je dois faire un algorigramme expliquant clairement le fonctionnement de cet algorithme. Cependant, j’ai du mal à comprendre cet algorithme donc je ne sais pas quoi mettre sur mon algorigramme.

Voilà le programme :

#include <SoftwareSerial.h>
#include <DmxSimple.h>
char cmd[4] = {'*','*','*','*'};
SoftwareSerial btSerial(6, 7);
int i,nb = 0;

void setup()
{
  DmxSimple.usePin(3);
  DmxSimple.maxChannel(6);
  setupBlueToothConnection();
  Serial.begin(9600);
  Serial.print("DMX prêt !");
}

void loop()
{
//On récupère les caractères sur la liaison série PC
  if (Serial.available())
  {
    nb=0;
    for (i=0;i<4;i++)
    {
      if (Serial.available())
      {
        cmd[i] = Serial.read();
      }
      else
      {
        cmd[i] = '*'; 
      }    
    }
    for (i=1;i<4;i++)
    {
      if (cmd[i]!='*')
      {
        nb = 10*nb + (cmd[i]-'0'); 
      }
    }
  }
  Serial.flush();
// Ou on récupère les caractères sur la liaison série bluetooth
  if (btSerial.available())
  {
    nb=0;
    for (i=0;i<4;i++)
    {
      if (btSerial.available())
      {
        cmd[i] = btSerial.read();
      }
      else
      {
        cmd[i] = '*'; 
      }    
    }
    for (i=1;i<4;i++)
    {
      if (cmd[i]!='*')
      {
        nb = 10*nb + (cmd[i]-'0'); 
      }
    }
  }
  btSerial.flush(); 
  if (nb>=0 and nb<=255)
  {
    Serial.println(cmd[0]);
    Serial.println(nb);
//On traite les données pour le dmx
    switch (cmd[0])
    {
      case 'C':
        DmxSimple.write(3,nb);
        delay(25); 
        break;
      case 'G':
        DmxSimple.write(2,nb);
        delay(25);
        break;
      case 'P':
        DmxSimple.write(4,nb);
        delay(25);
        break;
      case 'T':
        DmxSimple.write(5,nb);
        delay(25);
        break;
      default :
        break;
    }
  }
}

void setupBlueToothConnection()
{
  btSerial.begin(38400); //Set BluetoothBee BaudRate to default baud rate
  btSerial.print("\r\n+STWMOD=0\r\n"); //set the bluetooth work in slave mode
  btSerial.print("\r\n+STNA=LLGBT\r\n"); //set the bluetooth name 
  btSerial.print("\r\n+STPIN=1234\r\n");//Set SLAVE pincode
  btSerial.print("\r\n+STOAUT=1\r\n"); // Permit Paired device to connect me
  btSerial.print("\r\n+STAUTO=0\r\n"); // Auto-connection should be forbidden here
  delay(2000); // This delay is required
  btSerial.print("\r\n+INQ=1\r\n"); //make the slave bluetooth inquirable 
  Serial.println("The slave bluetooth is inquirable!");
  delay(2000); // This delay is required
  btSerial.flush();
}

Le projet final étant de faire une interface de commande pour une lyre de spectacle. Si j’ai bien compris, ce programme a pour but de donner des instructions à la lyre (la faire pivoter, changer la couleur de la lumière projetée, la déplacer, etc) en fonction des caractères qu’elle recevra via un PC ou une application smartphone.

On m’a également donné ce fichier pdf qui explique le fonctionnement de la lyre, c’est obligatoire pour comprendre à quoi correspondent certaines commandes dans l’algorithme (enfin je crois).

pdf_Lyre_TWIST25fr.pdf (282 KB)

Ton code sert à envoyer des commandes DMX, envoyées depuis le clavier du PC à l’arduino par le port série, le détail des commandes utilisables est listé dans ton pdf,
“7.1 Configuration des canaux DMX”
C’est ensuite envoyé en blutooth.

Merci mais comment dois-je commencer pour faire un algorigramme ? Je dois m'occuper uniquement de ce qu'il y a dans la fonction void loop() non ? Et puis je ne comprends pas ce que signifie Serial.available() après la condition if de la boucle. Quelqu'un pourrait-il m'aider ?

Le plus simple, tu commences du début:

Je ne comprends pas quelle est la valeur de la variable i au début de l'algorithme. Comment je fais pour insérer cette variable dans Flowcode, normalement je dois utiliser un calcul non ? Mais là, i n'a pas de valeur donc qu'est-ce que j'utilise comme objet dans Flowcode pour i ?

i est une variable de boucle qui compte de 1 à 4

Que signifie char cmd[4] = {'','','',''}; ?

cmd est un tableau de caractères à 4 éléments, chacun d'entre eux est initialisé à la valeur * (étoile)

Mais je ne comprends pas ce que je dois mettre comme variable dans l'algorigramme, je suis vraiment nul avec Flowcode.

Je suis vraiment perdu je ne comprends vraiment rien. J’ai fais un début d’algorigramme mais j’aimerais que quelqu’un me guide car je ne m’en sort pas.

Voilà ce que j’ai fait :