-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
25 changed files
with
865 additions
and
188 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,38 +1,113 @@ | ||
## Comunicação Serial | ||
|
||
## O que esse código faz? | ||
A comunicação serial é fundamental para a troca de dados entre o microcontrolador (o arduino no nosso caso) e outros dispositivos, como um computador, outro arduino, um celular. | ||
|
||
Este código de exemplo demonstra como piscar um LED com arduino (blink led). | ||
No arduino usamos a classe `Serial` que oferece várias opções e métodos para gerenciar essa comunicação. | ||
|
||
!!! tip | ||
Documentação oficial: [https://www.arduino.cc/reference/pt/language/functions/communication/serial/](https://www.arduino.cc/reference/pt/language/functions/communication/serial/) | ||
|
||
## Circuito protoboard | ||
Aqui estão as principais: | ||
|
||
![](hello1.PNG) | ||
### Iniciando a comunicação serial: | ||
|
||
- `Serial.begin(baudRate);` - Inicia a comunicação serial com a taxa de transmissão especificada. | ||
|
||
## Código | ||
```c | ||
void setup() { | ||
Serial.begin(9600); | ||
} | ||
``` | ||
|
||
!!! tip | ||
A taxa de transmissão padrão é de `9600` bps (bits por segundo), mas outros valores podem ser utilizados conforme a necessidade do projeto. Confira [a tabela de taxas de transmissão mais comuns](https://lucidar.me/en/serialib/most-used-baud-rates-table/) para saber mais. | ||
|
||
### Enviando dados pela serial: | ||
|
||
- `Serial.print(data);` - Envia dados para a porta serial, `sem pular para uma nova linha`. | ||
- `Serial.println(data);` - Envia dados para a porta serial, `seguido por um caractere de nova linha (\n)`. | ||
|
||
```c | ||
int led = 13; //defindo o valor 13 para a variável led | ||
void loop() { | ||
|
||
void setup(){ | ||
pinMode(led,OUTPUT); //declara led (pino 13 do arduino) como saida (OUTPUT) | ||
Serial.print("Hello, World!"); | ||
Serial.println("Hello, World!"); | ||
|
||
} | ||
|
||
void loop(){ | ||
digitalWrite(led, HIGH); //acende (HIGH) o led | ||
delay(1000); //delay em milisegundos (1 seg) | ||
digitalWrite(led, LOW); //apaga o led (LOW) | ||
delay(1000); //delay em milisegundos | ||
``` | ||
|
||
### Recebendo dados pela serial: | ||
|
||
A leitura de dados da porta serial no Arduino acontece quando você precisa receber informações de outros dispositivos, como sensores, computadores ou outros microcontroladores. | ||
|
||
Antes de tentar ler os dados, é importante verificar se há bytes disponíveis na porta serial. Isso pode ser feito utilizando a função `Serial.available()`, que retorna o número de bytes prontos para serem lidos: | ||
|
||
```c | ||
void loop() { | ||
|
||
if (Serial.available() > 0) { | ||
// Há dados disponíveis para leitura | ||
} | ||
} | ||
``` | ||
??? note "Circuito simulador" | ||
![](hello.PNG) | ||
!!! tip | ||
Certifique-se de sempre verificar a disponibilidade de dados antes de tentar lê-los, evitando assim erros ou falhas no processamento de informações inexistentes. | ||
|
||
Depois de confirmar que há dados disponíveis, você pode utilizar diversas funções da classe Serial para ler esses dados. As funções mais comuns são: | ||
|
||
## Links para Download | ||
- `Serial.read();` - Lê um único byte da serial. O byte é retornado como um número inteiro entre 0 e 255. Se não houver dados disponíveis, a função retorna -1. Ideal para leituras byte a byte. | ||
- `Serial.readString();` - Lê a entrada serial como uma `String` até que um caractere de nova linha (` | ||
`) seja encontrado ou até que o tempo limite seja atingido. Útil para receber comandos ou mensagens de texto completas. | ||
- `Serial.readStringUntil(character);` - Lê a entrada serial como uma `String` até que o caractere especificado seja encontrado. | ||
- `Serial.parseInt();` - Lê o próximo valor inteiro da porta serial, ignorando caracteres não numéricos até encontrar um número. A leitura continua até encontrar um caractere que não faça parte do número. | ||
- `Serial.parseFloat();` - Lê o próximo valor em ponto flutuante até encontrar um caractere que não seja parte do número, incluindo o ponto decimal. | ||
|
||
```c | ||
void loop() { | ||
// Lendo um único byte | ||
Serial.println("Digite unico byte"); | ||
while (Serial.available() == 0) {} // Aguarda digitar | ||
int valor = Serial.read(); | ||
Serial.print("Byte lido: "); | ||
Serial.println(valor); | ||
Serial.println(); | ||
|
||
|
||
// Lendo uma string completa | ||
Serial.println("Digite uma string completa"); | ||
while (Serial.available() == 0) {} // Aguarda digitar | ||
String valorString = Serial.readString(); | ||
Serial.print("String recebida: "); | ||
Serial.println(valorString); | ||
Serial.println(); | ||
|
||
// Lendo uma string até encontrar um caractere específico | ||
Serial.println("Digite uma string com ; no final"); | ||
while (Serial.available() == 0) {} // Aguarda digitar | ||
String partialString = Serial.readStringUntil(';'); | ||
Serial.print("String parcial até ';': "); | ||
Serial.println(partialString); | ||
Serial.println(); | ||
|
||
// Lendo um valor inteiro | ||
Serial.println("Digite um valor do tipo inteiro"); | ||
while (Serial.available() == 0) {} // Aguarda digitar | ||
int intValue = Serial.parseInt(); | ||
Serial.print("Inteiro lido: "); | ||
Serial.println(intValue); | ||
Serial.println(); | ||
// Lendo um valor de ponto flutuante | ||
Serial.println("Digite um valor do tipo float"); | ||
while (Serial.available() == 0) {} // Aguarda digitar | ||
float floatValue = Serial.parseFloat(); | ||
Serial.print("Float lido: "); | ||
Serial.println(floatValue); | ||
Serial.println(); | ||
} | ||
``` | ||
|
||
* [Código arduino](hello.ino) | ||
|
||
* [Thinkercad online](https://www.tinkercad.com/things/4e6ZDm63O2D-swanky-robo-blad/editel?sharecode=MftwpiXu-ym4ISoTz_QquJtsnkLvIIlr9fNjBM0J8LI) | ||
### Outros métodos úteis: | ||
|
||
* [SimulIDE](hello.simu) | ||
- `Serial.setTimeout(time);` - O `time` determina quanto tempo a função aguardará antes de desistir da leitura, caso os dados não estejam disponíveis. |
File renamed without changes
File renamed without changes.
File renamed without changes.
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,40 +1,38 @@ | ||
|
||
## O que esse código faz? | ||
|
||
Este código de exemplo demonstra como acender e apagar um LED em um intervalo de 100 milissegundos ao pressionar um botão com Arduino. | ||
Este código de exemplo demonstra como piscar um LED com arduino (blink led). | ||
|
||
|
||
## Circuito protoboard | ||
|
||
![](botao_led.png) | ||
![](hello1.PNG) | ||
|
||
|
||
## Código | ||
|
||
```c | ||
const int led = 13; //define o apelido led para o valor 13 | ||
const int botao = 5; //define o apelido botao para o valor 5 | ||
int led = 13; //defindo o valor 13 para a variável led | ||
|
||
void setup(){ | ||
pinMode(led, OUTPUT); //declara o pino13 (led) como saída | ||
pinMode(botao, INPUT_PULLUP); //declara o pino5 (botao) como entrada | ||
pinMode(led,OUTPUT); //declara led (pino 13 do arduino) como saida (OUTPUT) | ||
} | ||
|
||
void loop(){ | ||
// Faz a leitura do botao | ||
if (digitalRead(botao) == LOW) { | ||
digitalWrite(led, HIGH); //acende o led | ||
delay(100); //delay em milissegundos | ||
digitalWrite(led, LOW); //apaga o led | ||
delay(100); //delay em milissegundos | ||
} | ||
digitalWrite(led, HIGH); //acende (HIGH) o led | ||
delay(1000); //delay em milisegundos (1 seg) | ||
digitalWrite(led, LOW); //apaga o led (LOW) | ||
delay(1000); //delay em milisegundos | ||
} | ||
``` | ||
|
||
??? note "Circuito simulador" | ||
![](botao_led.png) | ||
![](hello.PNG) | ||
|
||
|
||
## Links para Download | ||
|
||
* [Código arduino](botao_led.ino) | ||
* [Código arduino](hello.ino) | ||
|
||
* [Thinkercad online](https://www.tinkercad.com/things/7Kj0XM4gX3q-spectacular-gadzery-saddai/editel?sharecode=OQaQZ0VdZj8Wn1A6vE5bQYnCYxzP5o5q3L7rAaiYlIs) | ||
* [Thinkercad online](https://www.tinkercad.com/things/4e6ZDm63O2D-swanky-robo-blad/editel?sharecode=MftwpiXu-ym4ISoTz_QquJtsnkLvIIlr9fNjBM0J8LI) | ||
|
||
* [SimulIDE](botao_led.simu) | ||
* [SimulIDE](hello.simu) |
File renamed without changes.
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
File renamed without changes
Oops, something went wrong.