Linguagem de Programação C – Aula 07
Autor: Carlos Fernandes
E-mail para contato: carlos.fernandes@caruaru.ifpe.edu.br
A partir deste momento e até o encerramento do curso, desenvolveremos projetos práticos visando aprimorar, de forma progressiva e consistente, nossas habilidades de programação utilizando a plataforma Arduino. Tais atividades proporcionarão a consolidação dos conhecimentos teóricos adquiridos, por meio da aplicação em contextos reais e desafiadores.
1. Circuito com LED RGB.
Vamos aprender como controlar LEDs multicoloridos utilizando as saídas analógicas do Arduino. Conectaremos um LED RGB ao Arduino Uno e desenvolveremos um programa simples para alterar sua coloração. Aqui, no Tinkercad Circuits, você pode explorar o circuito de exemplo (clique em *Iniciar Simulação* para observar a mudança de cores do LED) e montar o seu próprio circuito ao lado. Caso deseje, reúna seus componentes eletrônicos e construa-o fisicamente utilizando um Arduino Uno, cabo USB, protoboard, um LED RGB, resistores (qualquer valor entre 100 e 1K ohms será adequado) e alguns fios para protoboard.
A síntese aditiva de cores, baseada na luz, possui três cores primárias: vermelho, verde e azul. A combinação dessas três cores em diferentes níveis de intensidade permite a reprodução de praticamente qualquer tonalidade luminosa. Os LEDs que alteram cores funcionam sob o mesmo princípio, porém seus diodos emissores de luz estão integrados em um único encapsulado, conhecido como LED RGB. Esses componentes possuem quatro terminais: um para cada cor e um destinado ao terra ou à alimentação, dependendo de sua configuração. Tais variações são denominadas, respectivamente, “cátodo comum” e “ânodo comum”.

Construindo o circuito
Considerando que você está se familiarizando com o uso da protoboard, segue a versão alternativa deste circuito com fiação livre, para fins de comparação. É possível montar o circuito de qualquer uma das formas no editor Circuits; no entanto, caso esteja realizando a montagem com componentes físicos, a utilização da protoboard facilitará a correspondência visual entre o circuito virtual e o real.

- Experimente você mesmo! Adicione um novo Arduino e uma protoboard ao lado do exemplo fornecido. Prepare sua protoboard conectando o pino 5V do Arduino ao trilho de alimentação e o pino GND ao trilho de terra.
- Selecione um LED RGB no painel de componentes e posicione-o atravessando quatro linhas distintas da protoboard.
- No simulador, o LED RGB possui um cátodo comum (polo negativo, terra) em seu segundo terminal. Portanto, conecte essa linha/pino ao terra da protoboard.
- Adicione três resistores (arrastando todos de uma vez ou criando um e duplicando-o) e posicione-os nas linhas correspondentes aos três pinos restantes do LED, atravessando a divisão central da protoboard até três linhas distintas do outro lado.
- Conecte fios das extremidades livres dos resistores a três dos pinos do Arduino compatíveis com PWM (Modulação por Largura de Pulso), identificados pelo símbolo ~ (til).
- Para organizar sua montagem, ajuste as cores dos fios (usando o menu suspenso ou teclas numéricas) e cobre curvas nos fios (clicando duas vezes para inserir pontos de inflexão).
Construindo o circuito com protoboard
Abaixo a Figura 03 com o circuito montado em uma protoboard.

Código para o circuito RGB
//C++ code
//
void setup()
{
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
}
void loop()
{
analogWrite(11, 255);
analogWrite(10, 0);
analogWrite(9, 0);
delay(1000); // Wait for 1000 millisecond(s)
analogWrite(11, 255);
analogWrite(10, 255);
analogWrite(9, 102);
delay(1000); // Wait for 1000 millisecond(s)
}
Código para fazer o circuito funcionar.
Desafio
Identifique as linhas de código responsável por cada uma das cores no programa e documente com comentários.
2. Sensor de Movimento PIR (Entrada Digital)
Objetivo da Aula:
Nesta aula, aprenderemos a detectar movimento em um ambiente utilizando um sensor PIR (Passive InfraRed – Infravermelho Passivo) em conjunto com um Arduino. Montaremos um circuito empregando uma protoboard e desenvolveremos um código simples para controlar três LEDs.
Pré-requisitos:
Como vocês já adquiriram experiência na leitura de sinais digitais com um botão (pushbutton), esta lição ampliará esses conhecimentos. Embora o sensor de movimento possa parecer mais complexo devido à sua placa dedicada, seu princípio de funcionamento é análogo ao de um botão: ele emite um sinal HIGH ou LOW conforme a detecção de movimento.
Fundamentos Técnicos do Sensor PIR:
Tecnologia Infravermelho Passivo:
- O termo “PIR” refere-se à capacidade do sensor de detectar passivamente níveis de luz infravermelha (diferentemente de uma câmera infravermelha, que pode emitir luz para capturar reflexos).
- A cúpula branca atua como uma lente que amplia o campo de visão do detector infravermelho.
Funcionamento do Sensor:
- Por padrão, o sensor emite um sinal LOW.
- Ele mede continuamente a quantidade de luz infravermelha ambiente.
- Quando ocorre uma variação significativa nos níveis de luz (causada, por exemplo, pelo movimento de um corpo humano), o sinal muda para HIGH por um período pré-determinado.
Limitações e Alternativas:
- O sensor PIR detecta presença de movimento, mas não fornece informações sobre distância.
- Para medição de distância, recomenda-se o uso de sensores analógicos, como um ultrassônico (ultrasonic rangefinder).
Aplicação Prática:
O circuito proposto permitirá:
- Acionar LEDs conforme a detecção de movimento
- Demonstrar a interpretação de sinais digitais em sistemas embarcados
- Introduzir técnicas básicas de debugging via Serial Monitor
Próximos Passos:
Na sequência, detalharemos:
- Diagrama de conexões na protoboard
- Estrutura do código Arduino (com tratamento de sinais digitais)
- Métodos para calibrar o sensor PIR
Reflexão Acadêmica:
Como o sensor PIR poderia ser integrado em sistemas de automação residencial ou segurança? Que variáveis ambientais (ex.: temperatura, interferências luminosas) podem afetar sua precisão?
Explorando o Circuito de Exemplo no Ambiente Virtual
Iniciando a Simulação:
- Execute a simulação no workplane (ambiente virtual) e clique sobre o sensor PIR para ativá-lo.
- Uma área destacada à frente do sensor será exibida, contendo um círculo que representa um “objeto” detectável.
- Caso o círculo não esteja visível, ajuste o zoom ou redimensione a área de visualização.
Simulando Movimento:
- Clique e arraste o círculo (“objeto”) dentro da área de detecção do sensor para simular movimento (Figura 05).
- Observe como o circuito responde à presença do objeto (ex.: acionamento de LEDs, alteração no Serial Monitor).

Abaixo a Figura 06 temos o circuito montado.

Abaixo temos o código par ao funcionamento do circuito.
// C++ code // int sensorState = 0; void setup() { pinMode(2, INPUT); pinMode(LED_BUILTIN, OUTPUT); Serial.begin(9600); } void loop() { // leitura do estado do sensor/entrada digital sensorState = digitalRead(2); // verifique se o pino do sensor está HIGH. Se estiver, acende o LED. if (sensorState == HIGH) { digitalWrite(LED_BUILTIN, HIGH); Serial.println("Sensor activated!"); } else { digitalWrite(LED_BUILTIN, LOW); } delay(10); // Espera um pouco para melhorar o desempenho da simulação }
Desafio
Determinar a distância do objeto e mostrar.
Fim da aula 07