quarta-feira, 16 de outubro de 2019

XVI - ENCONTRO: Medidor de distância (parte 2)

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.

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);
}


Abraço a todos

Nenhum comentário:

Postar um comentário