Projeto - 08
Desenvolver um projeto utilizando dois sensores de distância ultrassônico e um micro servo para simular a abertura de uma cancela.
01 - Arduino Mega 2560
01 - Protoboard
02 - Sensor de Distância Ultrassônico
01 - Micro Servo 9g
01 - LED RGB
03 - Resistor de 220Ω para o LED
Jumpers
Componentes
Qtd | Descrição
-LED RGB (RED na porta 3, GREEN na porta 5, BLUE na porta 6).
-Sensor Ultrassônico 1: VCC conectado em 5V, o trigger (saída) na porta digital 8, o echo (entrada) na porta 7, o GND no GDN do Arduino.
-Sensor Ultrassônico 2: VCC conectado em 5V, o trigger (saída) na porta digital 10, o echo (entrada) na porta 9, o GND no GDN do Arduino.
Para os sensores é necessário instalar a biblioteca #include Ultrasonic.h
Informar os dados para o arduino:
Sensor(Porta de Saída, Porta de Entrada)
-Micro servo na porta digital 11.
É necessário instalar a biblioteca
#include <Servo.h> para utilizar o Micro Servo.
Instruções
- Arduino IDE
- Variáveis e Constantes
- Operadores Relacionais
- Operadores Lógicos
- Portas Digitais
- Construção de Algoritmos: Estrutura de Repetição Variável de Controle
- Especificações dos seguintes componentes:
(Protoboard) (Led RGB) (Resistor) (Jumper)
Conhecimentos
Observação:
-
Diagrama de Blocos

Protótipo do Circuito

#include <Ultrasonic.h>
#include <Servo.h>
#define servo1 11
#define red 4
#define green 5
#define blue 6
//Define os pinos para o trigger e echo
Ultrasonic sensor1(8,7);
Ultrasonic sensor2(10,9);
Servo s1;
long distanciaSensor1, distanciaSensor2;
int pos1; //posicao do servo
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
s1.attach(servo1);
s1.write(0); // Iniciar servo 1 na posição zero
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(red, HIGH);
digitalWrite(green, LOW);
digitalWrite(blue, LOW);
distanciaSensor1 = sensor1.Ranging(CM); //retorna em CM
delay(20);
while (distanciaSensor1 < 20) {
for (pos1 = 0; pos1 < 90; pos1++) {
s1.write(pos1);
delay(40);
}
distanciaSensor1 = sensor1.Ranging(CM);
distanciaSensor2 = sensor2.Ranging(CM);
while (distanciaSensor1 < 20 || distanciaSensor2 < 20) {
digitalWrite(red, LOW);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, LOW);
distanciaSensor1 = sensor1.Ranging(CM);
distanciaSensor2 = sensor2.Ranging(CM);
}
digitalWrite(RED, HIGH);
digitalWrite(GREEN, LOW);
digitalWrite(BLUE, LOW);
for(pos1 = 90; pos1 > 0; pos1--)
{
s1.write(pos1);
delay(40);
}
}
}
Código
// programa para 1 sensor
#include <Ultrasonic.h>
#include <Servo.h>
#define servo1 11
#define red 3
#define green 5
#define blue 6
//Define os pinos para o trigger e echo
Ultrasonic sensor1(8,7);
Servo s1;
long distanciaSensor1;
int pos1; //posicao do servo
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(blue, OUTPUT);
pinMode(green, OUTPUT);
s1.attach(servo1);
s1.write(0); // Iniciar servo 1 na posição zero
}
void loop() {
// put your main code here, to run repeatedly:
int valor = 255; // para rgb anodo
digitalWrite(red, valor-255);
digitalWrite(green, valor - 0);
digitalWrite(blue, valor - 0);
distanciaSensor1 = sensor1.Ranging(CM); //retorna em CM
delay(20);
Serial.println(distanciaSensor1);
while (distanciaSensor1 < 20) {
for (pos1 = 0; pos1 < 90; pos1++) {
s1.write(pos1);
delay(40);
}
distanciaSensor1 = sensor1.Ranging(CM);
while (distanciaSensor1 < 20 ) {
digitalWrite(red, valor-0);
digitalWrite(green, valor-255);
digitalWrite(blue, valor-0);
distanciaSensor1 = sensor1.Ranging(CM);
}
digitalWrite(red, valor-255);
digitalWrite(green, valor - 0);
digitalWrite(blue, valor - 0);
for(pos1 = 90; pos1 > 0; pos1--)
{
s1.write(pos1);
delay(40);
}
}
}