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:
Comentar
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.
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
}
}
}
}
}
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.
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.
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
Ajudou bastante, agora que sei o caminho ficou mais fácil!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por
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)