Introdução
Uma das funcionalidades básicas de um microcontrolador é a capacidade de ler entradas e controlar saídas digitais. Entender como controlar entradas e saídas é fundamental para criar diversos projetos.
Neste artigo, vamos explorar como isso é feito utilizando a Franzininho C0.
Materiais necessários
| Importante Se ainda não configurou sua Franzininho C0 para usar no Arduino, confira o tutorial: Franzininho C0 – Primeiros passos com Arduino |
Código
Vamos abordar a leitura de entradas e o controle de saídas com um código simples, onde pressionar um botão acende um LED. Para esse exemplo usaremos o botão e um dos LEDs já disponíveis na placa.
Abaixo temos o código para a Franzininho C0:
#define LED PB6
#define BOTAO 8
void setup() {
// Configura os pinos
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT_PULLUP);
}
void loop() {
if (digitalRead(BOTAO) == LOW) {
// apertou o botão = acende o LED
digitalWrite(LED, HIGH);
} else {
// soltou o botão = apaga o LED
digitalWrite(LED, LOW);
}
}
Primeiro definimos os pinos do LED e do botão de acordo com o PINOUT da placa:
Acesse a documentação completa em: https://docs.franzininho.com.br/docs/franzininho-c0/franzininho-c0-board
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 LED PB6
#define BOTAO 8O sketch conta com as duas funções: setup para definir as configurações principais e loop que contém o código principal do programa e é continuamente executado.
No setup, configuramos o pino para entrada ou saída usando a função pinMode. O LED é definido como saída (OUTPUT) e o botão como entrada (INPUT_PULLUP). A opção INPUT_PULLUP além de configurar o pino como entrada, habilita o resistor de pull-up, um resistor interno que garante que o pino será lido em nível alto quando estiver desconectado.
void setup() {
// Configura os pinos
pinMode(LED, OUTPUT);
pinMode(BOTAO, INPUT_PULLUP);
}No loop, utilizamos a estrutura condicional if-else para verificar se o botão foi pressionado. Se sim, o LED é aceso; caso contrário, é apagado. Para alterar um pino de saída é usado a função digitalWrite(), é assim que alteramos o estado do LED. E para ler o nível em um pino de entrada é usado digitalRead().
Veja que quando o botão é pressionado, ele muda para o estado LOW. Isso ocorre porque, devido ao uso do PULLUP, o botão está em estado HIGH quando não está sendo pressionado.
void loop() {
if (digitalRead(BOTAO) == LOW) {
// apertou o botão = acende o LED
digitalWrite(LED, HIGH);
} else {
// soltou o botão = apaga o LED
digitalWrite(LED, LOW);
}
}Como pode ser visto no vídeo, a cada vez que o botão é pressionado o LED acende:
Conclusão
Neste artigo, exploramos um exemplo prático de como utilizar a Franzininho C0 para realizar a leitura de um botão e o acionamento de um LED. Através de um código simples, mostramos como configurar os pinos de entrada e saída, ler o estado de um botão e controlar o estado de um LED. Compreender esses conceitos básicos é fundamental para quem deseja desenvolver projetos mais complexos com microcontroladores, possibilitando uma infinidade de aplicações em eletrônica e automação.
Desafio
Como próximo passo, proponho um desafio para você aprofundar seus conhecimentos: modifique o código para que o LED pisque em intervalos regulares quando o botão for pressionado, e permaneça apagado quando o botão não estiver sendo pressionado. Essa alteração requer a introdução de temporização no loop principal, o que pode ser feito utilizando a função delay() ou outros métodos de controle de tempo. Boa sorte!
Saiba mais
Franzininho C0: Nova placa brasileira baseada no STM32C0
Bancada do Embarcados sobre a Franzininho C0
Compre a Franzininho C0 – Robocore
Compre a Franzininho C0 – Casa da Robótica





