XVI - ENCONTRO: MEDIDOR DE DISTÂNCIA (parte 2)
Olá pessoal, neste encontro do dia 20/09/2019, Continuamos nosso projeto de "régua" com sensor ultrassônico, com o objetivo de indicar a medida aproximada até a distancia de 1 metro.
Desenvolvemos o código a partir de modelos obtidos nos sites
https://portal.vidadesilicio.com.br/hc-sr04-sensor-ultrassonico/
http://mbedgeek.blogspot.com/2018/12/ultrasonic-sensor-arduino-HC-SR04.html
https://portal.vidadesilicio.com.br/hc-sr04-sensor-ultrassonico/
http://mbedgeek.blogspot.com/2018/12/ultrasonic-sensor-arduino-HC-SR04.html
Nossa atividade
Eletrônica:
Montagem no tinkercad adicionando um sensor de distância ultrassônico
Programação:
Criamos uma função para medir distância
Revimos a função map()
Desenvolvemos o seguinte código:
const byte trigger_Pin = 3; //Initialize I/O pins
const byte echo_Pin = 2;
unsigned long duration; //Since PulseIn return an unsigned Long
unsigned int distance; //To save the distance
//configura leds
int led10=13;
int led20=12;
int led30=11;
int led40=10;
int led50=9;
int led60=8;
int led70=7;
int led80=6;
int led90=5;
int led100=4;
int d=100; //medição antiga
void setup()
{
pinMode(led10, OUTPUT);
pinMode(led20, OUTPUT);
pinMode(led30, OUTPUT);
pinMode(led40, OUTPUT);
pinMode(led50, OUTPUT);
pinMode(led60, OUTPUT);
pinMode(led70, OUTPUT);
pinMode(led80, OUTPUT);
pinMode(led90, OUTPUT);
pinMode(led100, OUTPUT);
Serial.begin(9600);
pinMode(echo_Pin, INPUT); //Echo pin as Input
pinMode(trigger_Pin, OUTPUT); //Trigger pin as Output
}
void loop()
{
medir();
if(distance<d) apagarAll();
acender(distance);
d=distance;
}
void acender(int valor)
{
if(valor>=10) digitalWrite(led10,HIGH);
if(valor>=20) digitalWrite(led20,HIGH);
if(valor>=30) digitalWrite(led30,HIGH);
if(valor>=40) digitalWrite(led40,HIGH);
if(valor>=50) digitalWrite(led50,HIGH);
if(valor>=60) digitalWrite(led60,HIGH);
if(valor>=70) digitalWrite(led70,HIGH);
if(valor>=80) digitalWrite(led80,HIGH);
if(valor>=90) digitalWrite(led90,HIGH);
if(valor>=100) digitalWrite(led100,HIGH);
}
void apagarAll(){
digitalWrite(led10,LOW);
digitalWrite(led20,LOW);
digitalWrite(led30,LOW);
digitalWrite(led40,LOW);
digitalWrite(led50,LOW);
digitalWrite(led60,LOW);
digitalWrite(led70,LOW);
digitalWrite(led80,LOW);
digitalWrite(led90,LOW);
digitalWrite(led10,LOW);
}
//fumção medir distancia com hc sr04
void medir() {
digitalWrite(trigger_Pin, LOW); //Make Trigger pin Low at start
delay(1);
digitalWrite(trigger_Pin, HIGH);
delayMicroseconds(10); //Make Trigger pin High for 10 uS to start sending the pulse
digitalWrite(trigger_Pin, LOW);
duration = pulseIn(echo_Pin, HIGH); //Save the time it took ultrasonic wave to come back
distance = duration * 0.017; //((340*100)/10e6)/2
/* Speed of the sound in Air = 340 m/S
* multiply it by 100 to get the data in cm
* divide by 1,000,000 as duration is measured in microseconds
* divide by 2 as ultrasound signal travels to object and comes back
*/
Serial.print("Distacia do sensor (cm) : ");
Serial.println(distance);
delay(100);
}
const byte trigger_Pin = 3; //Initialize I/O pins
const byte echo_Pin = 2;
unsigned long duration; //Since PulseIn return an unsigned Long
unsigned int distance; //To save the distance
//configura leds
int led10=13;
int led20=12;
int led30=11;
int led40=10;
int led50=9;
int led60=8;
int led70=7;
int led80=6;
int led90=5;
int led100=4;
int d=100; //medição antiga
void setup()
{
pinMode(led10, OUTPUT);
pinMode(led20, OUTPUT);
pinMode(led30, OUTPUT);
pinMode(led40, OUTPUT);
pinMode(led50, OUTPUT);
pinMode(led60, OUTPUT);
pinMode(led70, OUTPUT);
pinMode(led80, OUTPUT);
pinMode(led90, OUTPUT);
pinMode(led100, OUTPUT);
Serial.begin(9600);
pinMode(echo_Pin, INPUT); //Echo pin as Input
pinMode(trigger_Pin, OUTPUT); //Trigger pin as Output
}
void loop()
{
medir();
if(distance<d) apagarAll();
acender(distance);
d=distance;
}
void acender(int valor)
{
if(valor>=10) digitalWrite(led10,HIGH);
if(valor>=20) digitalWrite(led20,HIGH);
if(valor>=30) digitalWrite(led30,HIGH);
if(valor>=40) digitalWrite(led40,HIGH);
if(valor>=50) digitalWrite(led50,HIGH);
if(valor>=60) digitalWrite(led60,HIGH);
if(valor>=70) digitalWrite(led70,HIGH);
if(valor>=80) digitalWrite(led80,HIGH);
if(valor>=90) digitalWrite(led90,HIGH);
if(valor>=100) digitalWrite(led100,HIGH);
}
void apagarAll(){
digitalWrite(led10,LOW);
digitalWrite(led20,LOW);
digitalWrite(led30,LOW);
digitalWrite(led40,LOW);
digitalWrite(led50,LOW);
digitalWrite(led60,LOW);
digitalWrite(led70,LOW);
digitalWrite(led80,LOW);
digitalWrite(led90,LOW);
digitalWrite(led10,LOW);
}
//fumção medir distancia com hc sr04
void medir() {
digitalWrite(trigger_Pin, LOW); //Make Trigger pin Low at start
delay(1);
digitalWrite(trigger_Pin, HIGH);
delayMicroseconds(10); //Make Trigger pin High for 10 uS to start sending the pulse
digitalWrite(trigger_Pin, LOW);
duration = pulseIn(echo_Pin, HIGH); //Save the time it took ultrasonic wave to come back
distance = duration * 0.017; //((340*100)/10e6)/2
/* Speed of the sound in Air = 340 m/S
* multiply it by 100 to get the data in cm
* divide by 1,000,000 as duration is measured in microseconds
* divide by 2 as ultrasound signal travels to object and comes back
*/
Serial.print("Distacia do sensor (cm) : ");
Serial.println(distance);
delay(100);
}
Abraço a todos
Nenhum comentário:
Postar um comentário