Saltar la navegación

ultra_so_basic_3

El logo d'arduino us baixarà l'arxiu per fer la pràctica.

logo_arduino

esquema

basic 3

//HC-SR04 detecta 4 zones (configurable) i si estàs fora de camp
// fer a partir d'un exemple de David Ortega Cuadrado - dorcu.com
//modificat per Joan Gelabert i Jesús Arbués www.sacosta.org
//detecta 4 zones d'aproximació i si estàs fora de camp
//molt aprop menys de 10 cm
//aprop entre 10 i 25
//lluny entre 25 i 40
//molt lluny entre 40 i 50
//fora de camp més de 50
// 9 agost 2015
//www.sacosta.org

//en principi han d'estar totes apagades i es van encenen

// Definim els pins a emprar. En aquesta aproximació emprarem només el 7, 8, 5V i GND i els pins 2, 3, 4 i 5 per donar sensació de proximitat o llunyania
#define trigPin 7 //trig va a 7
#define echoPin 8 //echo va a 8
//vcc va a 5v
//gnd a gnd
#define led1 2
#define led2 3

#define led3 4
#define led4 5


int molt_aprop = 10;
int aprop = 25;
int lluny = 40;
int molt_lluny=50;
// Establim la distància en cm per a la comprobació i que ens marqui molt aprop, aprop, lluny, molt lluny o fora de camp

// LLibreria necesaria per el funcionamient  ´es pot trobar a https://mega.co.nz/#!bMBXgD7Q!2sCMD1fupFCENXINfngolbyt4zrN0olDw_t5Zk-taAU
#include "Ultrasonic.h"

// Declaram el sensor ultrasonido en los pins digitales assignats anteriorment
Ultrasonic ultrasonido(trigPin,echoPin);

void setup() {
  Serial.begin (9600);
  pinMode(trigPin, OUTPUT);  // Establim el pin trig com a sortida
  pinMode(echoPin, INPUT);   // Establim el pin echo com entrada
  pinMode(led1, OUTPUT);     // Establim el led1 com a sortida
  pinMode(led2, OUTPUT);     // Establim el led2 com a sortida
  pinMode(led3, OUTPUT);     // Establim el led3 com a sortida
  pinMode(led4, OUTPUT);     // Establim el led4 com a sortida
  digitalWrite(led1, LOW);   // Apagam el led1
  digitalWrite(led2, LOW);   // Apagam el led2
  digitalWrite(led3, LOW);   // Apagam el led3
  digitalWrite(led4, LOW);   // Apagam el led4
 

}

void loop() {
  int distancia;

  distancia = ultrasonido.Ranging(CM);

  if (distancia < molt_aprop){//encen els quatre leds i escriu a serial print molt aprop i la posició en cm
    Serial.print("Molt aprop - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    digitalWrite(led1,HIGH); // Encenem led1
    digitalWrite(led2,HIGH); // Encenem led2
    digitalWrite(led3,HIGH); // Encenem led3
    digitalWrite(led4,HIGH); // Encenem led4
  }
  else if (distancia >= molt_aprop && distancia < aprop){//encen els tres primers leds i escriu a serial print aprop i la posició en cm
    Serial.print("Aprop - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    digitalWrite(led1,HIGH); // Encenem led1
    digitalWrite(led2,HIGH); // Encenem led2
    digitalWrite(led3,HIGH); // Encenem led3
    digitalWrite(led4,LOW); // Apagam led4
  }
  else if(distancia >= aprop && distancia < lluny){//encen els 2 primers leds i a serial print escriu lluny i la posició en cm
    Serial.print("Lluny - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    digitalWrite(led1,HIGH); // Encenem led1
    digitalWrite(led2,HIGH); // Encenem led2
    digitalWrite(led3,LOW); // Apagam led3
    digitalWrite(led4,LOW); // Apagam led4
  }
  else if(distancia >= lluny && distancia < molt_lluny){//encen només el primer led i a serial print escriu molt lluny i la posició en cm
    Serial.print("Molt_lluny - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    digitalWrite(led1,HIGH);  // Encenem led1
    digitalWrite(led2,LOW);   // Apagam led2
    digitalWrite(led3,LOW);   // Apagam led3
    digitalWrite(led4,LOW);   // Apagam led4
  }
  else {//tots els leds apagats i a serial print escriu molt lluny i distància major de 51
    Serial.print("Fora de camp - Distancia > ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
    digitalWrite(led1,LOW);    // Apagam led1
    digitalWrite(led2,LOW);    // Apagam led2
    digitalWrite(led3,LOW);    // Apagam led3
    digitalWrite(led4,LOW);    // Apagam led4
  }

  delay(1000);//cada segon comprova la distància
 
  digitalWrite(led1, LOW);     // Apagam el led1
  digitalWrite(led2, LOW);     // Apagam el led1
  digitalWrite(led3, LOW);     // Apagam el led1
  digitalWrite(led4, LOW);     // Apagam el led1
}