P07. Sensor Ultrasons
P07. Sensor Ultrasons
El sensor d'ultrasons HC-SR04 treballa en microsegons per centímetre (1/1.000.000µs)
Segons la Wikipèdia, la velocitat del sò es de 343,2 metres per segon. O bé, 34.320 centímetres per segon. O bé 1 centímetre per cada 29,13 microsegons.
Té un rang de distàncies entre 2cm. i 5mt. amb una precisió de 3mm.
Envia un senyal a través del "Trigger (gallet, disparador)" i el recull a través del "Echo (eco)". El resultat que obtenim del sensor és el temps transcorregut entre l'enviament del senyal i el seu rebot en l'objecte mesurat. El detall que caldrà tenir en compte és que el valor resultant és sempre la suma de l'anada i la tornada del senyal. Per exemple, un objecte que es troba a 2 mt del sensor serà mesurat pel temps que el so necessita per transcórrer 4 mt (els 2 mt d'anada del senyal i els 2 mt de tornada del mateix senyal). Per la qual cosa serà sempre serà necessari dividir per 2 el valor del temps transcorregut per mesurar una determinada distància.
ACTIVITATS A REALITZAR
1. Encendre un led
2. Avís sonor
MATERIAL NECESSARI
1 tarja Arduino UNO
1 sensor d'ultrasons HC-SR04
1 led
1 placa protoboard
4 cables
1. Encendre un Led
Instruccions:
El Led s'encén si l'objecte detectat està a menys de 10 cm
Els ports utilitzats són:
A0-trigger
A1-echo
13-led
Programació
/* Encendre un Led amb el sensor d'ultrasons HC-SR04 sense utilitzar cap llibreria
El Led s'encén si l'objecte detectat està a menys de 10 cm
Els ports utilitzats són: A0-trigger, A1-echo, 13-led
La fórmula de conversió de temps en centímetres = temps / 29,13 / 2
Per evitar el ralentiment del processador en operar amb números reals
ho modifiquem a: temps * 100 / 2913 / 2, per tal d'operar amb números enters
*/// Configuració dels ports
int pinTrigger = A0; // Configuració del port del Trigger
int pinEcho = A1; // Configuració del port del Echo
int pinLed = 13; // Configuració del port del LED
// Configuració de variables
int limit = 10;
long temps = 0;
long distancia = 0;
void setup() {
Serial.begin(9600); // Configuració de la connexió amb el Monitor Sèrie
pinMode(pinTrigger, OUTPUT); // Configuració del pin del Trigger com a OUTPUT (això es podria canviar per: pinMode(pinTrigger, 1);)
pinMode(pinEcho, INPUT); // Configuració del pin del Echo com a INTPUT (això es podria canviar per: pinMode(pinEcho, 0);)
pinMode(pinLed, OUTPUT); // Configuració del pin del Led com a OUTPUT (això es podria canviar per: pinMode(pinLed, 1);)
}
void loop() {
digitalWrite(pinTrigger, LOW);//Iniciem el disparador amb LOW durant 4us per assegurar-nos que està apagat
delayMicroseconds(4);
digitalWrite(pinTrigger, HIGH); // Activem el Trigger durant 10us
delayMicroseconds(10);
digitalWrite(pinTrigger, LOW);
temps = pulseIn(pinEcho, HIGH); // Escoltem l'Echo: "temps" emmagatzema el temps que triga l'ona ultrasònica en anar i tornar
distancia = temps * 100 / 2913/ 2; // Conversió del temps emprat per l'ona ultrasònica en anar i tornar en centímetres
if (distancia >= 500 || distancia <= 0)// Si la distància és major de 500cm o menor de 0cm... {
Serial.print("Fora de rang: "); // ...no mesura res i adverteix de "fora de rang"
Serial.println(distancia);
}
else { // Altrament...
Serial.print("Detectat un objecte a "); // ...presentació dels resultats en cm pel Monitor Sèrie
Serial.print(distancia);
Serial.println(" cm");
if(distancia <= limit && distancia >= 1) // Si troba algun objecte entre els 10 primers cm...
{
digitalWrite(pinLed, HIGH); // ...encén el LED
}
else { // Si no...
digitalWrite(pinLed, LOW); // ...apaga el LED
}
}
delay(500);
}
2. Avís sonor
NIVELL AVANÇAT:
T'atreveixes a fer la programació d'aquesta segona activitat ? ?