Social Icons

Mostrando postagens com marcador Sensor. Mostrar todas as postagens
Mostrando postagens com marcador Sensor. Mostrar todas as postagens

Jeremy Blum Projects - Arduino Parte [5]

Essa é a semana 5...


Para quem não viu os outros ai vai o link:
Semana [1]
Semana [2]
Semana [3]
Semana [4]











Cada Imagem com Seus respectivos códigos abaixo. Click para dar Zoom.



//Program by Jeremy Blum                                                                                 
//www.jeremyblum.com                                                                                     
//Test Motor Speed Using a                                                                               Transistor                                                                                                         
//Define Pins                                                                     
int motorPin = 9;                                                                     
void setup()
{
  //Set the PWM Motor pin as an output
  pinMode(motorPin, OUTPUT);
}
void loop()
{
  //Increase Motor Speed from 0 -> 255
  for (int i=0; i<=255; i++)
  {
    analogWrite(motorPin, i);
    delay(10);
  }
  delay(500); //Hold it
  //Decrease Motor Speed from 255 -> 0
  for(int i=255; i>=0; i--)
  {
    analogWrite(motorPin, i);
    delay(10);
  }
  delay(500); //Hold it!
}


//Program by Jeremy Blum
//www.jeremyblum.com
//Controls a Servo Motor
//Include Servo Library
#include <Servo.h>
//Define Pins
int servoPin = 9;
//Create Servo Object
Servo jeremysServo;
void setup()
{
  //Attaches the Servo to our object
  jeremysServo.attach(servoPin);
}
void loop()
{
  //We can Turn a Servo to 180 degrees
  for (int i = 0; i <=180; i=i+20)
  {
    jeremysServo.write(i);
    delay(1000);
  }
 
}

---------------------------------------------------

//Program by Jeremy Blum
//www.jeremyblum.com
//Controls a Servo Motor using the info from an IR Distance Sensor
//Include Servo Library
#include <Servo.h>
//Define Pins
int servoPin = 9;
int distPin = 0;
//Create Servo Object
Servo jeremysServo;
void setup()
{
  //Attaches the Servo to our object
  jeremysServo.attach(servoPin);
}
void loop()
{
  //Read the Distance Sensor and adjust values
  int dist = analogRead(distPin);
  int pos = map(dist, 0, 1023, 0, 180);

  //Turn the servo
  jeremysServo.write(pos);
 
}

Alarme de Intruso com Arduino

Nada como um alarme para alertar a presença de um intruso.
Apresento o projeto de Alarme que desenvolvi.
Este dispositivo gera um sinal sonoro e luminoso e um botão desarma o alarme.
O código desenvolvido para o projeto é fexível e  permite a interação com  outros tipos de sensores de presença com nenhuma ou minimas modificações. 

Para esse projeto não será exigido um conhecimento em eletrônica elevado, mas será preciso conhecer alguns conceitos mais avançados de programação para compreender com facilidade o que o código está fazendo.

Para esse projeto vamos precisar de:

1x Sensor de presença PIR
2x LEDs, um Verde e outro Vermelho. Ou um LED bicolor.
1x Buzzer
1x Resistor de 1k (é possivel usar valores direfentes)
1x Resistor 220R (é possível usar também valores de 100R a 10k)
1x Arduino (qualquer modelo)
1x Matriz de contatos e fios.


Prepare todo o material e monte na sua matriz de contatos como ilustrado abaixo:


Clicar na imagem para ampliar

Confira todas as conexões.
Note que os LEDs não são ligados ao GND do arduino.
Lembre-se que essa forma de controlar LEDs com arduino já foi elucidada em turoriais antigos .Bem como o botão e o buzzer.

1-Agora plugue o seu arduino no cabo USB e faça a gravação do código abaixo:


//Alarme Contra Intruso.

Descição:
Sensor detecta intruso e ativa sinal sonoro e luminoso. 
O alarme é desarmado pressionando um botão.
Luz Verde: Alarme está aguardando.
Luz Vermelha: Alarme detectou algo.
*/

int ledVermelho = 8;                 //Pino para o LED vermelho(RED)
int ledVerde = 7;                    //Pino para o LED verde(Green)            
int piezoPin = 6;                   // Pino para o + do PIEZO

int PIRPin = 4;                      //Pino OUT do PIR(leitura de valores)
int botaoPin = 5;                   //Pino de leitura da entrada do Botão

int PIR = 0;                     //Variável que representa o valor fornecido pelo sensor PIR
int Bot = 0;                        //Variável que representa o valor fornecido pelo Botão



void setup() {               //Declara LEDs e PIEZO como pinos de Saída. PIR e Botão como Entrada
  pinMode(piezoPin, OUTPUT);
  pinMode(ledVermelho, OUTPUT); 
  pinMode(ledVerde, OUTPUT);                                
  pinMode(PIRPin, INPUT);    
  pinMode(botaoPin, INPUT);
  }



void somAlerta() {                          //Função de nome: "somAlerta" que gera sinal sonoro
  digitalWrite(piezoPin, HIGH);
  delayMicroseconds(600);
  digitalWrite(piezoPin, LOW);
  delayMicroseconds(600);
}

