sexta-feira, 18 de outubro de 2013

Sensor ultrassonico

Agora vamos usar um sensor ultrassonico, nesse caso, o DYP-ME007V1. porém qualquer outro que possua trigger e echo, pode ser utilizado sem problemas.

Minha montagem do sensor

Infelizmente ainda não consegui o arduino mega no fritzing, portanto vou escrever como ligar!
O sensor ultrassonico possui essenciamente 4 pinos ( as portas pode, ser alteradas para o arduino UNO):


      VCC - Deve ser ligado ao 5V do arduino
      TRIG - Deve ser ligado ao pino 30 do arduino
      ECHO - Deve ser ligado ao pino 31 do arduino
      GND - Deve ser ligado ao gnd do arduino

O LED RGB, Respectivamente, pinos 1, 2, 3 e 4



22 ---------------100R---------------------R    GND   G     B
GND ----------------------------------------------|       |      |
23 ---------------1K------------------------------------|      |
24 ---------------1K-----------------------------------------

Por que o led vermelho possui uma resistencia menor?, para compensar o brilho dele em relação aos outros!.


Agora vamos para o programa!
Para este programa precisamos da bibliotenca NEWPING, que pode ser baixada neste link: https://code.google.com/p/arduino-new-ping/

Explicacão do programa: A biblioteca newping, faz todo o trabalho de enviar o sinal ultrassonico, esperar e receber e converter o tempo levado para a distancia, restando apenas usar o comando de obter a distancia,


 para definir quais leds devem acender a cada momento, foi utilizado o IF, lembrando que o simbolo && significa a operação "E", ou seja, se tal afirmação for verdadeira E tal for falsa, executar algo, no nosso caso, se a distancia for maior que zero centimetros E menor que 5 centimetros, então piscar o led vermelho.


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

#include <NewPing.h>
#define TRIGGER_PIN  30
#define ECHO_PIN     31
#define MAX_DISTANCE 200

int ledR = 22;
int ledG = 23;
int ledB = 24;

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {              
  Serial.begin(9600);

  pinMode(ledR, OUTPUT);  
  pinMode(ledG, OUTPUT);
  pinMode(ledB, OUTPUT);
}
void loop()
{
  delay(50);                      // define um valor de delay! para o sensor, é necessario no minimo 29ms, para evitar que ele receba o som do ultimo envio, e confunda as distancias
  unsigned int uS = sonar.ping(); // Envia o sinal sonoro e recebe o tempo que levou
  Serial.print("Ping: ");
  Serial.print(uS / US_ROUNDTRIP_CM); // Converte o tempo para CM
  Serial.println("cm");
  int dist = (uS / US_ROUNDTRIP_CM);  // cria uma variavel inteira para a distancia em cm

  if ((dist > 0) && (dist < 5))  //se a distancia estiver entre 0 e 5 centimetros, piscar a luz vermelha
  {
    digitalWrite(ledR, HIGH);
    digitalWrite(ledG, LOW);
    digitalWrite(ledB, LOW);
    delay (10);
    digitalWrite(ledR, LOW);
        digitalWrite(ledG, LOW);
    digitalWrite(ledB, LOW);
    delay (10);
  }
     if ((dist > 5) && (dist < 10))
  {
    digitalWrite(ledR, HIGH);
    digitalWrite(ledG, LOW);
    digitalWrite(ledB, LOW);
  }
   if ((dist > 10) && (dist < 20))
  {
    digitalWrite(ledR, HIGH);
    digitalWrite(ledG, LOW);
    digitalWrite(ledB, HIGH);
  }
  if ((dist > 20) && (dist < 50))
  {
    digitalWrite(ledR, LOW);
    digitalWrite(ledG, LOW);
    digitalWrite(ledB, HIGH);
  }
  if ((dist > 50) && (dist < 200))
  {
    digitalWrite(ledR, LOW);
    digitalWrite(ledG, HIGH);
    digitalWrite(ledB, LOW);
  }
  delay (5);    
}



Video do funcionamento do programa!



Até a proxima!, duvidas, por favor, perguntem!

Nenhum comentário:

Postar um comentário