Bonjour,
Je suis actuellement en train de développer un code me permettant de tester des dispositif en entrant des commande dans le moniteur série. le but est de piloter des multiplexeur, l’Arduino n'étant la que pour lire les commande entrées. Ayant commencé mon développement sur tinkercad, je me retrouve coincé lorsque je le téléverse sur l'IDE.
Je tiens a préciser que je suis loin de maîtriser le langage de programmation Arduino mais que sur tinkercad le programme fonctionne parfaitement. Voici le Programme :
#include <stdio.h>
#include <string.h>
#define LMIN 2
#define LMAX 3
#define SIMU 4
#define EPNO 5
#define EPNF 6
#define EDNF 7
#define DGNO 8
#define DGNF 9
#define POIDS1 10
#define POIDS2 11
#define POIDS3 12
#define coup 13
#define FREQ A1
char Cmde[9];
//On definie le tableau de caractere Cmde.
char text[7];
//On definie le tableau de caractere text.
int aT;
int bT;
int cT;
int dT;
int ValDELAY;
int bP;
int cP;
int dP;
void setup() {
Serial.begin(9600);
pinMode(LMIN, OUTPUT);
pinMode(LMAX, OUTPUT);
pinMode(SIMU, OUTPUT);
pinMode(EPNO, INPUT);
pinMode(EPNF, INPUT);
pinMode(EDNF, INPUT);
pinMode(DGNO, INPUT);
pinMode(DGNF, INPUT);
pinMode(FREQ, INPUT);
pinMode(POIDS1, OUTPUT);
pinMode(POIDS2, OUTPUT);
pinMode(POIDS3, OUTPUT);
pinMode(coup, OUTPUT);
}
void loop() {
while (Serial.available()==0){}
String Saisi = Serial.readStringUntil('\n');
Saisi.toCharArray(Cmde, 9);
// Permet de convertir la String Saisi sous forme de Char.
scanf("%s", Cmde);
Serial.println(Cmde);
// identification de la Commande.
switch (Cmde[0])
{
case 'T': //Cmde commence par T
aT = Cmde[4]-48;
bT = Cmde[5]-48;
cT = Cmde[6]-48;
dT = Cmde[7]-48;
ValDELAY = aT*1000+bT*100+cT*10+dT;
Serial.print("Le Delay vaudra : ");
Serial.println(ValDELAY);
break;
case 'V': // Cmde commence par V
bP = Cmde[4]-48; // Val POIDS3
if (bP == 1){
digitalWrite(POIDS3, HIGH);}
if (bP == 0){
digitalWrite(POIDS3, LOW);}
cP = Cmde[5]-48; // Val POIDS2
if (cP == 1){
digitalWrite(POIDS2, HIGH);}
if (cP == 0){
digitalWrite(POIDS2, LOW);}
dP = Cmde[6]-48; // Val POIDS1
if (dP == 1){
digitalWrite(POIDS1, HIGH);}
if (dP == 0){
digitalWrite(POIDS1, LOW);}
Serial.print("la Boucle Selectionnee est : ");
Serial.print(bP);
Serial.print(cP);
Serial.println(dP);
break;
case 'L': // Cmde commence par L
switch(Cmde[2]){
case 'A': // le 3eme caractere est A soit LMAXI
digitalWrite(LMIN, HIGH);
digitalWrite(coup, LOW);
digitalWrite(LMAX, LOW);
digitalWrite(SIMU, HIGH);
Serial.println("FMAXI mis en place");
break;
case 'I': // le 3eme caractere est I soit LMINI
digitalWrite(LMIN, LOW);
digitalWrite(coup, LOW);
digitalWrite(LMAX, LOW);
digitalWrite(SIMU, HIGH);
Serial.println("FMINI mis en place");
break;
case 'Y': // le 3eme caractere est Y soit LTYPE
digitalWrite(LMIN, LOW);
digitalWrite(coup, LOW);
digitalWrite(LMAX, HIGH);
digitalWrite(SIMU, HIGH);
Serial.println("FTYPE mis en pLace");
break;}
case 'S':
if(!strcmp(Cmde, "SIMU1"))
{
digitalWrite(SIMU, LOW);
Serial.println("Inductance SIMU Prise en compte");
}
if(!strcmp(Cmde, "SIMU0"))
{
digitalWrite(SIMU, HIGH);
Serial.println("Inductance SIMU PAS Prise en compte");
}
break;
case 'C':
digitalWrite(coup, HIGH);
Serial.println("Relai coup actif");
break;
}
if (Cmde[0]!='T'){
delay(ValDELAY);
int text[]={analogRead(FREQ),digitalRead(EPNO),digitalRead(EPNF),digitalRead(EDNF),digitalRead(DGNF), digitalRead(DGNO)};
// Permet d'assembler une Trame.
Serial.print(bP);
Serial.print(cP);
Serial.print(dP);
Serial.print(";");
if (text[0]<1000)
{
Serial.print("0");
}
if (text[0]<100)
{
Serial.print("0");
}
if (text[0]<10)
{
Serial.print("0");
}
Serial.print(text[0]);
Serial.print(";");
for(int i=1; i<=5; i++)
{
Serial.print(text[i]);
Serial.print(";");
}
Serial.println(text[5]);
}
}
Au cas ou vous voudriez tester le code par vous-même, les commandes sont :
-TEMPxxxx (le x représente un chiffre quelconque par exemple: TEMP0500, le délai vaudra 500ms)
-VOIExxx ( ici le x prend la valeur de 1 ou 0 il s'agit de binaire)
-LMINI
-LMAXI
-LTYPE
-SIMU1
-SIMU0
-COUP
Pour toute question n’hésiter pas à les poser. Merci d'avoir pris le temps de lire mon message.