void piscaLED(){                                   //Função de nome: "piscaLED" que gera sinal sonoro
 
  digitalWrite(ledVerde, LOW);                    // Pino do ledVerde será o Terra
  digitalWrite(ledVermelho, HIGH);             // Led Vermelho ON
  delay(100);
 
  digitalWrite(ledVermelho,LOW);                 // Led Vermelho OFF          
  delay(100);
}



void loop(){
 
  PIR = digitalRead(PIRPin);     // Faz leitura do OUT do senso PIR e joga o valor lido na variável: "PIR"
 

 
if (PIR == HIGH) {             // Testa se a variável "PIR" é alta(5v), caso SIM: executa uma tarefa Caso NÃO pular para else{

  do{                                     //Faça essa tarefa e testar em while
    digitalWrite(ledVermelho, HIGH);     // Liga led Vermelho
    digitalWrite(ledVerde, LOW);         // Pino do led Verde torna-se o GND(terra) do led Vermelho
     somAlerta();                        //chama função que emite um som de alerta
 
    Bot = digitalRead(botaoPin);      //Faz leiturado do Botão e joga o valor na variálvel "Bot"  
   
    }while(Bot==0);  //Enquanto a variável Bot for zero(Botão não pressionado) continuar  executando           

}     
else{                                // PIR não está HIGH então executa as tarefas que estão no else{
           if(Bot==1){                        // caso o botão for pressionado após o alarme disparar fazer uma tarefa
               for(int i=0; i<5 ;i++){            // Temporiza(alguns segundo) a função que será chamada "piscaLED()"
                 piscaLED();                   //chama função que pisca o LED vermelho
                 }
                
                 digitalWrite(ledVermelho, LOW);    
                 digitalWrite(ledVerde, HIGH);     // Liga Led verde para
                 delay(10000);                      // Aguarda 10s (impede um novo alarme de imediato)
                
               Bot=0;         //Após o temporizador chamar e executar a função pescaLED declara que a variável "BOT" é zero
           }
     
     
          digitalWrite(ledVermelho, LOW);     // Mantem o pino Vermelho como GND(terra) para o lede VERDE
          digitalWrite(ledVerde, HIGH);       // Led Verde ON
       
     
    }
   
   
}



Entendendo o código:

Temos dois blocos básicos: if e um else, que testam o estado do sensor PIR. Caso for ativado(HIGH) uma tarefa é executada indeterminadamente. Nesta execução uma função é chamada: somAlerta();   que ativa o sinal sonoro. E também o LED vermelho é ativado.
Caso o sensor PIR não detectar(LOW) nenhum intruso o else é executado. Tornando o Led Verde e aguardando a presença de um intruso.
Entretanto é feito um teste para saber se o alarme foi desativado a poucos instantes. Se isso for verdade uma função: piscaLED(); é chamada dentro de um temporizador para piscar o LED Vermelho por alguns segundos. Este comportamento informa que o alarme está sendo desativado pelo botão.
Passado esse tempo o LED fica Verde indicando que o sensor está monitorando a área.
Há também um "timer" que estabelece um tempo minimo de 10s para disparo do alarme após este ser desativado pelo botão.
É importante notar que o botão funciona corretamente quando pressionado.
O botão só é habilitado para desarmar o alarme após alguns segundos obrigando um aviso de alerta.
O sensor pode detectar uma pessoa até 7m de distância.


Vejam o vídeo do seu funcionamento:




Sensor Simples de Proximidade +- 10CM



 Aqui desenvolvi um sensor bem simples que detecta aproximadamente,um objeto, a 10cm. Quando o sensor detecta algo o LED vermelho se apaga.  Veja abaixo mais detalhes:




Hardware Necessário:

>1 Placa Arduino
> Um LED InfraVermelho Transmissor
> Um LED Receptor Infravermelho
> Um LED Normal.



Código:

/* Programa para detectar distâcia de +-10cm e não sofre influência de outras fontes de luz,apenas do sol.
*/
int inPin = 7; // Diodo infravermelho TIL78 com filtro de luz(LED de cor negra)
int irPin = 11; // pino do LED emissor infravermelho(LED meio azulado)
int redPin=12; // LED normal de cor vermelha
int val = 0; // variavel lida no pino
void setup() {
pinMode(irPin, OUTPUT); // declare LED as output
pinMode(inPin, INPUT); // entrada do TIL78
pinMode(redPin, OUTPUT);
}
void loop()
{
val = digitalRead(inPin); // lendo valor  do TIL78
digitalWrite(irPin, HIGH); // o pino infravermelho esta sempre ligado
if (val == LOW) {          // é verdade quando tem algo no campo do ir(detectado) -- com luz o TIL78 gera "0"
digitalWrite(redPin, LOW); //  LED OFF
} else {  //se nao for "0"(LOW) vai ser "1"(HIGH) entao deve fazer: Ligar o LED vermelho.
digitalWrite(redPin, HIGH); //LED fica ligado ON
}
}