Tarefa Arduino ultra-som

 avatar
user_5974404
c_cpp
6 months ago
1.6 kB
3
Indexable
Never
float cm = 0; 					
long readUltrasonicDistance(int triggerPin, int echoPin) 

{
  pinMode(8, OUTPUT);			
  pinMode(triggerPin, OUTPUT);  
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(10);		
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);		
  digitalWrite(triggerPin, LOW);
  pinMode(echoPin, INPUT);		
  return pulseIn(echoPin, HIGH);
}

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  cm = 0.01723 * readUltrasonicDistance(7, 7);
  
  if ((cm > 200)&&(cm < 300)) {
    digitalWrite(8, HIGH);	
    tone(8, 440, 200);     	
    delay(300);				
  	digitalWrite(8, LOW);	
    delay(300);				
  }
  
  if ((cm > 100)&&(cm < 200)) {
    digitalWrite(8, HIGH);	
    tone(8, 440, 150);   	
    delay(150);				
  	digitalWrite(8, LOW);	
    delay(150);    			
  }
  // Caso a distância medida esteja em 50 e 100 cm, emitir som curto e rápido
  if ((cm > 50)&&(cm < 100)) {
    digitalWrite(8, HIGH);	// Define que o pino 8 está com tensão
    tone(8, 440, 80);     	// Nota Lá (440 Hz)
    delay(80);				// Aguarda 80 milisegundos
  	digitalWrite(8, LOW);	// Define que o pino 8 está sem tensão
    delay(80);				// Aguarda 80 milisegundos
  }
  // Caso a distância medida seja menor do que 50 cm, emitir som contínuo
  if (cm < 50) {
    digitalWrite(8, HIGH);	// Define que o pino 8 está com tensão
    tone(8, 440);     		// Nota Lá (440 Hz)
  }

  Serial.print(cm);			// Imprimir no monitor serial a distância em cm
  Serial.println(" cm");	// Imprimir no monitor serial a unidade cm e pular uma linha
  delay(100); 				// Espera por 100 milisegundos (0,1s)
}
Leave a Comment