Arduino

2. Sensor hc-sr04

Creat per Isaac Muro
Creative Commons Licence

Sensor Ultrasònic HC-SR04

És aquest!

Com funciona?

Funciona enviant ones de só (s'activa el Trigger), tocant a l'objecte i tornant al receptor (s'activa el Echo).

Com funciona?

Pins

  • Vcc
  • Trig (Trigger)
  • Echo
  • Gnd

Pins

  • Vcc => 5v
  • Trig => pin 9
  • Echo => pin 10
  • Gnd => gnd

Conexions

Codi

Primer declarem dues variables pels pins Trig i Echo


const int trigPin = 9;
const int echoPin = 10;
				

Codi

Després declararem dues variables reals per guardar la duració i la distancia.


float duration, distance;
				

Codi

Després declararem dues variables reals per guardar la duració i la distancia.


void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  Serial.begin(9600);
}
				

Codi

En el loop posem a LOW el pin Trig, esperem 2 miliseconds, el posem a HIGH, esperem 10 milisegons i el tornem a posar a LOW.

Durant el temps que el Trig està HIGH envia la senyal de só.


void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
				

Codi

Quan el só arriba al receptor, posa el Echo a HIGH. Existeix una funció a Arduino per esperar fins que un pin es posi a HIGH.

Es diu pulseIn(), i espera fins que el pin es torni HIGH en aquest cas. Retorna el temps en milisegons.


duration = pulseIn(echoPin, HIGH);
				

Codi

Ara tenim el temps que triga la senyal a arribar al pin Echo.

Sabem que la velocitat = distància / temps. Per tant, distància = temps * velocitat.

També sabem que la velocitat del só és: 0.343 centímetres cada milisegon. Ho dividim per 2 perquè va fins l'objecte i torna.


distance = (duration*.0343)/2;
				

Codi

Imprimim el resultat pel port serie.


  Serial.print("Distance: ");
  Serial.println(distance);
  delay(100);
}
				

Repte 1

Fes que tot això funcioni i comprova que el sensor detecta la distància.

Repte 2

Fes que quan el sensor detecti una distància més petita que 10 cms, s'encengui el led D13.

THANKS