Introdução
O PWM, do inglês Pulse Width Modulation (Modulação por Largura de Pulso), é uma técnica amplamente utilizada para controlar a quantidade média de energia fornecida a um dispositivo elétrico. Isso permite ajustar sua velocidade, brilho ou qualquer outra característica que dependa da variação de potência.
Nesse contexto, o uso de um potenciômetro como sensor de entrada permite ajustar manualmente a tensão de saída para controlar um dispositivo. Esse tipo de aplicação é frequentemente utilizado para o controle de velocidade de motores, intensidade de LEDs e outros aparelhos eletrônicos. É provável que você já tenha interagido com uma aplicação desse tipo no seu dia a dia.
Este tutorial explora esse processo, demonstrando como conectar os componentes e programar no Arduino para controlar a luminosidade de um LED utilizando a Franzininho C0.
Material necessário
- Franzininho C0
- Potenciômetro
- Protoboard
- Jumpers
Pinout da Franzininho C0
Consulte o pinout abaixo para fazer as conexões eletricas do circuito proposto:
Potenciômetro
O potenciômetro é um tipo de resistor variável que pode ter sua resistência elétrica alterada de forma controlada. Eles contam com 3 terminais: um terminal é a entrada para alimentação, o terminal do meio é o sinal de saída e o último terminal é um terra.

Seu funcionamento é simples: a tensão de entrada é distribuída ao longo de todo o comprimento do elemento resistivo, enquanto a tensão de saída é derivada da diferença de potencial entre o elemento resistivo fixo e o contato deslizante ou rotativo. Logo, a saída do potenciômetro pode variar de 0% a 100% da tensão de entrada, dependendo da posição do eixo, que é ajustada manualmente.
No exemplo, usaremos o Potenciômetro Linear de 10k, mas sugere-se o uso de potenciômetros entre 1k e 100k.
PWM
O PWM é uma técnica que se baseia em manter a frequência de uma onda quadrada constante, enquanto modifica apenas o intervalo de tempo em que o sinal permanece em nível lógico alto. Esse período de tempo em que o sinal está alto é denominado ciclo de trabalho (duty cycle).
O PWM é usado em diferentes situações com a finalidade de fornecer diferentes níveis de tensão para os dispositivos. No exemplo vamos usar o PWM para variar o brilho de um LED.
Então, com um ciclo de trabalho de 0%, a tensão média do sinal é de 0V resultando no LED desligado. Com um ciclo de trabalho de 50%, a tensão média é a metade da tensão total, e o LED será observado aceso com metade do seu brilho. Essa relação se mantém conforme o ciclo de trabalho varia.
Montagem da placa e código para regular o brilho do LED com PWM
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 A0
- Terminal da direita do potenciômetro ao pino GND
Conforme mostrado na imagem abaixo:
Código
Abaixo temos o código completo utilizado nesse exemplo. Esse código é baseado no código desenvolvido por Daniel Quadros e está disponível no Github da Franzininho:
#define POT A0
#define LED PB6
void setup() {
// Inicia o pino de controle do LED
pinMode (LED, OUTPUT);
}
void loop() {
// Faz uma leitura que varia de 0 a 1023
int adc = analogRead(POT);
// Define o duty cycle como um valor que varia de 0 a 255
analogWrite(LED, adc >> 2);
// Isso é feito a cada 100 ms
delay(100);
}Explicação do Código
Confira a seguir a explicação dos principais trechos do código:
Na IDE do Arduino, comece definindo os pinos que serão utilizados:
#define POT A0
#define LED PB6No setup, é necessário apenas declarar o pino do LED como saída:
void setup() {
// Inicia o pino de controle do LED
pinMode (LED, OUTPUT);
}No loop, começamos com a função analogRead(), que retorna um valor entre 0 e 1023, representando tensões de 0 a 3,3V. Em seguida, utilizamos a função analogWrite() para simular a saída de um valor analógico por meio de PWM (em pinos conectados à saída de um timer).
Assim, o duty cycle é definido por um valor de 0 a 255. Onde em 0, o LED ficará apagado, enquanto em 255 ele estará completamente aceso, com 100% de brilho.
Além disso, um delay de 100 ms é incluído:
void loop() {
// Faz uma leitura que varia de 0 a 1023
int adc = analogRead(POT);
// Define o duty cycle como um valor que varia de 0 a 255
analogWrite(LED, adc >> 2);
// Isso é feito a cada 100 ms
delay(100);
}Obs.: Antes da IDE iniciar o carregamento do programa, a Franzininho C0 deve executar o bootloader, caso contrário ocorrerá um erro.
Executando o código, como demonstrado no vídeo, a intensidade do brilho do LED é ajustada conforme o eixo é girado.
Conclusão
Neste tutorial, exploramos o uso do PWM para controlar a intensidade de um LED com a Franzininho C0 e um potenciômetro. Demonstramos como conectar os componentes necessários e programar a placa utilizando a IDE do Arduino. O uso do potenciômetro como sensor de entrada permite ajustar manualmente a tensão de saída, proporcionando um controle preciso do brilho do LED.
A aplicação do PWM é essencial em diversas situações, como o controle de velocidade de motores e a variação de intensidade de luz em LEDs. Ao seguir os passos descritos, você adquiriu conhecimentos práticos sobre a montagem e programação de um circuito simples, porém poderoso, que pode ser expandido para outros projetos eletrônicos.
Esperamos que este tutorial tenha sido útil e que você se sinta inspirado a continuar explorando as possibilidades oferecidas pela Franzininho C0 e outras plataformas de desenvolvimento. Se não houver um potenciômetro disponível, lembre-se de que você pode sempre adaptar o código para ajustar a intensidade de forma automática, permitindo ainda mais flexibilidade em seus projetos futuros.
Desafio
Controle da Intensidade do LED usando Teclas
Objetivo: Utilizar a Franzininho C0 para controlar a intensidade de um LED por meio de duas teclas, onde uma tecla aumenta a intensidade e a outra diminui.
Boa sorte!





