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