Visual basic, arduino

Bonjour à tous,

Alors voila mon problème je suis entrain de faire une application en visual basic avec arduino et j'utilise le serial port pour communiquer. Le problème est que j'arrive à plus de 10 boutons dans mon application et il ne reconnait plus la valeur envoyé par le bouton 10 il effectue celui du bouton 1 comment résoudre le problème merci

[code]#include "origine.h"
#include "moteur_C.h"

int posC =0;

void setup() {
Serial.begin(9600);
}


void loop(){
while (Serial.available() == 0);
int val = Serial.read() - '0'; 

if (val == 1) { 
  origine();

}

if (val == 2) {
 digitalWrite( Z_DIR_PIN   , LOW); 
  moteurC(1);
  posC += 1;
  
}
if (val == 3) {
 digitalWrite( Z_DIR_PIN   , LOW); 
  moteurC(10);
  posC += 10;
}

if (val == 4) {
 digitalWrite( Z_DIR_PIN   , LOW); 
  moteurC(100);
  posC += 100;
}

if (val == 5) {
 digitalWrite( Z_DIR_PIN   , LOW); 
  moteurC(500);
  posC += 500;
}

if (val == 6) {
 digitalWrite( Z_DIR_PIN   , HIGH); 
  moteurC(1);
  posC -= 1;
}
if (val == 7) {
 digitalWrite( Z_DIR_PIN   , HIGH); 
  moteurC(10);
  posC -= 10;
}

if (val == 8) {
 digitalWrite( Z_DIR_PIN   , HIGH); 
  moteurC(100);
  posC -= 100;
}

if (val == 9) {
 digitalWrite( Z_DIR_PIN   , HIGH); 
  moteurC(500);
  posC -= 500;
  
}

if (val == 10) {

 digitalWrite( Z_DIR_PIN   , HIGH);
 moteurC(300);

}

Serial.flush(); 
}

[/code]

Bonjour maxh96,

On ne sait pas trop ce que tu envois comme commande en VB, mais vu la lecture sur le port série "val = Serial.read() - '0';", tu t'attend à recevoir un caractère de '0' à '9'. Au dessus de '9' c'est deux caractères.

Tu pourrais très bien envoyer une lettre de 'A' à 'Z', cela fait 26 boutons.. Il y a bien d'autres possibilités.

Roger.

Comme dit bilbo, le Serial.read lit le premier caractère dispo dans le buffer. Quand tu envoie 2 par exemple, il lit bien 2.

Par contre si tu envoie 10 sur le serial, il va être stocké dans le buffer. Serial.read va lire le premier caractère du buffer, soit 1. C'est pourquoi ton programme applique effectue ce qui est lié au bouton 1.

Regarde de ce coté:

https://www.arduino.cc/en/Reference/ParseInt