Bonjour à tous, je suis actuellement en Terminale STI2D et je bloque sur mon projet BAC qui est sur une imprimante 3D et notamment l'interprétation de commandes par les moteurs pas à pas.
Je souhaiterai envoyer dans le moniteur une suite de commande comme par exemple V010X0010Y0100.
dans cette commande je voudrais que lorsque le programme voit la lettre V, il prenne le nombre qui vient après dans la chaîne (ce n'est pas forcement le nombre qui est en haut,cela peut être n'importe quel nombre) et l’intègre à la vitesse des moteurs.
Ensuite lorsque le programme voit le X, il prenne le nombre à la suite et l’intègre au nombre de pas pour le moteur et ainsi de suite pour le Y.
Mon problème est : je n'arrive pas à mettre cette chaîne dans un tableau puis de la faire analyser par le programme, cela ne fonctionne pas, les moteurs font n'importe quoi.importe quoi.
/*
#include <string.h>
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_PWMServoDriver.h"
Adafruit_StepperMotor *myMotor1 = AFMS.getStepper(200, 1);
Adafruit_StepperMotor *myMotor2 = AFMS.getStepper(200, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
AFMS.begin(); // create with the default frequency 1.6KHz
//AFMS.begin(1000); // OR with a different frequency, say 1KHz
myMotor1->setSpeed(1000); // 10 rpm
myMotor2->setSpeed(1000);
}
void loop()
{
char comA,comB,comC;
int i;
char s[12];
char varA,varB,varC,varD,varE,varF,varG,varH,varI,varJ,varK;
while(Serial.available())// alors il y a des données à lire
{
for(i=0;i!=13;++i)
{
s[i]=Serial.read();
Serial.println(s[i]);
}
if (s[0]=='V') //vitesse V
{
comA,varA,varB,varC=0;
varA=s[1];
varB=s[2];
varC=s[3];
comA=varA*100 + varB*10 + varC*1;
}
Serial.print("s[0] = "); Serial.println(s[0]);
if(s[4]=='X');//si on lit le caractere X
{
comB,varD,varE,varF,varG=0;
varD=s[5];
varE=s[6];
varF=s[7];
varG=s[8];
comB=varD * 1000 + varE * 100 + varF * 10 + varG * 10 ;
myMotor1->step(comB, FORWARD, SINGLE);
myMotor1->setSpeed(comA);
}
if(s[8]=='Y');//si on lit le caractere Y
{
comC,varH,varI,varJ,varK=0;
varH=s[9];
varI=s[10];
varJ=s[11];
varK=s[12];
comC=varH * 1000 + varI * 100 + varJ * 10 + varK * 10 ;
myMotor2->step(comC, FORWARD, SINGLE);
myMotor2->setSpeed(comA);
}
}
}