Nesta prática você vai aprender a utilizar com Arduino o…
Arduino – Exibindo e lendo dados da serial
Nesta prática você vai aprender a utilizar o monitor serial da IDE do Arduino para exibir e ler dados digitados.
Um dos principais recursos do Arduino é a comunicação serial (UART), pois é a partir dela que podemos enviar o código para a placa, requisitar informações de sensores e módulos, e enviar comandos para que o Arduino execute uma ação:
A seguir você vai aprender a exibir informações no monitor serial e enviar comandos para o Arduino através da serial.
Se você ainda não instalou a IDE do Arduino, acesse o link abaixo e em seguida retorne para continuar:
Arduino – Instalação e Configuração da IDE no Windows
Exibindo informações no monitor serial:
Para este primeiro procedimento você vai precisar apenas do Arduino com Cabo USB para conectar ao computador. Se ainda não possui o Arduino, você pode adquirir o seu na loja virtual da MasterWalker Shop.
Não será necessário esquema de ligação, pois vamos utilizar o LED conectado ao pino digital 13 do Arduino.
Abaixo está o código que você deve carregar no Arduino. Conecte o Arduino ao computador, abra a IDE, confira a placa e a porta selecionada e carregue o código na placa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int pinoLed = 13; //DEFINE O PINO EM QUE O LED ESTÁ CONECTADO void setup() { pinMode(pinoLed, OUTPUT); //DECLARA O PINO COMO SAÍDA Serial.begin(9600); //INICIALIZA A SERIAL COM TAXA DE 9600 BAUDS } void loop() { digitalWrite(pinoLed, HIGH); //LIGA O LED Serial.println("LED LIGADO"); //IMPRIME O TEXTO NO MONITOR SERIAL delay(3000); //INTERVALO DE 1 SEGUNDO (1000 MILISSEGUNDOS = 1 SEGUNDO) digitalWrite(pinoLed, LOW); //DESLIGA O LED Serial.println("LED DESLIGADO"); //IMPRIME O TEXTO NO MONITOR SERIAL delay(3000); //INTERVALO DE 1 SEGUNDO (1000 MILISSEGUNDOS = 1 SEGUNDO) } |
Terminado o carregamento do código abra o monitor serial para ver as informações em tempo real:
Veja que no monitor serial está sendo exibido o estado atual do LED. A informação é atualizada no monitor de acordo com o intervalo que foi definido no código, no caso, a cada 3 segundos. O código está todo comentado para que você possa ler e entender o que cada linha faz.
Lendo dados na entrada do monitor serial:
Agora o que vamos fazer é enviar um comando ao Arduino através do monitor serial e em resposta ao comando enviado o LED do pino 13 irá acender ou apagar e a informação será apresentada no monitor.
Novamente não vamos precisar de esquema de ligação.
Carregue o código abaixo na placa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
int pinoLed = 13; //DEFINE O PINO EM QUE O LED ESTÁ CONECTADO int status = 0; //VARIÁVEL QUE CONTROLA O STATUS (LIGADO / DESLIGADO) void setup(){ pinMode(pinoLed, OUTPUT); //DECLARA O PINO COMO SAÍDA digitalWrite(pinoLed, LOW); //LED INICIA DESLIGADO Serial.begin(9600); //INICIALIZA A SERIAL COM TAXA DE 9600 BAUDS } void loop(){ char c = Serial.read(); //VARIÁVEL RESPONSÁVEL POR RECEBER O CARACTER DIGITADO NA ENTRADA DE DADOS DO MONITOR SERIAL if (c == 'b'){ //SE CARACTER DIGITADO FOR IGUAL A "b", FAZ if (status == 0){ //SE VARIÁVEL FOR IGUAL A 0(DESLIGADO), FAZ digitalWrite(pinoLed, HIGH); //LIGA O LED status = 1; //VARIÁVEL RECEBE O VALOR 1 (LIGADO) Serial.println("LED LIGADO"); //IMPRIME O TEXTO NO MONITOR SERIAL }else{ //SENÃO, FAZ digitalWrite(pinoLed, LOW); //DESLIGA O LED status = 0; //VARIÁVEL RECEBE O VALOR 0 (DESLIGADO) Serial.println("LED DESLIGADO"); //IMPRIME O TEXTO NO MONITOR SERIAL } } } |
Terminado o carregamento do código abra o monitor serial. No monitor temos o campo para digitar o comando e o botão de ENVIAR está ao lado do campo:
Digite a letra ‘b’ (sem aspas), dê enter ou clique no botão ENVIAR e veja que o LED conectado ao pino 13 vai alterar o estado para ligado e no monitor serial será mostrado esta informação. Digite a letra ‘b’ novamente e o LED será desligado e a informação será mostrada no monitor:
Note que utilizamos a mesma letra (b) para controlar o LED. Dentro do código há uma variável chamada ‘status’ que faz o controle do estado atual do LED. Leia o código e entenda o que cada linha está fazendo.
Exibir informações no monitor serial e enviar dados ao Arduino através dele é um recurso extremamente útil. Em muitas situações em que é necessário fazer debug de código, o monitor serial será seu grande aliado!
Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigado e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Arduino – Executando o Hello Word
Próxima postagem: Arduino – Utilizando a função millis
Olá. Tenho uma dúvida. Preciso ler um cartão RFID e enviar os dados para um “textbox”. Tem como? VAleu
Cara, que demais! estava com dificuldade em receber uma string com varios dados separados por virgula e separa-los. mas com essa função strstok() do exemplo deu certinho. Valew mesmo pela dedicaçõ em ajudar. VAlEW
Boa noite!
Como faço para mostrar no LCD o estado do led se ele esta ligado ou desligado?
Olá Euler boa noite queria lhe pedir uma ajuda se possível.
Quero enviar e receber dados pela serial da placa, mas o que acontece, quando uso a porta USB, envio e recebo normalmente, mas quando uso os pinos tx1 e rx0 chega somente caracteres especiais, não chega o que mando.
Vou esplicar um teste simples que fiz.
Coloquei o Arduino para imprimir de 2 em 2 segundos os números de 1a5 na porta serial, então abri o programa Hércules e fiz a leitura da porta. Quando mando ler a porta serial correspondente a do cabo USB, chega os dados certinho, mas quando retiro o cabo USB, e mando ler pelos pinos tx1 e rx0 conectado a porta serial do meu PC só chega alguns caracteres, que não é o que foi enviado. Será que tem algo que esteja faltando fazer para que funcione.
Boa Noite, Euler Parabens pelo artigo, estou tentando fazer um led ascender e apagar por um mesmo botão, atraves da porta serial no arduino, poderia me ajudar?
Obs. sou novo no ramo rsrsr
Olá Waldiney.
Agradeço pelo comentário.
Você pode usar a postagem abaixo como referência e alterar o código para o que precisa:
https://blogmasterwalkershop.com.br/arduino/como-usar-com-arduino-shield-modulo-rele-5v-de-4-canais/
No LCD usa se os seguintes comandos para posicionar o cursor:
lcd.setCursor(0,0);
lcd.setCursor(0, 1);
Como faz para posicionar o cursor no Monitor serial do Arduino?
E para limpar tela no Monitor serial?
Rapaz, to tentando enviar palavras pelo monitor, mas to tendo problemas com a String, pode me dar uma luz?
Olá Rony.
Agradeço pelo comentário!
Pra tentar te ajudar é preciso que você dê mais detalhes do problema que está tendo.
Bom, simplificando, eu preciso acionar um led com uma palavra. Eu consegui usando o char com o caractere que eu queria entre apóstrofos (‘ ‘), porém o mesmo eu não consigo usando uma palavra inteira com o String. Não sei se ficou claro.
Exemplo, preciso acionar ao escrever “feliz”, mas só consigo usando o char para a letra F e não a string para a palavra toda. Entendeu? Desculpa, sou péssimo pra explicar essas coisas.
Veja se é o que precisa:
https://www.paulotrentin.com.br/programacao/dicas/lendo-uma-string-com-arduino-via-serial/
A pergunta que farei pode ser até um bocado óbvia, mas eu tenho pesquisado sobre tem 2 dias inteiros e ainda não achei nada. Estou trabalhando com um sensor de condutividade(mais especificamente o EZO Circuit da Atlas Scientific) e ele funciona através de comandos digitados pelo usuário no monitor serial( por exemplo, eu digito “R, 30” e o sensor lê a condutividade por 30 segundos, ou eu digito “cal, x” e o sensor calibra, coisas assim), porém eu preciso que o sensor tome medidas a cada x tempo sem que eu precise ficar digitando o comando pro monitor serial. Então minha dúvida de hoje é, tem como eu mandar comandos pro Serial, como se eu tivesse digitando-os no monitor serial, totalmente através do código do arduino? Não sei se me fiz claro, tenho a impressão de que é uma dúvida totalmente básica, mas me peguei sem saber isso, agradeço desde já a atenção.
Olá Matheus.
Agradeço pelo comentário!
É possível sim.
Pelo pouco que vi na documentação deste sensor e no código, você pode tentar usar o código que estou deixando abaixo. Neste código foram inseridas as seguintes linhas:
#include
SimpleTimer timer;
timer.setInterval(2000L, enviaComando);
void enviaComando(){
inputstring = "cal, x";
input_string_complete = true;
}
timer.run();
E foi comentado o seguinte trecho:
void serialEvent() {
inputstring = Serial.readStringUntil(13);
input_string_complete = true;
}
Como não tenho este tipo de sensor, não sei se irá funcionar de primeira. Faça testes e caso queira adicionar novos comandos, basta inseri-los na função envia Comando ou criar novas funções e seus respectivos intervalos de execução. Coloquei 2 segundos de intervalo, mas você pode mudar para um tempo menor ou maior.
Segue o código (exemplo com Placa Uno R3):
Muito obrigado, cara! Realmente me ajudou demais. Assim que eu conseguir testar volto aqui pra dar o feedback e considerações! A atenção e velocidade de resposta que você tem para com os comentários desse blog são fenomenais, parabéns pelo ótimo trabalho! Informação de qualidade e muita prestatividade.
Por nada!
Depois volta e conta se deu certo.
Vlw!!!