# Comunicacao Serial

É usada para enviar informacao e receber informacao.

O arduino uno utiliza as portas 0 e 1 como comunicacao serial.

O pino tx é o pino de transmissao do arduino para o pc/monitor serial, se o arduino estiver conectado no usb é desta maneira que recebemos o que esta sendo enviado pelo Serial.println/outros no tx

O pino rx vem as coisas que vem de fora no arduino via monitor serial/pc/outros para o arduino

Esta porta nos permite conectar o arduino com outros arduinos e outros equipamentos que tenham comunicao serial.

A comunicao tambem é feita por meio do cabo usb e se estiver conectado é recomendado nao utilizar as portas 0 e 1 para mais nada pois ela fica exclusiva para comunicao serial.

void setup() {
    // Comeca a comunicao via serial (Inicia a comunicacao serial)
    Serial.begin(9600);

    // Enviando uma msg via serial do arduino para o monitor serial
    Serial.print("Teste");
}

void loop() {

}
1
2
3
4
5
6
7
8
9
10
11
#define SERIAL_BUFFER_SIZE 256

void setup() {
    // Comeca a comunicao via serial (Inicia a comunicacao serial)
    Serial.begin(9600);
}

// armazena apenas um caracter
char c;

void loop() {
    // Verifica se tem alguma coisa na serial
    // available recebe a quantidade de caracteres enviado
    // retorno de carro e quebra de linha tbm entram na contagem, remover no monitor se nao quiser
    if (Serial.available() > 0) {
       // Quantos ainda tem no buffer depois de sair um
       // é tam rapido que q nem vai dar para ler quanto falta, para testar dar um delay(700) no final do programa
       Serial.print(Serial.available());

       // Serial.read() retorna apenas um caracter de cada vez da serial
       // isso ocorre muito rapido q se enviarmos um texto grande nem percebemos
       // se nao der read os dados ficam no buffer do serial até ser lido
       // le um caracter por vez no buffer
       // o buffer tem um limite de 64 bytes (caracteres)
       // para aumentar para 256 o tamanho do buffer é só descomentar o define do comeco do programa
       // retorno de carro e quebra de linha tbm entram na contagem, remover no monitor se nao quiser
       // cada leitura sai um do buffer
       c = Serial.read();

       // imprimir seguido
       Serial.print(c); 

       // imprimir por linhas
       Serial.println(c); 
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36