O Site do Hardware Livre - OSHW

Práticas e código de exemplo para string de texto ou string com arduino uno - Parte 3 (MIC178S)

Continuamos com esta série iniciada no MIC176 e MIC177 apresentando novas práticas e exemplos para trabalhar com textos no Arduino uno. Esta é a última parte desta série.

MIC033S

 

SUBSTITUIR UMA STRING DENTRO DE OUTRA STRING.

    Para substituir uma string por outra, podemos usar a função: string.replace(substring1, substring2). O parâmetro substring1 é a sequência a ser procurada e o parâmetro substring2 é a sequência de substituição. A função substituirá todas as correspondências que encontrar do valor contido no parâmetro substring1.

   No programa a seguir, usamos essas funções e elas podem ser encontradas no menu: Arquivo-> Exemplos-> Strings-> StringReplace. O fluxograma pode ser observado na Figura 1.

 

 Figura 1. Fluxograma para substituir cadeias
Figura 1. Fluxograma para substituir cadeias

 

 

void setup() {
  // Abra a comunicação serial e espere a porta abrir:
  Serial.begin(9600);
  while(!Serial) {
    ; // espera que a porta serial se conecte. Necessário apenas para porta USB nativa
  }
 
  // envie uma introdução:
  Serial.println("\n\nString replace: \n");
  Serial.println();
}
 
