texto to ASCII

Hola a todos!
Tengo que transformar un texto en valores ASCII de cada Character.
Por ejemplo "HOLA" y el resultado tiene que ser 72 79 76 65 (El valor ASCII de cada character.
Alguien me puede ayudar con este ejemplo?
Muchas Gracias!

Hasta donde yo se, la unica forma que hay de hacer eso es un poco a mano...

Como este codigo pero completando el resto de letras (lo escribo de cabeza... no está probado...

 switch(key)
     {
     case A:
       Serial.print("65 ");
       break;



     case H:
       Serial.print("79 ");
       break;

     case L:
       Serial.print("76 ");
       break; 

     case O:
       Serial.print("79 ");
       break; 



     default:
       Serial.print("");
       break;
     }

Otra posibilidad que se me ocurre es que como los codigos ASCII tienen números correlativos con relacion a las letras del abecedario... quizá se le pueda sumar "X" numero a algún valor de las letras... o quizá sea mas sencillo utilizar el codigo del post anterior...

Un string, en C, es una cadena asciiz: un array de elementos de tipo char, terminado en un elemento que contiene un valor 0. De esta manera, si tienes la variable key, declarada con una linea como

char key[];

puedes obtener los valores ascii de cada letra con el siguiente bucle:

#include <string.h>
.
.
.
for (f=0;f<strlen(key);f++)
Serial.println(key[f],DEC);

no lo he probado, pero deberia de funcionar.

Muchas gracias por el consejo, ha ido bien, pero tengo otra pequeña duda.

este es el programa

#include <string.h>
char key[9] = "Profytec";
byte f=0;
byte g=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
for (f=0; f<strlen(key); f++)
{
byte g=(key[f],DEC);
Serial.println(key[f],DEC);
delay(300);
}

}

intento atribuir a este variable byte g el valor.. y no se como hacerlo para que me funciona bien...
si cambio la linea por Serial.println(g); no aparece los valores ascii
pero con Serial.println(key, [f],DEC); funcciona corecto..

Pues si que me he complicado yo la vida!!! :wink:

Serial.println(g,DEC);

el modificador DEC es para escribir el valor decimal del primer argumento. Si se omite, se escribe el caracter ascii correspondiente.

Para asignar el valor, simplemente escribe g=(byte)key[f]
o, si quieres simplificar, declara g del siguiente modo:
char g;
(en realidad es el mismo tipo byte y char: 1 byte). Si lo haces asi, no es necesario que uses el operador de ahormado (byte).

Si no te funciona el casting como te dice Pofenas, prueba con g=byte(key[f]).

Otra cosa. Si estás utilizando la librería string únicamente por la función strlen, hay otra opción que te ahorrará memoria. Te la ilustro a continuación con un ejemplo:

char Texto[] = "Hola"; //un texto cualquiera
void ProcesarValorCaracter(byte val) //funcion de ejemplo que hace cosas en función del valor que se le pasa
{
  if (val == 72) //'H'
    digitalWrite(13, HIGH);
  if (val == 97) //'a'
    digitalWrite(13, LOW);
}
void setup()
{
  char* pC; //Puntero a char
  char C; //Un caracter
  byte Valor; //Valor de c
  pinMode(13, OUTPUT); //El pin del LED como salida
  pC = Texto; //En pC "echamos" la dirección del array Texto
  while ((C = *pC) != 0) //Echamos en C el contenido de donde apunta pC. Esto incrementa a su vez pC. Luego evaluamos si C no es /0 (caracter nulo, el terminador de una cadena).
  {   
      Valor=byte(C);
      ProcesarValorCaracter(Valor);
  }
}
void loop()
{
}

Si necesitas que te lo explique detalladamente, dímelo.

1.000.000 Gracias por la Ayuda, le agradesco a todos y precisamente
a Pofenas y Perro!!! [smiley=vrolijk_26.gif]
Tienes que enterderme.. soy novato en el mundo Arduino tengo solo
2 messes desde coando tengo en mano un arduino y primera vez cuando estoy programando en IDE y C.
Mi mundo era BASIC y COD MACHINE Z80.. yep.. los años 80... GENS MONS
Gracias!