Você está na página 1de 16

Sessão 2 - 2015.06.

20
 
Em cada atividade grave o código do programa Arduino e faça o esquemas das ligações 
com o Fritzing. 
Atividade 01 ­ Sensor LDR para ligar luz 
Atividade 02 ­ LDR + Laser + buzzer como alarme 
Atividade 03 ­ RGB Led 
Ativicade 04 ­ Infravermelhos + buzzer como alarme 
Atividade 05 ­ Sensor de temperatura LM35 
Ativicade 06 ­ Sensor ultrasons para determinar distâncias de objetos 
Ativicade 07 ­ Sensor presença para ligar luz / alarme 
Ativicade 08 ­ Piezzo como sensor de vibrações 
Ativicade 09 ­ Contrução de Arduino Uno em Breadboard com ATmega328P­PU 
Ativicade 10 ­ Utilização do arduino da atividade 07 com FTDI 
Ativicade 11 ­ Teste de vários sensores (KIT) 
Ativicade 11.01 ­ Sensor temperatura e humidade (DTH11) 
Ativicade 11.02 ­ TILT 
Ativicade 12.02 ­ …. 
 
 
 

Em cada atividade grave o código do programa Arduino e faça o esquemas das 
ligações com o Fritzing.
Atividade 01 - Sensor LDR para ligar luz
LDR (Light Dependent Resistor) ­ Resistência dependente de luz. 
 
O LDR possui a interessante característica de ser um componente eletrônico cuja 
resistência elétrica diminui quando sobre ele incide energia luminosa. 
Isto possibilita a utilização deste componente para desenvolver um sensor que é ativado (ou 
desativado) quando sobre ele incidir energia luminosa. 
Como vai estar ligado a uma porta analógica, o Arduino irá obter valores entre 0 e 1023. 
 
 
Esquema de ligação 

 
 
Pretende­se: 
1. Acender o led quando o valor for inferior a 400 
2. Altere o esquema da atividade 05 (da 1ª sessão) de modo a acender um led por 
cada múltiplo de 100. Isto é: se o valor lido do LDR for superior a 700 deverá ter 
10­7=3 leds acessos. 
3. Troque o LDR pelo potenciómetro e adapte o problema anterior. 
Atividade 02 - LDR + Laser + buzzer como alarme
Pretende­se ligar a luz laser e direcionar a luz para o LDR. 
Quando a luz do laser incide no LDR liga uma luz verde. 
Faz uma pausa de um segundo. 
Se o feixe de luz for interrompido deve: 
­ tocar um som no buzzer 
­ ligar uma luz vermelha intermitente (liga meio segundo, desliga meio segundo) 
durante 5 segundos, usando o ciclo FOR. 
­ terminado o ciclo desligar o buzzer 
 
Podem incorporar este código para fazer tocar o buzzer. 
 
#define tempo 10 
 
int frequencia = 0; 
int pinoBuzzer = 10; 
 
