Adquira estes componentes na Loja do Lab de Garagem

Neste tutorial, vamos mostrar como utilizar e tratar Strings com Arduino.

Às vezes, precisamos tratar dados adquiridos, ou pela internet, ou pela porta serial, ou qualquer outra maneira.

Uma String é nada menos que uma matriz de 1 linha por várias colunas (ou vários caracteres). No Arduino, você pode declarar uma variável como String e não precisar ler caractere a caractere como em muitas linguagens de programação. Ficando assim mais fácil de trabalhar e programar.

Por exemplo, ao utilizar a Serial.read() o dado vem um de cada vez, isto é, caractere a caractere. Para ficar mais fácil de tratar esses dados, guardamos em uma matriz de array e depois colocamos em uma variável String. Agora é só comparar com uma outra string.

Cuidado que todos os caracteres da tabela ASCII são guardados dentro da string! Por exemplo o "enter" (new line - '\n'). Então é necessário colocar o nulo ('\0') no final de cada String.

Vamos usar a programação abaixo para exemplo:

String frase = "Hello World";
String str;
char c;
char matriz[20];
int x=0;

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

void loop()
{
if(Serial.available())
{
do{
c=Serial.read();
matriz[x]=c;
Serial.print(matriz[x],DEC);
x++;
delay(1);      //Delay para o Arduino não perder o dado da Serial
}while(c!='\n');
matriz[x-1]='\0';
Serial.print(matriz);
str=matriz;
if (str==frase)
{
Serial.println("OK");
}

else

{

Serial.println("Erro");

}
}
}

Na programação acima, declaramos uma variável String com "Hello World" e outra String sem nenhum conteúdo. Criamos uma matriz para pegar os caracteres que vem pela porta Serial. Se caso a String da porta Serial for igual a String "Hello World", o Arduino responderá um OK! Caso contrário o Arduino responderá "Erro".

No Serial Monitor, selecione "9600 baud" e "Newline".

Os números representam o código referente ao caractere ASCII. Para ver a tabela de ASCII, clique aqui!

E depois a String "Hello World" que foi digitada pela porta Serial e por fim a resposta de que a String digitada na porta Serial corresponde a String guardada.

E é isso! Esperamos que tenha gostado! Em caso de dúvidas sobre o post, poste aqui mesmo neste blog! Para sugestões de tutoriais, clique aqui! Para ver outros tutoriais e projetos desenvolvidos pela equipe LdG e por outros garagistas, clique aqui e aqui, respectivamente! Até a próxima!

Referências:

http://arduino.cc/

http://arduino.cc/en/Reference/StringObject

 

Exibições: 48781

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

Comentário de gean viana em 21 novembro 2016 às 19:51

Boa noite. Parabéns pelo tutorial. Estou com um projeto e preciso de ajuda. É o seguinte, tenho umas 4 variáveis que preciso que cada uma pegue os seus dados na serial. A ideia é que o usuário digite o valor delas. Tem como isso ser feito usando o Serial.read para cada variável.

Comentário de Angelo Marcelo Kochaki em 3 agosto 2014 às 22:19

Pessoal

Tenho abaixo parte de um código do arduino é uma comunicação via browser. O char c que pega a informação do browser ele vem da seguinte forma por exemplo eu digito 192.168.1.119/S_vdown   ele retorna a seguinte informação na tela do client.print = "GET /S_vdown HTTP/1.1" esse é o valor do char "c". Então o que eu estou tentando fazer e nao consigo é criar uma variavel que peque somente o "S_vdown" eu preciso de uma variável semente com esta parte do texto. Se alguém puder me dar uma luz eu agradeço.

void setup(){
Ethernet.begin(mac, ip); // Inicia o Ethernet
Serial.begin(9600); // Inicia a comunicação Serial
}

void loop(){
EthernetClient client = server.available();// Criar uma conexão de cliente
if (client) {
while (client.connected()){
if (client.available()){
char c = client.read();
client.print(c);

if (readString.length() < 30)// ler caractere por caractere vindo do HTTP


readString += (c);// armazena os caracteres para string

}
if (c == '\n')//se o pedido HTTP terminou
{

readString="";//limpa string para a próxima leitura
client.stop(); // parar cliente
}
}
}
}
}

Comentário de Eduardo Schirmer Martins em 29 agosto 2013 às 18:03

Olá a todos....

Não sei o que acontece, mas copiei, colei o codigo acima, mandei pra dentro do Arduino Uno com o IDE 1.0.5 e o trem nao roda. Digito o texto na serial e ele so me retorna erro.

Agredeço a ajuda.

Comentário de Rogerio A. Filho em 19 dezembro 2012 às 18:17

Me da uma ajuda aquis.. estou recebendo pelo Ethernet, "GET /?parametro=valor&_=1355946144421 HTTP/1.1"

Preciso de ajuda para poder pegar o parametro e o valor, para executar as ações..

como faço para pegar o parametro e o valor dele?

obrigado.

Comentário de Joel Eduardo em 27 agosto 2012 às 23:41

Gostei, era exatamente a minha duvida, eu queria que as informações recebidas fossem guardaddas em um array para poder analizar de acordocom a posição de cada caractere... Agora é so programar!!! VLW

Comentário de Marcio Torres em 3 agosto 2012 às 12:45

Ajudou bastante, agora que sei o caminho ficou mais fácil!

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço