sexta-feira, 6 de outubro de 2017

Código completo com sensor e funções piscar

Trabalhando com sensores - funções

// 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();
  if(distancia<100){
    piscar2();
  } else { piscar();}
 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);}

}

//função piscar leds
void piscar(){
  digitalWrite(led1, HIGH);
  digitalWrite(led2, HIGH);
  digitalWrite(led3, HIGH);
  digitalWrite(led4, HIGH);
  delay(500);
  digitalWrite(led1, LOW);
  digitalWrite(led2, LOW);
  digitalWrite(led3, LOW);
  digitalWrite(led4, LOW);
  delay(500);
}//fim da funcçãp piscar

//função piscar sequencialmente leds
void piscar2(){
  int tempo=50;
  digitalWrite(led1, HIGH);
  delay(tempo);
  digitalWrite(led1, LOW);
  delay(tempo);
  digitalWrite(led2, HIGH);
  delay(tempo);
  digitalWrite(led2,LOW);
  delay(tempo);
 digitalWrite(led3, HIGH);
  delay(tempo);
  digitalWrite(led3, LOW);
  delay(tempo);
  digitalWrite(led4, HIGH);
  delay(tempo);
  digitalWrite(led4,LOW);
  delay(tempo);
}


Obs.: As funções que vc não for utilizar comente-as, ou seja, coloque duas barras // antes da função.

Nenhum comentário:

Postar um comentário