j' ai voulu tester le code de Gromain59, ça compile, ça téléverse mais ça ne veux pas prendre la trame: D/0/50/F ( avec l' espace avant le D ).
/*GRADATEUR 8 CANAUX v0.1
TRAME ATTENDUE: 'D'/'numero de sortie'/'consigne'/'F'
n, Canal0 sur la PIN 8
n, Canal1 sur la PIN 0
n, Canal2 sur la PIN 0
n, Canal3 sur la PIN 0
n, Canal4 sur la PIN 0
n, Canal5 sur la PIN 0
n, Canal6 sur la PIN 0
n, Canal7 sur la PIN 0
code inconnu
code inconnu
code inconnu
code inconnu
code inconnu
code inconnu
code inconnu
*/
J' ai essayé plusieurs façon d' écrire la trame, mais le moniteur série ne veut rien savoir...
Je me rappelle bien des travaux de Gromain59, mais ça doit faire au bas mot 2 ans qu'il fréquente plus le forum. Imagine bien qu'on connait pas tous les topics par coeur et qu'un lien pour savoir de quoi tu parles ne serait pas de trop ....
en début de la fonction lecture() ajoute un delay(5). En fait le traitement est plus rapide que l'arrivée de l'information, ce qui explique ce découpage de la trame et du coup sa non reconnaissance.
Sinon pour l’initialisation de chaine de caractère, perso je fais toujours un memset, une bonne habitude à prendre :
int lecture(){
delay(5);
char buf[15];
memset(buf,NULL,15);
weetoz:
Et du coup, je me rends compte que la lib Mstimer2 apparait bien en orange sur le sketch, ce qui n' est pas le cas de la lib TimerOne et stdio.h...
Ca ne veut rien dire : la couleur se met si un fichier KEYWORD a été crée ou pas par l'auteur de la lib mais c'est purement esthétique. Du moment que ça compile ça veut dire que c'est bien écrit
Par contre tu dis que tu envois "D/000/050/F", rassure moi, tu n'écris pas réellement ?
triactest.ino: In function 'void controle_canaux()':
triactest.ino:285: warning: operation on 'c2' may be undefined
triactest.ino: In function 'int lecture()':
triactest:351: error: 'consigne' was not declared in this scope
triactest.ino:328: warning: unused variable 'timeout'
Pourtant déclarer ici:
typedef struct Canal Canal;
struct Canal
{
int consigne; // consigne actuelle
int consigne_cible; // consigne niveau de canal (0=100%, 50=0%)
int compteur_transition; // temps de transition lors d'un changement niveau de canal (par pas de 10 ms) ex: 2 x 50 cycles de 10ms= 1s de transition
int compteur_transition_courant; // compte le nombre de transition
int sortie; // affecte une pin pour chaque canal.
char mnemo[16]; // mnemonique de la variable
};
J' ai essayé sans le point virgule après l' accolade fermante, mais ça coince à la ligne suivante.