void setup() { 
  pinMode(pinoBuzzer ,OUTPUT);     //Pino do buzzer 

 
void loop() { 
  for (frequencia = 150; frequencia < 1800; frequencia += 1) { 
    tone(pinoBuzzer  lante, frequencia, tempo);  
    delay(1); 
  } 
  for (frequencia = 1800; frequencia > 150; frequencia ­= 1) { 
    tone(pinoBuzzer , frequencia, tempo);  
    delay(1); 
  } 

 
 
 
 
 
 
Atividade 03 - RGB Led
Podemos ter dois tidos de leds RGB. 

 
O mais comum é aquele que partilha o pino negativo. 
 
Prepare a seguinte esquema. 

 
Os pinos dos leds devem ser ligados às portas 3, 5 e 6 do arduino. 
Estas são portas PWM, ou seja, embora sejam portas digitais podemos utilizá­las como se 
fossem portas analógicas (analogRead e analogWrite), mas os valores máximos lidos/a 
escrever variam entre 0 e 255.. 
 
Pretendemos: 
1. CICLO de ligar leds 
Ligar o led vermelho, depois o verde e finalmente o azul. Pausa de 3 segundos. 
Desligar o led verde. Pausa de 3 segundos. 
Desligar o led vermelho e ligar o led verde. Pausa de 3 segundos. 
Desligar todos os leds. Pausa de 3 segundos. 
 
Utilizar a instrução analogWrite, com a utilização de ciclos, para ir testando o “Ciclo 
de ligar leds” variando o valor da variável entre 0 e 250 com intervalos de 10 em 10. 
 
2. Alterar a atividade para utilizar o potenciómetro para alterar o valor da intensidade 
do led e um botão para ir alterando a cor do led que estamos a alterar. 
 
 

Ativicade 04 - Infravermelhos + buzzer como alarme


Altere a atividade 02 para utilizar os leds emissor e recetor de infravermelhos. 
 
 
 
Atividade 05 - Sensor de temperatura LM35
 

 
Temperatura inferior a 20 ºC acende a luz amarela. 
Temperatura entre 20 ºC e 25 ºC acende luz verde. 
Temperatura acima de 25 ºC acende luz vermelha. 
 
Atividade 06 - Sensor ultra-sons para determinar distâncias de
objetos
O  Sensor  Ultrasónico  HC­SR04  funciona  como  um  detector  de  objetos  e  permite  medir 
distâncias  mínimas   de  2  centímetros podendo chegar a distancias máximas de até 5 metros 
com uma precisão de 3 milímetros . 

Estes  sensores  emitem  um   sinal  ultrasónico   que  reflete  em  um  objeto  e   retorna  ao  sensor 
(eco).  O  sinal  de  retorno  é  captado,  permitindo  deduzir  a  distância  do  objeto  ao  sensor 
tomando o tempo de trânsito do sinal. 

A  velocidade  do  sinal ultrasónico é de aproximadamente 240 m/s, logo se o sensor estiver a 


uma   distância  “d”  do  objeto  o  sinal  percorrerá  uma  distância  equivalente  a  “2d”  para  sair  e 
retornar  ao  sensor.  Sabendo  esses  conceitos  é  possível  calcularmos  a  distância  de  um 
objeto  pela  fórmula:

Pinagem.: 

● VCC : Alimentação 5v 
● TRIG : Pino de Gatilho 
● ECHO : Pino de Eco 
● GND : Terra 
 

 
 
 
/* 
 HC­SR04 Ping distance sensor: 
 VCC to arduino 5v  
 GND to arduino GND 
 Echo to Arduino pin 7  
 Trig to Arduino pin 8        */ 
 
#define echoPin 7 // Echo Pin 
#define trigPin 8 // Trigger Pin 
#define LEDPin 13 // Onboard LED 
 
int maximumRange = 200; // Maximum range needed 
int minimumRange = 0; // Minimum range needed 
long duration, distance; // Duration used to calculate distance 
 
void setup() { 
 Serial.begin (9600); 
 pinMode(trigPin, OUTPUT); 
 pinMode(echoPin, INPUT); 
 pinMode(LEDPin, OUTPUT); // Use LED indicator (if required) 

 
void loop() { 
/* The following trigPin/echoPin cycle is used to determine the 
 distance of the nearest object by bouncing soundwaves off of it. */  
 digitalWrite(trigPin, LOW);  
 delayMicroseconds(2);  
 
 digitalWrite(trigPin, HIGH); 
 delayMicroseconds(10);  
  
 digitalWrite(trigPin, LOW); 
 duration = pulseIn(echoPin, HIGH); 
  
 //Calculate the distance (in cm) based on the speed of sound. 
 distance = duration/58.2; 
  
 if (distance >= maximumRange || distance <= minimumRange){ 
 /* Send a negative number to computer and Turn LED ON  
 to indicate "out of range" */ 
 Serial.println("­1"); 
 digitalWrite(LEDPin, HIGH);  
 } 
 else { 
 /* Send the distance to the computer using Serial protocol, and 
 turn LED OFF to indicate successful reading. */ 
 Serial.println(distance); 
 digitalWrite(LEDPin, LOW);  
 } 
  
 //Delay 50ms before next reading. 
 delay(50); 
}   
 
 

Ativicade 07 - Sensor presença para ligar luz / alarme


 
Os sensores de presença mais comuns usam sensores ​  (​
PIR​ , ou ​
Passive Infrared Sensor​ Sensor 
Infravermelho Passivo​) como detector de movimentos. 

No Arduino, temos o ​
módulo PIR DYP­ME003​ , que une numa mesma estrutura o sensor PIR e 
também os circuitos necessários para ajuste e controle do sinal de saída. 

 
O módulo contém o sensor PIR propriamente dito, composto internamente por duas faixas com material 
sensível ao infravermelho. Na parte externa, uma espécie de capa/tampa que na verdade é uma ​
lente 
fresnel​

Quando há variação na detecção do sinal infravermelho entre essas duas faixas de material sensível, a 
saída é acionada por um determinado tempo. A lente fresnel tem a função de, vamos dizer assim, 
"ampliar" o campo de visão do sensor, condensando a luz em um único ponto. 

Felizmente existem figuras para traduzir toda essa teoria e mostrar de uma forma mais clara como isso 
funciona.  

Abaixo, o sensor PIR, a lente fresnel e as duas faixas de detecção, acionadas quando alguém passa 
em frente ao sensor : 

Nessa outra figura, uma representação de como funciona uma lente fresnel : 

Resumidamente, é assim que a coisa funciona. Uma explicação muito melhor e mais detalhada você 
encontra no ​  do módulo, ​
datasheet​ nesse link​

Vamos então para a parte boa, analisando o módulo e testando­o com um ​
Arduino Uno​
. :­) 

No lado esquerdo da imagem, o módulo sem a lente, com o sensor exposto. No lado direito, a parte 
inferior do módulo, com os 2 pinos de alimentação (4.5 à 20 volts ) e sinal, os potenciômetros para 
ajuste da sensibilidade e tempo de acionamento da saída, e também o jumper que controla o modo de 
operação do trigger (gatilho) : 

Apenas preste atenção quando for ligar o seu módulo, pois alguns apresentam os pinos Vcc e GND 
invertidos. Na dúvida, consulte o datasheet do seu módulo ou verifique as indicações na placa. 

Nesse módulo, praticamente não há necessidade de programação no Arduino, já que a saída é 
colocada em HIGH (ALTO), quando um objeto for detectado, e permanece assim pelo tempo que 
configurarmos no potenciômetro. Basta então definirmos o que será feito com as saídas do Arduino : 
No loop do programa, o valor lido da porta 3 (ligada ao pino de sinal do sensor), é constantemente 
verificado, e caso ocorra movimento em frente ao sensor, o ​ led vermelho​ ligado à porta 5 é acionado. 
Caso contrário, é o ​
led azul​
 ligado à porta 6 que permanece acionado. 
 
 
Analise o seguinte programa, crie o esquema de ligação e teste o funcionamento. 
 
// Programa : Sensor de presenca com modulo PIR 
// Autor : Arduino e Cia 
int​  pinoledverm = ​ 5​; ​
//Pino ligado ao led vermelho 
int​  pinoledazul = ​ 6​; ​
//Pino ligado ao led azul 
int​  pinopir = ​3​;  ​
//Pino ligado ao sensor PIR 
int​  acionamento;  ​ //Variavel para guardar valor do sensor 
void​  setup() 

  pinMode(pinoledverm, OUTPUT); ​ //Define pino como saida 
  pinMode(pinoledazul, OUTPUT); ​ //Define pino como saida 
  pinMode(pinopir, INPUT);   ​ //Define pino sensor como entrada 

void​  loop() 

 acionamento = digitalRead(pinopir); ​ //Le o valor do sensor PIR 
 ​
if​ (acionamento == LOW)  ​ //Sem movimento, mantem led azul ligado 
 { 
digitalWrite(pinoledverm, LOW); 
digitalWrite(pinoledazul, HIGH); 
 } 
 ​
else​   ​
//Caso seja detectado um movimento, aciona o led vermelho 
 { 
digitalWrite(pinoledverm, HIGH); 
digitalWrite(pinoledazul, LOW); 
 } 

 
 

 * PIR sensor tester 
 */ 
  
int ledPin = 13;                // choose the pin for the LED 
int inputPin = 2;               // choose the input pin (for PIR sensor) 
int pirState = LOW;             // we start, assuming no motion detected 
int val = 0;                    // variable for reading the pin status 
  
void setup() { 
  pinMode(ledPin, OUTPUT);      // declare LED as output 
  pinMode(inputPin, INPUT);     // declare sensor as input 
  
  Serial.begin(9600); 

  
void loop(){ 
  val = digitalRead(inputPin);  // read input value 
  if (val == HIGH) {            // check if the input is HIGH 
    digitalWrite(ledPin, HIGH);  // turn LED ON 
    if (pirState == LOW) { 
      // we have just turned on 
      Serial.println("Motion detected!"); 
      // We only want to print on the output change, not state 
      pirState = HIGH; 
    } 
  } else { 
    digitalWrite(ledPin, LOW); // turn LED OFF 
    if (pirState == HIGH){ 
      // we have just turned of 
      Serial.println("Motion ended!"); 
      // We only want to print on the output change, not state 
      pirState = LOW; 
    } 
  } 

 
 
 
 
 
Ativicade 08 - Piezzo como sensor de vibrações
Utilize o piezzo buzzer como sensor de vibração e a partir do valor 50 deve ativar um led. 
Crie o esquema da ligação no fritzing 
 
 
 

Ativicade 09 - Contrução de Arduino Uno em Breadboard com


ATmega328P-PU
 
A realizar grupo a grupo. 
 

Ativicade 10 - Utilização do arduino da atividade 07 com FTDI


 
A realizar grupo a grupo. 
 
Ativicade 11 - Teste de vários sensores (KIT)

Ativicade 11.01 - Sensor temperatura e humidade (DTH11)


Sensor DHT11 ­ ajuda a monitorar com apenas 1 sensor a temperatura e umidade. 

 
Alimentação: 3,0 a 5,0 VDC (5,5 Vdc máximo) 
– Corrente: 200uA a 500mA, em stand by de 100uA a 150 uA 
– Faixa de medição de umidade: 20 a 90% UR 
– Faixa de medição de temperatura: 0º a 50ºC 
– Precisão de umidade de medição: ± 5,0% UR 
– Precisão de medição de temperatura: ± 2.0 ºC 
– Tempo de resposta: < 5s 
– Dimensões: 23mm x 12mm x 5mm (incluindo terminais) 
 
Formato dos dados: 8bit integral RH data + 8bit decimal RH data + 8bit integral T data + 8bit 
decimal T data + 8bit check sum = 40 bits 
 

 
Esquema de ligação 
 
Fazer download da biblioteca: DHT­sensor­library­master.zip 
Instalar a biblioteca através da IDE do arduino: 
Menu Rascunho → Include Library → Add .ZIP Library 

 
 
Pesquise o ficheiro ZIP 
Depois abra o exemplo em: Ficheiro → Exemplos → DTH Sensor Library → DTHTester 
Compile e envie para o Arduino. 

Abra a janela de “Monitor Série”.  
Anote a temperatura e humidade registada pelo sensor. 
 
 

Ativicade 11.02 - TILT


 

Ativicade 12.02 - ….
 
Teste os restantes sensores e para cada um crie uma subatividade.