Contato / Feedback
EMBARCADOS TV
Continuando a serie de artigos introdutórios sobre a plataforma Arduino, neste vamos abordar a
comunicação serial. Serão apresentadas as principais funções e alguns exemplos básicos que serão usados
como base em nossos projetos.
Arduino Comunicação Serial
Este site foi bloqueado de acordo com
A comunicação serial (UART) na plataforma Arduino é, sem duvida, um poderoso recurso que possibilita a
comunicação entre a placa e um computador ou entre a placa e outro dispositivo, como por exemplo um
módulo GPS ou um módulo GSM. É através desse canal que é realizado o upload do código para a placa. OPORTUNIDADES
A placa Arduino UNO possui um canal de comunicação por hardware, conforme foi exibido no artigo
Translate » Desenvolvedor de Programa para CLP na
publicado sobre a Arduino UNO. Esse canal está ligado aos pinos digitais 0 (RX) e 1 (TX). Esses mesmos pinos
estão ligados ao microcontrolador ATMEGA16U2, responsável pela tradução do sinal para comunicação USB Lean Clean ‐ Sorocaba/SP
com o computador. Analista Programador C/C++ na Global TI ‐
São Paulo/SP
A figura a seguir exibe os pinos de comunicação serial na placa Arduino UNO:
Programador na Delta Life ‐ São José dos
Campos/SP
Engenheiro de Software Embarcado na
TQTVD SOFTWARE LTDA ‐ Rio De Janeiro
Divulgue sua oportunidade
Mais oportunidades
NEWSLETTER
Email ASSINAR
ENQUETES REALIZADAS
Escolha de Microcontrolador /
Microprocessador
Sistema Operacional Embarcado
Linguagem de programação
Tipo de ProcessadorO Novo Embarcados
Figura 1 ‐ Pinos para comunicação serial
Deve‐se ficar atento a dispositivos conectados a esses pinos pois podem interferir no upload do seu
programa. Em alguns caso é recomendável desconectar os dispositivos ou shields ligados a esses pinos
antes de fazer o upload. POSTS POPULARES
O sinal de comunicação na placa Arduino UNO, é um sinal TTL de 5V. Para comunicação com um
computador ou outro dispositivo que não tenha o mesmo nível de tensão é necessário um conversor de
Simulador de Arduino: Virtual Breadboard
nível. Existem várias opções de conversores, como por exemplo TTL/ RS232, TTL/RS485, TTL/USB, entre 33.409 visualizações
outros. A seguir são exibidos alguns modelos de conversores:
Arduino ‐ Comunicação Serial
31.245 visualizações
Arduino UNO
24.882 visualizações
Comunicação Serial Java + Arduino
20.927 visualizações
Arduino ‐ Entradas Analógicas
17.058 visualizações
Figura 2 ‐ Shields e módulos para comunicação serial
PARCEIROS
Terminal Serial
Além do recurso de upload através da comunicações serial, a IDE trás um terminal serial que auxilia no
recebimento e envio de dados para a placa sem a necessidade de recorrer a uma ferramenta externa. Para
acessar essa ferramenta basta clicar no ícone Serial Monitor ou acessar o menu Tools> Serial Monitor. É
aberta a janela a seguir:
Figura 3 ‐ Terminal para comunicação serial do Arduino
A ferramenta é bem simples, contendo apenas alguns parâmetros de configuração, onde se pode definir a
taxa de envio (baud rate). Possui dois campos, um onde pode ser inserido a mensagem a ser enviada e
outro maior onde é exibido os caracteres enviados pela placa para o computador.
Funções da plataforma Arduino
A plataforma Arduino possui em sua biblioteca uma variedade de funções para manipulação de dados
através de comunicação serial. Essas funções auxiliam o desenvolvedor em tarefas mais complexas de envio
e recebimento de dados.
Funções mais usadas com a placa Arduino UNO
Serial.begin()
É a primeira função a ser utilizada quando vai trabalhar com a comunicação serial. Ela configura a taxa de
comunicação em bits por segundo (baud rate). Possui um segundo parâmetro opcional para a definição da
quantidade de bits, paridade e stop bits. Se for omitido esse parâmetro o padrão será 8 bits, sem paridade e
1 stop bit.
Sintaxe:
Serial.begin(speed)
Serial.begin(speed, config)
Parâmetros:
speed: velocidade em bit por segundo (baud rate) ‐ long
config: configura a quantidade de bits, paridade e stop bits. Os valores válidos são :
SERIAL_5N1
SERIAL_6N1
SERIAL_7N1
SERIAL_8N1 (padrão)
SERIAL_5N2
SERIAL_6N2
SERIAL_7N2
SERIAL_8N2
SERIAL_5E1
SERIAL_6E1
SERIAL_7E1
SERIAL_8E1
SERIAL_5E2
SERIAL_6E2
SERIAL_7E2
SERIAL_8E2
SERIAL_5O1
SERIAL_6O1
SERIAL_7O1
SERIAL_8O1
SERIAL_5O2
SERIAL_6O2
SERIAL_7O2
SERIAL_8O2
Retorno
Essa função não retorna nada.
Serial.available()
Retorna a quantidades de bytes disponíveis para leitura no buffer de leitura. Essa função auxilia em loops
onde a leitura dos dados só e realizada quando há dados disponível. A quantidade máxima de bytes no
buffer é 64.
Sintaxe:
Serial.available();
Parâmetros:
Não passa nenhum parâmetro.
Retorno:
(int) ‐ quantidade de bytes disponíveis para leitura
Serial.read()
Lê o byte mais recente apontado no buffer de entrada da serial.
Sintaxe:
Serial.read();
Parâmetros:
Não passa nenhum parâmetro.
Retorno:
(int) ‐ O primeiro byte disponível no buffer da serial. Retorna ‐1 caso n tenha dado disponível.
Serial.print()
Escreve na serial texto em formato ASCII. Essa função tem muitas possibilidades. Números inteiros são
escritos usando um caractere ASCII para cada dígito. O mesmo ocorre para números flutuante e, por
padrão, são escrito duas casas decimais. Bytes são enviados como caracteres únicos e strings e caracteres
são enviados como escritos.
Vejamos alguns exemplos:
Serial.print ( 123 ); // Envia "123"
Serial.print ( 1.234567 ); // Envia "1.23"
Serial.print ( 'N' ); // Envia "N".
Serial.print ( "Hello world" ); // Envia "Hello world".
Obs.: caracteres são enviados com aspas simples e strings com aspas duplas.
Um segundo parâmetro opcional define a base numérica para formatar o valor enviado. São aceitos os
seguintes parâmetros:
BIN ‐ binário, base 2
OCT ‐ octal, base 8
HEX ‐ hexadecimal, base 16
DEC ‐ decimal, base 10
Para números em ponto flutuante esse parâmetro define a quantidade de casas decimais a serem enviadas
após o ponto. Exemplos:
Serial.print(78, BIN) envia em binário "1001110"
Serial.print(78, OCT) envia emr octal "116"
Serial.print(78, DEC) envia em decimal "78"
Serial.print(78, HEX) envia em hexadecimal "4E"
Serial.println(1.23456, 0) envia apenas "1", sem casas decimais
Serial.println(1.23456, 2)envia "1.23", ou seja, duas casas decimais
Serial.println(1.23456, 4) envia "1.2346", ou seja, 4 casas decimais
Sintaxe:
Serial.print(val)
Serial.print(val, format)
Parâmetros:
val:valor para ser escrito na serial ‐ qualquer tipo de dado.
format: base numérica para tipos inteiros ou a quantidade de casas decimais para números flutuantes.
Retorno:
size_t (long): retorna a quantidade de bytes escritos
Serial.println()
Funciona praticamente igual a função Serial.print(), a única diferença é que esta função acrescenta ao fim
da mensagem o caractere de retorno de carro (ASCII 13 ou ‘\r’) e o caractere de nova linha(ASCII 10 ou ‘\n’).
A sintaxe, os parâmetros e o retorno são os mesmos da função Serial.print().
Serial.write()
Escreve um byte na porta serial.
Sintaxe:
Serial.write(val)
Serial.write(str)
Serial.write(buf, len)
Parâmetros:
val: um valor para ser enviado como um único byte.
str: uma string para ser enviada como uma sequência de bytes.
buf: um array para ser enviado como uma serie de bytes.
len: o tamanho do buffer a ser enviado.
Retorno:
(byte) ‐ Retorna a quantidade de bytes escritos na serial. A leitura desse numero é opcional.
Manipulação de dados através da comunicação serial
Exemplos:
Echo
No Sketch a seguir é exibido como receber um caractere do computador e enviar este mesmo caractere
para o computador, onde será exibido o que é digitado na terminal serial.
1 /*
2 echo
3 reenvia para o computador o dado recebido pela serial
4 */
5
6 byte byteRead;
7
8 void setup() {
9 //configura a comunicação seria com baud rate de 9600
10 Serial.begin(9600);
11 }
12
13 void loop() {
14
15 if (Serial.available()) //verifica se tem dados diponível para leitura
16 {
17 byteRead = Serial.read(); //le bytwe mais recente no buffer da serial
18 Serial.write(byteRead); //reenvia para o computador o dado recebido
19 }
20 }
Neste exemplo foi utilizada a função Serial.available() para verificar se há dado disponível no buffer da
serial. Quando há um byte para leitura, o mesmo é lido pela função Serial.read() e armazenado na variavel
byteRead. A próxima função, Serial.write(), imprime de volta o dado recebido para o computador.
Dimmer
Este exemplo demonstra como enviar dados do computador para controlar o brilho de um LED conectado a
uma saída PWM. Este exemplo já vem com a plataforma e pode ser acessado em: File ‐> Examples ‐>
04.Communication ‐> Dimmer.
1 /*
2 Dimmer
3 Demonstra como enviar dados do computador para controlar a intesindade
4 do brilho de um led conctado ao pino 9 do arduino.
5 */
6
7 const int ledPin = 9; // the pin that the LED is attached to
8
9 void setup()
10 {
11 Serial.begin(9600); // configura a comunicação serial com 9600 bps
12 pinMode(ledPin, OUTPUT); // configura pino do led como saída
13 }
14
15 void loop() {
16 byte brightness; //cria uma variável para armazernar byte recebido
17
18 if (Serial.available()) //verifica se chegou algum dado na serial
19 {
20 brightness = Serial.read();//Lê o byte mais recente disponível na serial
21 analogWrite(ledPin, brightness);//atualiza a saída PWM do LED com valor recebido
22 }
23 }
Com este exemplo pode ‐se varia o brilho do LED conectado à saída PWM através de comandos enviados
pelo PC. O byte recebido pela serial é atribuído a variável brightness, que na instrução a seguir é passado
como parâmetro na função analogWrite(), definindo o brilho do LED. Junto com este exemplo é exibido um
código em processing para variação do brilho através do clique do mouse no PC.
Liga/Desliga LED
Este exemplo exibe como ligar e desligar um LED conectado as saída digital da Arduino UNO através de
comando enviados pelo computador.
1 /*
2 * comandos via serial
3 * inverte o estado do led conctado a saída 13 do arduino quando recebe o caracter 'A' pela serial
4 */
5
6 const int LED = 13;
7
8 void setup() {
9 Serial.begin(9600); //configura comunicação serial com 9600 bps
10 pinMode(LED,OUTPUT); //configura pino do led como saída
11 }
12
13 void loop() {
14 if (Serial.available()) //se byte pronto para leitura
15 {
16
17 switch(Serial.read()) //verifica qual caracter recebido
18 {
19 case 'A': //caso 'A'
20
21 digitalWrite(LED,!digitalRead(LED)); //inverte estado do LED
22
23 break;
24 }
25 }
26 }
Neste exemplo o estado do LED ligado ao pino 13 é invertido sempre que o Arduino recebe o caractere 'A'.
A estrutura desse sketch permite adicionar mais saídas para serem acionadas. Este exemplo pode ser
aproveitado para uma aplicação gráfica no PC para controlar cargas automação residencial, por exemplo.
Conclusão sobre comunicação serial na plataforma Arduino
Dominar a comunicação serial na plataforma Arduino é essencial para o desenvolvedor de projetos. Muitos
dispositivos e módulos possuem uma interface de comunicação, seja para configuração ou para comandos.
O uso de uma comunicação serial permite também o controle ou monitoramento de sistemas utilizando o
computador ou mesmo outra placa eletrônica. É uma interface tradicional e bem conhecida e permite que
ligue, de forma simples diferentes dispositivos.
A comunicação serial na plataforma Arduino aliada ao terminal da IDE, se torna uma ótima ferramenta para
visualização de dados e Debug durante o processo de desenvolvimento, já que a plataforma não possui tais
ferramentas de depuração.
Arduino ‐ Primeiros Passos
Arduino ‐ O documentário
Placas Arduino ‐ trajetória até o UNO
Arduino UNO
Arduino ‐ Entradas/Saídas digitais
Arduino ‐ Entradas Analógicas
Arduino ‐ Saídas PWM
Arduino ‐ Comunicação Serial
Arduino ‐ ArduBlock
Arduino no Proteus 8.1
Simulador de Arduino: Virtual Breadboard
Arduino Leonardo
Arduino MEGA 2560
Acionamento de uma lâmpada com Arduino
Arduino ‐ Controle de uma lâmpada com LDR
Placa Arduino da Robocore ‐ BlackBoard
Criando suas próprias bibliotecas para Arduino
Arduino UNO ‐ Taxa de amostragem do conversor A/D
Arduino UNO ‐ Sensor de temperatura interno
Medindo o nível de água com Arduino
Comunicação Serial com C# e Arduino ‐ Parte 1
Comunicação Serial com C# e Arduino ‐ Parte 2
Arduino: Expandindo os I/Os ‐ Parte 1
Arduino Esplora
Arduino ‐ Teclado touch capacitivo
Arduino ‐ Interface com acelerômetro e giroscópio
Arduino: RS‐232/RS‐485 ‐ Hardware
Trinket ‐ Uma pequena poderosa placa compatível com Arduino
Nova Arduino Zero Pro ‐ Disponível no site arduino.org
Embrio: Uma ferramenta de programação visual para Arduino
Comunicação serial com Arduino utilizando Qt5 Console Application
Utilizando microcontroladores para controle de conversores DC‐DC personalizados, parte II
Móveis de escritório + IoT ‐ Uma impressora de recibo com NFC e Wifi
LightBlue Bean ‐ Placa compatível com Arduino
BR‐Arduino.org: Sua nova fonte de conhecimento sobre Arduino
Shield Arduino YÚN
Arduino Yún
Novo Shield Arduino Wi‐Fi com controlador Atmel
Python + Arduino ‐ Comunicação Serial
Arduino vs Raspberry Pi: entenda as diferenças
Papilio ‐ Arduino + FPGA
Intel Galileo Gen 2 ‐ Placa Arduino
Arduino TRE Developer Edition ‐ Lançamento!
Novo Arduino ‐ Arduino Zero lançado
Intel Galileo ‐ Placa Arduino
Arduino TRE
Arduino Due
Comunicação Serial Java + Arduino
UDOO ‐ Arduino, Linux e Android em uma mesma placa
Licença Creative Commons
Arduino ‐ Comunicação Serial por Fábio Souza. Esta obra está sob a licença Creative Commons
Atribuição‐CompartilhaIgual 4.0 Internacional.
Fábio Souza
Engenheiro eletricista com experiência no desenvolvimento de hardware e firmware para
sistemas embarcados. Atua com desenvolvimento de projetos eletrônicos, consultoria e
treinamentos na área de sistemas embarcados.
Tweetar 0
POSTS SIMILARES
COMENTÁRIOS
45 Comentários Embarcados
1 Entrar
Participe da discussão...
Marcio Oliveira • 20 dias atrás
Boa Tarde Fabio...
Estou envolvido em um projeto, onde preciso acionar uma balança via serial para ela pesar
determinado material e receber via serial a leitura... Tem algum jeito?
Obs: a balança recebe e envia pela sua entrada serial...
△ ▽ • Responder • Compartilhar ›
Opa Marcio, tem sim!
Primeiro tem ver qual o meio fisico da comunicação, RS232, RS485, USB etc
A partir disso você prepara o hardware do Arduino para comunicação.
Depois é necessário ter o manual da impressora para ver se tem algum protocolo
de comunicação e quais são os comandos para envio e recebimento de dados.
É bem tranquilo.
Abraços
△ ▽ • Responder • Compartilhar ›
João Carlos Ornellas • 2 meses atrás
Parabéns pelo post. Me ajudou muito.
△ ▽ • Responder • Compartilhar ›
Wellington Araújo • 2 meses atrás
Olá,
estou realizando uma comunicação serial com o arduino e gostaria que ele enviasse
sempre 3 digitos. Por exemplo, se o arduino captar o valor '104' deve enviar '104', e se
captar '72' deve enviar '072'. É possível?
obrigado
△ ▽ • Responder • Compartilhar ›
phfbertoleti > Wellington Araújo • 2 meses atrás
Wellington, o que o Fabio disse resolve a questão. Outra alternativa seria:
1 Criar um array de char tamanho 4 (4 bytes): char MsgParaTransmitir[4];
2 Formatar esse array usando sprintf:
sprintf(MsgParaTransmitir,"%03d",VariavelComvalorNumerico);
//VariavelComvalorNumerico corresponte a variável que você quer converter pra
string e enviar
Este tipo de formatação ("%03d") garante que o numero terá sempre três digitos.
3 Enviar os 3 primeiros bytes da string com a função Serial.write:
Serial.write(MsgParaTransmitir,3);
O porque de declarar a variável com 4 posições pra colocar somente 3 caracteres
é que a função sprintf coloca sempre \0 (0x00) no último byte. Se por um acaso
você declarasse o array de char com 3 posições somente, o sprintf iria colocar na
posição de memória seguinte o \0, o que é a famosa "invasão de memória". isto
pode trazer problemas sérios, como travamentos (intermitentes ou não) ou
travamento do firmware mesmo.
A vantagem deste tipo de solução em relação a do Fabio é ganho de performance e
código mais enxuto.
△ ▽ • Responder • Compartilhar ›
Olá Wellington,
Você pode enviar um digito por vez, por exemplo:
Serial.print(valor/100);
Serial.print((valor%100)/10);
Serial.print(valor%10);
Abraços
△ ▽ • Responder • Compartilhar ›
Luiz Antônio Zanlorensi Junior • 2 meses atrás
Boa Tarde!
Eu estou desenvolvendo um projeto, e fico recebendo dados via serial do arduino para
demonstrar em uma interface no computador. O problema é que após um período
(aproximadamente umas 5 horas), o arduino simplesmente para de enviar os dados,
porém continua executando as funções que foram programadas corretamente. Procurei e
não consegui encontrar nada em relação a isso. Alguém já passou pelo mesmo problema
ou sabe o que pode ser feito?
Obrigado,
Luiz.
△ ▽ • Responder • Compartilhar ›
Olá Luiz, pensando que seja um problema de hw, o conversor serial/USB pode
estar travando. Seu arduino é original? Há acionamento de cargas indutivas no
projeto?
Abraços
△ ▽ • Responder • Compartilhar ›
Luiz Antônio Zanlorensi Junior > Fabio_Souza_Embarcados
• 2 meses atrás
Oi Fabio, o arduino é original, em relação a cargas, eu estou controlando
uma placa de relés e em um deles há um motor de compressor ligado. Mas
não sei se isso afetaria a comunicação.
Obrigado, por responder.
△ ▽ • Responder • Compartilhar ›
Eu já tive alguns problemas com acionamento de cargas indutivas.
Em alguns casos optei por RS232 ou RS485. Faça alguns testes de
acionamento e verifique a alimentação e sinais com um
osciloscópio. Talvez você possa encontrar uma fonte de ruído.
Abraços
△ ▽ • Responder • Compartilhar ›
Luiz Antônio Zanlorensi Junior > Fabio_Souza_Embarcados
• 2 meses atrás
Opa Blz, vou testar sim. Posto aqui quando resolver.
Abraço
1 △ ▽ • Responder • Compartilhar ›
Luiz Antônio Zanlorensi Junior > Luiz Antônio Zanlorensi Junior
• 2 meses atrás
Boa Tarde Fabio, muito obrigado pela ajuda, realmente o problema
era com ruídos (EMI), e vi que colocando um filtro snubber ou
retirando o motor AC da placa de relés resolve o problema.
Segue um link, caso alguém tenha o mesmo problema, de como
criar e calcular os componentes para um snubber:
http://www.ehow.com.br/projeta...
Abraço.
△ ▽ • Responder • Compartilhar ›
Paulo Germano S. Scherer • 3 meses atrás
Olá, boa noite!
Gostaria de controlar um motor DC utilizando o Arduino e um mouse PS/2. Por exemplo:
clique do botão direito faz o motor girar para frente; clique do botão esquerdo, motor gira
para trás. Acredito que isso possa ser feito com comunicação serial do mouse com o
Arduino, para identificar qual o botão que está sendo pressionado, mas não estou sabendo
fazer o programa... Poderiam me dar alguma direção?
Obrigado
△ ▽ • Responder • Compartilhar ›
Olá Paulo,
Você pode usar a PS2 mouse interface for Arduino:
http://playground.arduino.cc/C...
Esse artigo é bem legal: https://docs.google.com/docume...
Você também precisará de um driver para o motor e inserir a lógica de controle.
Abraços
△ ▽ • Responder • Compartilhar ›
Paulo Germano S. Scherer > Fabio_Souza_Embarcados • 2 meses atrás
Olá, Fabio
Obrigado pela sua resposta.
Mas segui os passos do artigo para testar a comunicação com o mouse e
não funcionou. Nada é impresso no monitor serial. É possível que seja
problema do mouse, que estava há bastante tempo sem uso, mas aceitaria
qualquer outra sugestão...
Valeu!
△ ▽ • Responder • Compartilhar ›
Como você disse pode ser problema com o mouse ou com a ligação
do mesmo. Da um conferida nos sinais elétricos.
Abraços
△ ▽ • Responder • Compartilhar ›
Cesar Augusto Santos • 4 meses atrás
Boa noite, Fabio.
Minha dúvida é parecida com a do colega Daniel.
Estou montando um estacionamento sensorial, porém, estou com dificuldades de enviar os
dados, tendo em vista que não quero usar um módulo ethernet para essa função e sim
fazer via serial ou USB. Teria como me auxiliar?
Meu email é: cescabral@hotmail.com
Agradeço desde já!
△ ▽ • Responder • Compartilhar ›
Daniel Godoy • 4 meses atrás
Olá Fabio, muito bom seu artigo!
Estou fazendo um projeto que preciso receber os dados do arduino via serial e exibir na
tela do pc.Os dados são de 3 sensores de temperatura e gostaria de mandar via tx/rx do
arduino e não USB.
Como faço para cada dado do sensor seja enviado ? exemplo sensor 1 mediu 70 , o
sensor 2 mediu 120 e mando para o pc.
Obrigado Daniel
△ ▽ • Responder • Compartilhar ›
Você pode usar a comunicação Serial e mandar um pacote com as informações
dos sensores, por exemplo: #valorSensor1;valorSensor2;valorSensor3$.
Na aplicação do computador você separa as informações enviadas no pacote.
Abraços.
△ ▽ • Responder • Compartilhar ›
Janderson Alexandre • 8 meses atrás
olá Fábio estou fazendo um elevador de 3 andares com redswith como referência de
sensor nos andares a porta serial bluetooth liga o motor o sensor desliga a partir dai não
consigo religar o motor pela serial.Se puder me ajudar ficarei muito agradecido.
△ ▽ • Responder • Compartilhar ›
Olá Janderson, quais os comandos que você envia pela serial, e como está
estruturado seu programa?
△ ▽ • Responder • Compartilhar ›
alex sandro monteiro lopes de • 9 meses atrás
Olá sou Alex, primeiramente parabéns Fábio.
Gostaria de saber se há a possibilidade de após ler os dados serial eu conseguiria salva
los em um banco de dados?
Obrigado desde já
△ ▽ • Responder • Compartilhar ›
Olá Alex, a maneira mais simples é você formatar os dados e depois copiar e
colocar no Excel por exemplo. Outra forma seria a utilização de um programa em
uma linguagem mais alto nivel como C#, JAVA, Python, VB.. e integrar com um
banco de dados como por exemplo o MySQL. Abraços
△ ▽ • Responder • Compartilhar ›
Alexandre Fontana • 10 meses atrás
Fabio, como eu faria para ler um conjunto de 10 números que chegaram pela serial e
depois separar os outros 10 e depois outros 7 ? Saberia me informar ? Ou como procurar
essas informações ? Obrigado, abraço.
△ ▽ • Responder • Compartilhar ›
Olá Alexandre, Você pode enviar os números com separadores, e depois recortar
estes números da string de recepção. Por exemplo: 125,25,96,1023,456,1,...
Depois você faz pode varrer a string separando os números entre cada separador.
Abraço
△ ▽ • Responder • Compartilhar ›
Luciano Santos > Fabio_Souza_Embarcados • 9 meses atrás
Por favor, teria um exemplo de como varrer a string para separar as
palavras?
Obrigado!
△ ▽ • Responder • Compartilhar ›
Olá Luciano,
teria um exemplo de String com as palavras a serem separadas?
Faço o exemplo em cima de sua necessidade.
Abraço
△ ▽ • Responder • Compartilhar ›
Luciano Santos > Fabio_Souza_Embarcados • 9 meses atrás
Oi Fabio!
Após o envio de um GET que faço a uma página em PHP, gostaria
de pegar os dados que retornam depois do cabeçalho HTTP e
colocar cada um em um array. Seria possível? Obrigado desde já!
Por exemplo:
char dados[]={"11997306000","email@gmail.com","Anselmo
Santos","Luciano Santos","1000","Entrada Num.1","09/11/2014 09:47
PM"};
/* Retorno do GET */
HTTP/1.1 200 OK
Date: Sun, 09 Nov 2014 23:47:38 GMT
Server: Apache
KeepAlive: timeout=5, max=100
Connection: KeepAlive
TransferEncoding: chunked
ver mais
△ ▽ • Responder • Compartilhar ›
Olá Luciano,
Você pode utilizar nesse caso os métodos do objeto String. no caso
você precisa achar o ponto onde iniciará a captura e depois utilizar o
método substring. confira esse exemplo:
http://arduino.cc/en/Tutorial/...
Abraço
△ ▽ • Responder • Compartilhar ›
rpa 007 • 10 meses atrás
Olá Fábio! Excelente explicação.
Porém, estou com uma dúvida. Estou tendo como resultado de um "Serial.println" alguns
símbolos, igual aqueles que você faz quando pressiona "alt + teclado numérico". Esses
tais símbolos estão em qual forma numérica? Obrigado!
△ ▽ • Responder • Compartilhar ›
Fabio_Souza_Embarcados Mod > rpa 007 • 10 meses atrás
Olá rpa, verifique a taxa de comunicação da comunicação serial, você pode está
com problema de baud rate. Abraços
△ ▽ • Responder • Compartilhar ›
Alexandre Fontana • um ano atrás
Fabio parabéns pelo seu post. Gostaria de saber como posso fazer a leitura de um ou
mais potenciômetros pela porta serial e ao mesmo tempo enviar dados pela serial para um
ou mais servos motor ? O servo não tem relação com o potenciômetro. Agradeço a
atenção. Obrigado.
△ ▽ • Responder • Compartilhar ›
Olá Alexandre, você pode enviar todos os valores dos potenciometros e usar um
separador de string, por exemplo: ',' e a aplicação no PC se encarrega de separar
os dados. Para leitura dos comandos dos servos você pode ficar esperando a
chegada de um comando através do Serial.available() e atuar os servos conforme
o dado que chegar. abraços
△ ▽ • Responder • Compartilhar ›
Eitor • um ano atrás
Ola! Eu tenho uma duvida. Vamos supor que eu tenha 2 arduinos, um que eu receba os
comandos em geral, e outro q eu tenha algumas lampadas conectados a ele, porem eu
quero acender as lampadas do arduino 2 através de comandos enviados pelo arduino 1.
Seria possível fazer isso usando envio de dados pela serial ou existe uma outra forma?
Obrigado.
△ ▽ • Responder • Compartilhar ›
Sim você pode enviar os comandos de um arduino para o outro através da
comunicação serial. Só tem que ficar atento a distância entre os arduinos. Você
pode usar algum padrão o padrão RS232 ou RS485 para interface entre as placas.
abraços
△ ▽ • Responder • Compartilhar ›
Renato Lemos • um ano atrás
Fabio, primeiramente obrigado pelo tópico, muito bem explicado as funções.
Agora preciso de uma ajuda, como faço para o dado que eu leia na serial seja "colado" em
qualquer caixa de texto, como o bloco de notas por exemplo.
a situação completa é a seguinte, estou lendo um leitor de código de barras PS/2 pelo
arduino, esta funcionado certinho, porem os dados que consigo pelo leitor aparecem no
"serial monitor" do arduino, queria que estes dados fossem recebidos em qualquer lugar
que receba texto.
Vlw.
△ ▽ • Responder • Compartilhar ›
Você precisará que seu arduino Funcione como um dispositivo HID, acredito que
com o Arduino Leonardo você consiga fazer isso. Ele tem que funcionar como se
fosse um teclado ou um mouse. Ainda não sei como fazer, vou dar uma
pesquisada. Abraços
△ ▽ • Responder • Compartilhar ›
Renato Lemos > Fabio_Souza_Embarcados • um ano atrás
Pensei nisto mesmo, mas infelizmente só possuo o Arduino UNO e o
Arduino RFBee.
Como não conheço muito sobre comunicação serial, achei que seria mais
simples, tipo um comando "serial.print" que já mandasse o dado para a área
de transferência do windows.
Estou pesquisando também, qualquer novidade posto aqui e obrigado pela
atenção.
Vlw.
△ ▽ • Responder • Compartilhar ›
Gabriel • um ano atrás
Como faço pra receber dois dados do arduino?
△ ▽ • Responder • Compartilhar ›
Olá Gabriel, quais são os dados que você quer receber? Você precisa que o
arduino envie dois dados de uma só vez? É isso? Onde você irá receber e exibir
estes dados?
△ ▽ • Responder • Compartilhar ›
Erica • um ano atrás
Olá,
Se eu quiser apenas ler a serial de um arduino sem ter instalado a IDE (com um outro
programa de leitura serial) é necessário instalar apenas o driver para o reconhecimento do
arduino?
Obrigada
△ ▽ • Responder • Compartilhar ›
Olá Erica,
Isso mesmo você precisa instalar o diver para reconhecimento da placa em seu
SO e depois fazer a comunicação com outra aplicação com as devidas
configurações da comunicação serial.
Veja esse artigos, onde são feitas comunicações usando JAVA e C#:
http://www.embarcados.com.br/c...
http://www.embarcados.com.br/c...
Qualquer dúvida entre em contato,
Abraços
△ ▽ • Responder • Compartilhar ›
Erica > Fabio_Souza_Embarcados • um ano atrás
Muito Obrigada...
Ajudou bastante :)
△ ▽ • Responder • Compartilhar ›
Por nada. Depois conte para nós os resultados.
Abraços
△ ▽ • Responder • Compartilhar ›
Embarcados ‐ Todos os Direitos Reservados® Desenvolvido por