sexta-feira, 22 de setembro de 2017

Código ping traduzido e comentado

Olá turma
Código para medir e acender os 4 leds

// Conexão Ping))) conectar pino do arduino ao sensor
int sinal=8;   //indica qual pino do arduino o sensor esta ligado
int distancia; //gurada o valor da distancia medida
unsigned long pulseduration=0;  //duração do pulso
//conexão dos leds
int led1=13;
int led2=12;
int led3=11;
int led4=10;
 


//função roda apenas quando o arduino é ligado e configura
void setup()
{
 pinMode(led1, OUTPUT);
 pinMode(led2, OUTPUT);
 pinMode(led3, OUTPUT);
 pinMode(led4, OUTPUT);
 pinMode(sinal, OUTPUT);   //configura o pino de sinal como saida
 Serial.begin(9600);      //faz a comunicação do arduino com o computador via usb
}



void loop()
{
 // le o sensor Ping)))
 medirDistancia();

 // divideo o valor do pulso pela metade
 pulseduration=pulseduration/2;

 // now convert to centimetres. We're metric here people...
 //converte a duranção do pulso em centimetros e armazena na variavel distância
 distancia = int(pulseduration/29);

 // Display on serial monitor
 Serial.print("Distance - ");
 Serial.print(distancia);
 Serial.println(" cm");
 acender();
 delay(100);
 
}

//função para calcular a distancia
void medirDistancia()
{
 // set pin as output so we can send a pulse
 //definir pino sinal como saída para que possamos enviar um pulso
 pinMode(sinal, OUTPUT);
// set output to LOW
 digitalWrite(sinal, LOW);
 delayMicroseconds(5);

 // now send the 5uS pulse out to activate Ping)))
 //agora envie o pulso de 5uS para ativar Ping
 digitalWrite(sinal, HIGH);
 delayMicroseconds(5);
 digitalWrite(sinal, LOW);

 // now we need to change the digital pin
 // to input to read the incoming pulse
 //agora precisamos mudar o pino digital
 // para inserir para ler o pulso recebido
 pinMode(sinal, INPUT);

 // finally, measure the length of the incoming pulse
 //finalmente, medimos o comprimento do pulso recebido
 pulseduration=pulseIn(sinal, HIGH);
}

//função para acender os led conforme a distancia
void acender(){
  if(distancia<30){ digitalWrite(led1, HIGH);}else{digitalWrite(led1, LOW);}
  if(distancia<60){ digitalWrite(led2, HIGH);}else{digitalWrite(led2, LOW);}
  if(distancia<90){ digitalWrite(led3, HIGH);}else{digitalWrite(led3, LOW);}
  if(distancia<120){ digitalWrite(led4, HIGH);}else{digitalWrite(led4, LOW);}

}

Nenhum comentário:

Postar um comentário