Comunicao Serial com o Arduino Prof Cludio Nov2011
- Slides: 18
Comunicação Serial com o Arduino Prof. Cláudio Nov-2011
Comandos �Comunicação Ponto a Ponto (Peer-to-Peer = P 2 P) �Configuração da Porta Serial // inicia a comunicação serial: Serial. begin(9600); Prof. Cláudio A. Fleury - Nov-2011 �Informação (bytes) disponível para leitura // bytes disponíveis n = Serial. available(); 2
Comandos �Leitura da Porta Serial // lê byte da porta serial carac = Serial. read(); Prof. Cláudio A. Fleury - Nov-2011 �Grava (escreve) na Porta Serial // grava byte(s) na porta serial Serial. print(carac); // idem, porém com CR ao final da gravação Serial. println(seq); 3
Exemplo � Comandar remotamente o acendimento proporcional de um LED ligado a uma porta de saída analógica � Usuário remoto envia comando numérico (0 a 255) para controlar o nível Prof. Cláudio A. Fleury - Nov-2011 de iluminamento de um LED conectado a uma porta analógica do Arduino 4
Exemplo � Comandar remotamente o acendimento proporcional de um LED ligado a uma porta de saída analógica Prof. Cláudio A. Fleury - Nov-2011 #include <Liquid. Crystal. h> // inicia LCD com os números Liquid. Crystal lcd(12, 11, 5, const int pino. Led = 9; int pos = 0; dos pinos da interface 4, 3, 2); // o pino no qual o LED está ligado // posição de armazenamento do caracter rxdo void setup() { Serial. begin(9600); // inicia a comunicação serial pin. Mode(pino. Led, OUTPUT); // inicia o led. Pin como saída pin. Mode(10, OUTPUT); lcd. begin(16, 2); // número de linhas e colunas do LCD: 16 x 2 lcd. println("Aguardando CMD: "); lcd. print("999<ENTER>"); Serial. println("Aguardando Comando Remoto (999<ENTER>): "); } int decodifica(char *s) { int soma, i; for(soma=i=0; (s[i]!=0) && (i<pos); i++) soma = soma*10 + (s[i]-48); return soma; } 5
Exemplo � Comandar remotamente o acendimento proporcional de um LED ligado a uma porta de saída analógica Prof. Cláudio A. Fleury - Nov-2011 void loop() { char j, n, carac, seq[20]; int brilho; n = Serial. available(); // qtde de dados enviados pelo remoto for(j=0; j<n; j++) { carac = Serial. read(); if(carac == 13 || pos > 2) // lê bytes até encontrar CR (0 x 0 D): break; seq[pos++] = carac; } if((carac == 13) || (pos > 2)) { seq[pos] = '