Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante   Click to listen highlighted text! Seja Bem-Vindo. Este site tem recursos de leitura de texto, basta marcar o texto e clicar no ícone do alto-falante

Introdução à Linguagem de Programação – Aula 07

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”.

Figura 01 – Arranjo sem a protoboard.

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.

Figura 02 – Detalhes da montagem sem protoboard.

 

  1. 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.
  2. Selecione um LED RGB no painel de componentes e posicione-o atravessando quatro linhas distintas da protoboard.
  3. 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.
  4. 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.
  5. 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).
  6. 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.

Figura 03 – Circuito na 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:  

  1. 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).  
  2. A cúpula branca atua como uma lente que amplia o campo de visão do detector infravermelho. 

Funcionamento do Sensor:  

  1. Por padrão, o sensor emite um sinal LOW.  
  2. Ele mede continuamente a quantidade de luz infravermelha ambiente.  
  3. 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:  

  1. O sensor PIR detecta presença de movimento, mas não fornece informações sobre distância.  
  2. 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: 

  1. Execute a simulação no workplane (ambiente virtual) e clique sobre o sensor PIR para ativá-lo. 
  2. Uma área destacada à frente do sensor será exibida, contendo um círculo que representa um “objeto” detectável. 
  3. Caso o círculo não esteja visível, ajuste o zoom ou redimensione a área de visualização. 

Simulando Movimento: 

  1. Clique e arraste o círculo (“objeto”) dentro da área de detecção do sensor para simular movimento (Figura 05). 
  2. Observe como o circuito responde à presença do objeto (ex.: acionamento de LEDs, alteração no Serial Monitor). 
Figura 06 – Simulando movimento no ambiente virtual

Abaixo a Figura 06 temos o circuito montado.

Figura 06 – 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

Click to listen highlighted text!