void loop() {
  String stringOne = "";
  Serial.println(stringOne);
  // replace() altera todas as instâncias de uma substring com outra:
  // primeiro, faça uma cópia da string original:
  String stringTwo = stringOne;
  // então execute as substituições:
  stringTwo.replace("<", "
  // imprime o original:
  Serial.println("Original string:" + stringOne);
  // e imprima a string modificada:
  Serial.println("String modificada:" + stringTwo);
 
  // você também pode usar replace() em caracteres únicos:
  String normalString = "bookkeeper";
  Serial.println("normal:" + normalString);
  String leetString = normalString;
  leetString.replace('o', '0');
  leetString.replace('e', '3');
  Serial.println("l33tspeak:" + leetString);
 
  // não faz nada enquanto verdadeiro:
  while(true);
}

 

 

VERIFICAR SE UMA STRING COMEÇA (startWith) OU TERMINA COM (endsWith).

   Para verificar se uma string começa com uma certa string, podemos usar a função: string.startsWith(string2). Se a string começar com o valor contido no parâmetro string2, a função retornará true(true), caso contrário, retorna false(false). Também podemos verificar se termina com uma determinada string. Para isso, podemos usar a função: string.endsWith(string2).

   Se a string terminar com o valor contido no parâmetro string2, a função retornará true(true), caso contrário, retornará false(false). O programa a seguir faz uso dessas funções e pode ser encontrado no menu: Arquivo-> Exemplos-> Strings-> StringsStartsWithEndsWith.

 

void setup() {
  // Abra a comunicação serial e espere a porta abrir:
  Serial.begin(9600);
  while(!Serial) {
    ; // espera que a porta serial se conecte. Necessário apenas para porta USB nativa
  }
 
  // envie uma introdução:
  Serial.println("\n\nString startsWith() e endsWith():");
  Serial.println();
}
 
void loop() {
  // startsWith() verifica se uma String começa com uma substring específica:
  String stringOne = "HTTP / 1,1 200 OK";
  Serial.println(stringOne);
  if(stringOne.startsWith("HTTP / 1.1")) {
    Serial.println("Servidor usando http versão 1.1");
  }
 
  // você também pode procurar por startsWith() em uma posição de deslocamento na string:
  stringOne = "HTTP / 1,1 200 OK";
  if(stringOne.startsWith("200 OK", 9)) {
    Serial.println("Obteve um OK do servidor");
  }
 
  // endsWith() verifica se uma String termina com um caractere específico:
  String sensorReading = "sensor =";
  sensorReading + = analogRead(A0);
  Serial.print(sensorReading);
  if(sensorReading.endsWith("0")) {
    Serial.println(". Esta leitura é divisível por dez");
  } mais {
    Serial.println(". Esta leitura não é divisível por dez");
  }
 
  // não faz nada enquanto verdadeiro:
  while(true);
}

 

 

COMO OBTER UM SUBSTRING DE UMA STRING.

   Para obter uma substring de uma string, podemos usar a função: string.substring(from). O parâmetro 'from' recebe o índice de onde obter a substring. A função retorna a substring. A função anterior retorna a substring encontrada do índice até o final da string.

   Se quisermos obter uma substring, mas com um certo tamanho, podemos usar a função: string.substring(from, to). As funções anteriores retornam a substring, incluindo o caractere encontrado no índice. O programa a seguir faz uso dessas funções e pode ser encontrado no menu: File-> Examples-> Strings-> StringSubString. O fluxograma pode ser visto na Figura 2.

 

 Figura 2 - Fluxograma para encontrar substrings
Figura 2 - Fluxograma para encontrar substrings

 

 

void setup() {
  // Abra a comunicação serial e espere a porta abrir:
  Serial.begin(9600);
  while(!Serial) {
    ; // espera que a porta serial se conecte. Necessário apenas para porta USB nativa
  }
// envie uma introdução:
  Serial.println("\n\nString substring():");
  Serial.println();
}
 
void loop() {
  // Configurar uma string:
  String stringOne = "Tipo de Conteúdo: text / html";
  Serial.println(stringOne);
 
  // substring(index) procura a substring da posição do índice até o final:
  if(stringOne.substring(19) == "html") {
    Serial.println("É um arquivo html");
  }
  // você também pode procurar por uma substring no meio de uma string:
  if(stringOne.substring(14, 18) == "texto") {
    Serial.println("É um arquivo baseado em texto");
  }
 
  // não faz nada enquanto verdadeiro:
  while(true);
}

 

CONVERTER UMA STRING EM UM VALOR NUMÉRICO INTEIRO (AO INT).

   Para converter uma string em um valor inteiro, podemos usar a função: string.toInt(). A função retorna um tipo de dados longo que é um inteiro. Se a string não iniciar com um dígito, a função retornará um zero('0'). O programa a seguir lê a porta serial até que a tecla enter seja pressionada e converta os caracteres em um número se os caracteres forem dígitos. O programa pode ser encontrado no menu: File-> Examples-> Strings-> StringToInt.

 

String inString = ""; // string para conter entrada
 
void setup() {
  // Abra a comunicação serial e espere a porta abrir:
  Serial.begin(9600);
  while(!Serial) {
    ; // espera que a porta serial se conecte. Necessário apenas para porta USB nativa
  }
 
  // envie uma introdução:
  Serial.println("\n\nString toInt():");
  Serial.println();
}
 
void loop() {
  // Ler entrada serial:
  while(Serial.available()> 0) {
    int inChar = Serial.read();
    if(isDigit(inChar)) {
      // converte o byte recebido em char e adiciona-o à string:
      inString += (char) inChar;
    }
    // se você pegar uma nova linha, imprima a string, então o valor da string:
    if(inChar == '\n') {
      Serial.print("Valor:");
      Serial.println(inString.toInt());
      Serial.print("String:");
      Serial.println(inString);
      // limpe a string para nova entrada:
      inString = "";
    }
  }
}

 

ANÁLISE DE CARACTERES.

   A biblioteca do Arduino possui instruções específicas para análise de caracteres. Isso é muito útil quando recebemos informações de texto e queremos saber sobre seu formato ou composição. A seguir, uma lista das funções disponíveis para análise de caracteres:

 

isAlphaNumeric(thisChar)

Descrição: Analise se um caractere é alfanumérico.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isAlpha(thisChar)

Descrição: Analise se o caractere é alfabético.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isAscii(thisChar)

Descrição: Analise se o caractere é ASCII.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isWhitespace(thisChar)

Descrição: Analise se o caractere está em branco.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isControl(thisChar)

Descrição: Analise se é um caracter de controle.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isDigit(thisChar)

Descrição: Analise se o caractere é um dígito.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isGraph(thisChar)

Descrição: Analise o personagem é gráfico.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isLowerCase(thisChar)

Descrição: Analise se o caractere é minúsculo(minúscula).

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isPrintable(thisChar)

Descrição: Analise se o personagem pode ser impresso.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isPunct(thisChar)

Descrição: Analise se o caractere é um sinal de pontuação.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isSpace(thisChar)

Descrição: Analise se é o caráter do espaço.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isUpperCase(thisChar)

Descrição: Analise se o caractere é maiúsculo.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

isHexadecimalDigit(thisChar)

Descrição: Analise se é um caractere de dígito hexadecimal.

Parâmetros: thisChar: O caractere a ser analisado.

Retorno: Verdadeiro ou falso.

 

   O programa a seguir analisa qualquer caractere recebido pela porta serial e indica ao usuário a classe de caractere. O programa pode ser encontrado no menu: File-> Examples-> Strings-> CharacterAnalysis.

 

 

void setup() {
  // Abra a comunicação serial e espere a porta abrir:
  Serial.begin(9600);
  while(!Serial) {
    ; // espera que a porta serial se conecte. Necessário apenas para porta USB nativa
  }
 
  // envie uma introdução:
  Serial.println("envie qualquer byte e eu lhe direi tudo o que puder");
  Serial.println();
}
 
void loop() {
  // obtém quaisquer bytes recebidos:
  if(Serial.available()> 0) {
    int thisChar = Serial.read();
// diga o que foi enviado:
    Serial.print("Você me enviou: \ '");
    Serial.write(thisChar);
    Serial.print("\ 'Valor ASCII:");
    Serial.println(thisChar);
 
    // analisa o que foi enviado:
    if(isAlphaNumeric(thisChar)) {
      Serial.println("é alfanumérico");
    }
    if(isAlpha(thisChar)) {
      Serial.println("é alfabético");
    }
    if(isAscii(thisChar)) {
      Serial.println("é ASCII");
    }
    if(isWhitespace(thisChar)) {
      Serial.println("é espaço em branco");
    }
    if(isControl(thisChar)) {
      Serial.println("é um caractere de controle");
    }
    if(isDigit(thisChar)) {
      Serial.println("é um dígito numérico");
    }
    if(isGraph(thisChar)) {
      Serial.println("é um caractere imprimível que não é espaço em branco");
    }
    if(isLowerCase(thisChar)) {
      Serial.println("é minúscula");
    }
    if(isPrintable(thisChar)) {
      Serial.println("é imprimível");
    }
    if(isPunct(thisChar)) {
      Serial.println("é pontuação");
    }
    if(isSpace(thisChar)) {
      Serial.println("é um caractere de espaço");
    }
    if(isUpperCase(thisChar)) {
      Serial.println("é maiúsculo");
    }
    if(isHexadecimalDigit(thisChar)) {
      Serial.println("é um hexadecimaldigit válido(ou seja, 0 - 9, a - F ou A - F)");
    }
 
    // adicione algum espaço e peça outro byte:
    Serial.println();
    Serial.println("Dê-me outro byte:");
    Serial.println();
  }
}

BUSCAR DATASHEET


N° do componente 

(Como usar este quadro de busca)

Opinião

Mês de Muito Trabalho (OP197)

   Estamos em setembro de 2018 e continuamos com nosso trabalho, realizando palestras, viagens, escrevendo artigos, livros e muito mais. Em nossas duas últimas palestras, uma na Uninove e a outra na ETEC Albert Einstein, ambas de São Paulo, pudemos constatar de forma bastante acentuada um fato importante , que constantemente salientamos em nosso site desde seu início. 

Leia mais...

Talento
Com o talento faz-se o que se quer. Com o gênio, faz-se o que se pode. (Avec le talnt on fait ce quon veut. Avec le gênie on fai ce quon peut.)
Ingres (1780 - 1867) - Diário - Ver mais frases


Instituto Newton C Braga
Entre em contato - Como Anunciar - Políticas do Site

Apoio Social
Lions Clube de Guarulhos Sul SOS Mater Amabilis
Advertise in Brazil
If your business is Electronics, components or devices, this site is the correct place to insert your advertisement (see more)