Une nouvelle journée à faire des essais et à imprimer le .pde pour le scruter....
Je cherche le petit "truc" qui fait que l'Arduino n'interprète pas ce qui sort du tableau CNC.
J'ai fini par me dire qu'il fallait tout supprimer et ne garder que la base.
J'ai supprimé:
-le contrôle de redondance cyclique (CRC, j'ai pas encore vraiment compris comment il fonctionne : )
-les contrôle de présences de l'extrudeur ou du fil chaud
-la mesure de température du fil chaud
-le contrôle temporisé d'entrée de flux
-la gestion des moteurs (avant / arrière / stop...)
J'ai gardé :
-la lecture du flux
-l'envoi de confirmation (ACK)
-le placement du flux dans un tableau
-la lecture du tableau
Sur les sorties Digitales j'ai mis 4 leds :
-une qui s'allume dès la mise en tension de l'Arduino (pour être sur que du courant sort et que le programme commence), elle devrait s'éteindre lorsqu'un 'U' est lu et se rallumer au bout de 1 seconde.
-trois autres qui correspondent à 'X', 'Y', 'Z', qui devraient s'allumer à la lecture d'une de ces lettres puis s'éteindre au bout de 2 seconde.
Voici le .pde dans cette configuration :
#define maxLength 261
#define ACK 6 //confirmation de récéption
char buffer[maxLength];
int pin1 = 2 ;
int pin2 = 4 ;
int pin3 = 5 ;
int bufferLength = 0;
int heaterPin = 10;
void setup(){
Serial.begin(19200);
pinMode(pin1,OUTPUT);
pinMode(pin2,OUTPUT);
pinMode(pin3,OUTPUT);
pinMode(heaterPin,OUTPUT);
clearBuffer();
}
void loop(){
digitalWrite(heaterPin,HIGH);
if ( Serial.available() > 0){
char c = 0;
while (c != 10){ // retour de ligne en fin de paquet
c = Serial.read();
buffer[bufferLength] = c;
bufferLength++;
parseBuffer();
Serial.print(ACK,BYTE);//ACK = 006
clearBuffer();
}}}
void clearBuffer(){
bufferLength = 0;
for(int i = 0; i < maxLength; i++){buffer[i] = 0;}
}
void parseBuffer(){
for (int i = 0; i < bufferLength-3; i++){
switch (buffer[i]){
case 'U':
digitalWrite(heaterPin,LOW);
delay(1000);
digitalWrite(heaterPin,HIGH);
break;
case 'X':
digitalWrite(pin1, HIGH);
delay(2000);
digitalWrite(pin1, LOW);
break;
case 'Y':
digitalWrite(pin2, HIGH);
delay(2000);
digitalWrite(pin2, LOW);
break;
case 'Z':
digitalWrite(pin3, HIGH);
delay(2000);
digitalWrite(pin3, LOW);
break;
}
}
}
Le tableau de commande CNC est tel quel (je ne sais pas compiler en java donc pas de modifs pour le moment).
Je charge le fichiers "123block.xml", j'envoie les données (Send Data).
Le xml est lu, l'écran montre l'avancée de "l'usinage".
L'Arduino reçoit et envoie bien des infos, les led RX / TX clignotent comme je l'imaginais au début des essais.
Je m'aperçois que malgré une lecture de quelque chose, mes leds restent en l'état, je n'arrive pas à lire ou interpréter le flux entrant .
Est-ce que quelqu'un aurait une idée du problème ?