Recepcion de datos visual Basic a Arduino

hola
mi problema es el siguiente. al enviar un par de datos por el puerto serial en el que el primero selecciona el pin de salida de arduino, y el segundo el estado logico de esta.
EJ : 81
pin 8 y en estado HIGH

no he logrado que arduino reconozca la seleccion del pin.
el programa que tengo es el siguiente.

char datain,datain2;



void setup(){
  Serial.begin(9600);
  pinMode(8,OUTPUT);
  Serial.flush();
}
void loop(){
  while(Serial.available()>0){
    datain=Serial.read();          //leo el primer dato
    delay(100);
    datain2=Serial.read();         //leo el segundo dato

  } 

  if(datain2=='1'){                //si el segundo dato es 1 (HIGH)
    digitalWrite(datain,HIGH);     //deberia aqui el pin "datain" ponerlo en HIGH
  }
  if(datain2=='0'){
    digitalWrite(datain,LOW);
  }
}

el punto es que no logro que la variable datain sea 8 para que el pin 8 se encienda, sino que me reconoce un 56, que es el ascii del 8

alguien sabe como trasformar la variable de ascii a decimal?
gracias :wink:

Hola,

Si estas seguro que son numeros, ASCII_RECIBIDO-ASCII_DE_CERO te dara tu numero.
Ej: mi_numero=datain-48

48 es el ASCII del 0

De todas formas, en el while estas leyendo 2 bytes, y puede que no los hayas recibido. Es decir, estas comprobando que Serial.Available>0, y lees 2 datos, y puede que no tengas 2 bytes....

Saludos :wink:

Igor R.

muy buena idea igor. (que simple era... restar 48) jaja
con el asunto del serial.available..
condicionando en vez de un while a un

If (Serial.Available=2){

}

asi aseguro que en el buffer existan esperando 2 bytes para leer