Introdução
Neste artigo, vamos explorar o Plotter Serial do Arduino, uma ferramenta gráfica do Arduino IDE que permite visualizar os dados da serial em tempo real na forma de gráficos. É uma ferramenta útil para analisar e depurar dados de sensores, sinais e outras informações importantes do seu projeto.
No tutorial veremos como controlar o duty cycle de um sinal PWM utilizando um potenciômetro com a Franzininho C0. As mudanças no sinal serão visualizadas no Plotter Serial.
Materiais necessários
- Franzininho C0
- Potenciômetro
- Protoboard
- Jumpers
Pinout da Franzininho C0
Para definir os pinos utilizados, precisamos consultar o pinout da placa:
Acesse a documentação completa em: https://docs.franzininho.com.br/docs/franzininho-c0/franzininho-c0-board
Circuito
Para começar, conecte o potenciômetro à placa. Insira o potenciômetro na protoboard e, em seguida, faça as seguintes conexões:
- Terminal da esquerda do potenciômetro ao pino 3,3V
- Terminal central do potenciômetro ao pino A4
- Terminal da direita do potenciômetro ao pino GND
Conforme mostrado na imagem abaixo:
Código
Para utilizar o Plotter Serial do Arduino para visualizar a mudança no duty cycle do sinal PWM usando a Franzininho C0, utilizaremos o código a seguir:
const int potPin = A4; // Pino analógico do potenciômetro
const int pwmPin = A0; // Pino PWM do sinal PWM
void setup() {
Serial.setRx(PA_10_R);
Serial.setTx(PA_9_R);
Serial.begin(9600); // Inicializa a comunicação serial para depuração
pinMode(potPin, INPUT); // Define o pino potenciômetro como saída
pinMode(pwmPin, OUTPUT); // Define o pino PWM como saída
}
void loop() {
int potValue = analogRead(potPin); // Lê o valor do potenciômetro (0-1023)
int pwmValue = map(potValue, 0, 1023, 0, 255); // Mapeia o valor do potenciômetro para o intervalo PWM (0-255)
analogWrite(pwmPin, pwmValue); // Ajusta o duty cycle do sinal PWM
// Simula a onda PWM no Plotter Serial
for (int i = 0; i < 255; i++) {
if (i < pwmValue) {
Serial.println(255); // Alto nível do PWM
} else {
Serial.println(0); // Baixo nível do PWM
}
}
delay(100); // Pequeno atraso para suavizar as leituras
Obs.1: Antes da IDE iniciar o carregamento do programa, a Franzininho C0 deve executar o bootloader, caso contrário ocorrerá um erro.
Obs.2: Recomendamos o uso da IDE 1.8.x do Arduino para essa aplicação.
Para visualizar o Plotter Serial vá em Ferramentas -> Plotter Serial, como mostra a figura abaixo.

Explicação do Código
Antes do setup(), vamos criar variáveis para guardar o pino do potenciômetro e o pino responsável por gerar o sinal PWM, ambos precisam ser pinos analógicos.
const int potPin = A4; // Pino analógico do potenciômetro
const int pwmPin = A0; // Pino PWM do sinal PWMNo setup(), precisamos definir os pinos UART da placa para depois iniciar comunicação serial, esse passo é necessário ao utilizar a comunicação serial com a Franzininho C0. A velocidade de comunicação é definida como 9600, as velocidades mais baixas são necessárias para visualizar bem o sinal no Plotter Serial. Por último, definimos o pino PWM como saída e o pino do potenciômetro como entrada.
void setup() {
Serial.setRx(PA_10_R);
Serial.setTx(PA_9_R);
Serial.begin(9600); // Inicializa a comunicação serial para depuração
pinMode(potPin, INPUT); // Define o pino potenciômetro como saída
pinMode(pwmPin, OUTPUT); // Define o pino PWM como saída
}No loop(), iniciamos lendo o valor do potenciômetro com ‘analogRead()’, que retorna um valor entre 0 e 1023. Para ajustar esse intervalo de valores ao intervalo do PWM (0 a 255), utilizamos a função ‘map()’. Após isso, o valor do potenciômetro, mapeado de 0 a 255, será escrito no pino PWM, alterando assim o duty cycle do sinal.
void loop() {
int potValue = analogRead(potPin); // Lê o valor do potenciômetro (0-1023)
int pwmValue = map(potValue, 0, 1023, 0, 255); // Mapeia o valor do potenciômetro para o intervalo PWM (0-255)
analogWrite(pwmPin, pwmValue); // Ajusta o duty cycle do sinal PWM
...} Para visualizar a onda do sinal PWM no Plotter Serial usamos uma estrutura ‘for’. Ela é configurada para iterar de 0 a 254, o que corresponde ao valor máximo do PWM que estamos controlando.
O objetivo é ajustar o duty cycle do sinal PWM com base no valor lido pelo potenciômetro. Então se por exemplo, o valor lido pelo potenciômetro for 100, o sinal PWM ficará em nível alto durante 100 unidades de tempo e depois retornará a zero, repetindo esse ciclo continuamente.
Assim, dentro do ‘for’, uma condição ‘if (i < pwmValue)’ verifica se o valor atual ‘i’ é menor que o duty cycle do sinal PWM. Se ‘i’ é menor que o valor do PWM, o código imprime 255 no Plotter Serial, indicando um nível alto do sinal PWM. Caso contrário, ou seja, quando ‘i’ é maior que o valor do PWM, o código imprime 0, representando o nível baixo do sinal PWM.
Por fim, temos um pequeno atraso para melhorar as leituras.
{ ...// Simula a onda PWM no Plotter Serial
for (int i = 0; i < 255; i++) {
if (i < pwmValue) {
Serial.println(255); // Alto nível do PWM
} else {
Serial.println(0); // Baixo nível do PWM
}
}
delay(100); // Pequeno atraso para suavizar as leituras
}Ao executar o código, conforme mostrado no vídeo, podemos observar que o Plotter Serial exibe as mudanças no tamanho do sinal conforme o valor do potenciômetro é alterado. Isso é feito em tempo real.
Conclusão
Neste artigo, exploramos como visualizar dados lidos por um dos pinos da Franzininho C0 utilizando a ferramenta gráfica do Arduino. Este projeto abre possibilidades para expandir o uso dessa ferramenta na IDE, permitindo análises visuais em tempo real de sinais analógicos, como leituras de sensores ou sinais PWM controlados por dispositivos como potenciômetros, como fizemos aqui.
Desafio
Neste desafio, você irá explorar o uso do Serial Plotter do Arduino para monitorar a variação dos valores de um sensor analógico em tempo real. Escolha um sensor como o sensor de luz (LDR) e observe de maneira gráfica e interativa como os valores mudam com diferentes níveis de luz.





