J'aimerai savoir s'il est possible de rentrer plusieurs variables dans le port série Arduino à 2 endroits différents du programme.
Par exemple avoir un Serial.available dans la fonction loop et un autre Serial.available dans une fonction que l'on appelle.
C'est dans un cas d'utilisation de moteur pas à pas pour rentrer le nombre de pas voulu et le nombre de fois qu'il fait ce nombre pas entré précédemment.
La fonction Serial.available te renvoie si oui ou non un caractère a été reçu, c'est tout.
Tu peux l'appeler où tu veux mais elle ne fait pas la distinction entre une valeur et une autre puisque pour elle, tout ce qui importe, c'est si un caractère peut être lu ou non avec Serial.read.
Le mieux serait de faire un petit protocole basé sur des chiffres et des lettres.
Par exemple, tu pourrais envoyer : 500P32X
Coté arduino, on aurait le comportement suivant :
Si le caractère est un chiffre, alors on l'enregistre dans un nombre temporaire
Si le caractère est un P, alors on considère le nombre temporaire comme étant un nombre de pas, puis on le remet à 0
Si le caractère est un X, alors on considère le nombre temporaire comme étant un nombre de fois, puis on le remet à 0
J'ai déjà fait un protocole comme celui-ci mais mon problème est qu'à un moment je dois rentrer des informations et ensuite je dois rentrer d'autres informations si une condition se produit, et la valeur que je rentre si la condition se produit s'affecte à mon premier Serial.available.
Je ne trouve pas la méthode pour que mon deuxième Serial.available ne soit pas confondu avec le premier.
Tu n'as qu'à utiliser une variable qui retient le mode dans lequel tu es pour savoir si les caractères reçus sont pour la première ou la seconde condition.
Exemple:
int mode = 0; // Mode de réception: 0= invalid, 1=première condition, 2=seconde condition
void loop() {
// Première condition:
if ( ( mode == 1 ) && Serial.available() ) {
// ...
}
// Seconde condition:
if ( ( mode == 2 ) && Serial.available() ) {
// ...
}
}
Ayant essayé d'utiliser une variable qui retient le mode dans lequel je travaille, selon ce conseil; mode = 0; et dans tous les sens ça à pas l'air de fonctionner correctement.
Pourtant le mode opératoire est le même. Que pense tu de cette approche a trois variables qui s'additionnent entre elles.
void loop() {
int MODE = 0;
int total;
int cardispo1 ;
int cardispo2 ;
int cardispo3 ;
cardispo = Serial.available();
if (( MODE = 1 ) && Serial.available() > 0 ) { // Ici le même procédé conseillé avec mode = 1
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.