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)