void setup(){
Serial.begin(9600);//inicializar puerto serie a 9600
}
void loop(){
byte i;
i=0;// lo pongo así porque no estoy seguro de que se vaya a reiniciar en cada loop
char texto[100];// la variable en la que voy a almacenar la cadena de texto
while (Serial.available()){//Serial.available devuelve el numero de caracteres que tiene en el buffer. Si no hay nada estará a cero y no se cumplirá la condición
texto[i++]=Serial.read();//si entra, puesto que i en el inicio vale cero irá almacenando los caracteres del buffer en el array de caracteres, que se auto-post-incrementa (i++)
}
byte j;//utilizo una segunda variable para ir recorriendo el array de caracteres
if (i) rota(texto, i);
for (j=0;j<i;j++) Serial.print(texto[j]);//imprimo todos los caracteres(el último no se imprime porque es [NULL]=0x00
if (i) Serial.println("");//Si ha habido impresión i será distinto a 0 e imprimo un salto de línea
}
void rota (char* cadena, byte tamano){
for (byte i=0;i<tamano;i++){
if (cadena[i]>='A' && cadena[i]<='Z') cadena[i]=r13(cadena[i], 'A', 'Z');
else if (cadena[i]>='a' && cadena[i]<='z') cadena[i]=r13(cadena[i], 'a', 'z');
}
}
char r13(unsigned char car, char menor, char mayor){//hago car de tipo unsigned porque puede superar el 0xEF y lo considera negativo
car+=13;
if (car>mayor) car=menor+(car-mayor)-1;
return car;
}
No hay comentarios:
Publicar un comentario