Saltar la navegación

ultras_so_basic_7

Projecte final. Sons que s'activen al apropar-se a un objecte.
Projecte R2-D2. 8 zones, diversos sons i moviments de servos (que es documentaran en un altre apartat):
En aquest punt ens limitarem als sensors de sons.
Conforme ens apropem al objecte que porta el sensor es van encenet els leds fins estar molt a prop i tenir-los tots encesos.
logo_arduino

/***************************************************/
//sons originals peli
//modificació feta per Joan Gelabert i Jesús Arbués. www.sacost.org
//està feta per comprovar que la shield mp3 d'elechouse funciona activada per un sensor de ultrasons HC-SR04.
//activa un só si estàs aprop i un só si estàs lluny
//els sons són el de la carpeta sons animals
//la funció llum està dins la funció so
#define trigPin 2 //hem modificat els pins del sensor d'ultrasons per no coincidir amb els pins de l'elechouse
#define echoPin 3 //en els dos aparells originàriament empraven el 7 i 8
#define led1 4 //definim a quin pin connectam els leds
#define led2 5
#define led3 6
#define led4 9
#define led5 10
#define led6 11
#define led7 12
#define led8 13


#include <SoftwareSerial.h>
#include <MP3.h>
SoftwareSerial Geno(7,8); // Rx , Tx
/** defineix mp3 class */
MP3 mp3;
int dis0=100;
int dis1 = 99;
int dis2 = 90;
int dis3 = 80;
int dis4 = 65;
int dis5 = 50;
int dis6 = 35;
int dis7 = 25;
int dis8 = 15;

// Establim zones la distancia en cm para la comprovació

// LLibreria necesaria per el funcionamient
#include "Ultrasonic.h"

// Declaram el sensor d'ultrasons en els pins digitals triats.
//El 5800´fixa la distància màxima de funcionament es calcula multiplicant els cm per 58. En aquest cas funcionarà fins a 1 metre.
//hem tingut problemes en aproximar-nos molt llum 8 i so 8 pe aquest motiu en espera de solucionar-ho ho hem anul·lat.
//Creiem que en augmentar la distància disminueix la sensibilitat propera.
Ultrasonic ultrasonido(trigPin,echoPin,5800);



void setup() {
 Serial.begin (9600);
  pinMode(trigPin, OUTPUT); // Establim el pin trig com a sortida
  pinMode(echoPin, INPUT); // Establim el pin echo com a entrada
  pinMode(led1, OUTPUT); // Establecem el led com a sortides
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  //so
 delay (3000); //s'ha de deixar un segon per estabilitzar shield
 mp3.begin(MP3_SOFTWARE_SERIAL);    // selecciona software serial
 
  /** fixa volum MAX */
 mp3.volume(0x1F);
 
  /** selecciona MP3 Shield SINGLE mode */
  mp3.set_mode(MP3::SINGLE);
  // fi so
 
}

void loop() {
   int distancia;
    distancia = ultrasonido.Ranging(CM);

  if (distancia <=dis1 && distancia >dis2){
    so_1();
    Serial.print("so 1 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_1();  
     
     delay(200);
     
    }
     else if (distancia <=dis2 && distancia >dis3){
     so_2();
       Serial.print("so 2 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_2();  
     delay(200);
    }
     else if (distancia <= dis3 && distancia >dis4){
     so_3();
       Serial.print("so 3 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_3();  
     delay(200);
    }
       else if (distancia <= dis4 && distancia >dis5){
     so_4();
         Serial.print("so 4 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_4();
    
     delay(200);
     
    }
       else if (distancia <= dis5 && distancia >dis6){
     so_5();
         Serial.print("so 5 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_5();  
    
     delay(200);
    }
    
     else if (distancia <= dis6 && distancia >dis7){
    so_6();
       Serial.print("so 6 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_6();  
     
     delay(200);
    }
     else if (distancia <= dis7 && distancia >dis8){
     so_7();
       Serial.print("so 7 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_7();  
    
     delay(200);
     
    }
    /*  else if (distancia <=dis8 && distancia >1){
    so_8();
    Serial.print("so 8 - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     //llum_8();
     
     delay(200);
     
    }*/
     else if (distancia ==dis0 || distancia <100){
    Serial.print("res cap so - Distancia: ");
    Serial.print(ultrasonido.Ranging(CM));
    Serial.println(" cm");
     llum_0();
     //so_8();
     delay(200);
     
    }
    
//llum_0();
}
void so_1(){
    llum_1();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0001);so1
     delay (900);//durada del so 1
}
}
void llum_1(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,LOW);
     digitalWrite(led3,LOW);
     digitalWrite(led4,LOW);
     digitalWrite(led5,LOW);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
     }
void so_2(){
  llum_2();   
  mp3.volume(0x1F);
     mp3.play_spi_flash(0x0002);//so 2
     delay (800);//durada del so 2
}
void llum_2(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,LOW);
     digitalWrite(led4,LOW);
     digitalWrite(led5,LOW);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
}
void so_3(){
     llum_3();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0003);//so3
     delay (1200);//durada del so3
}
void llum_3(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,LOW);
     digitalWrite(led5,LOW);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
}
void so_4(){
  llum_4();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0004);//so4
     delay (1250);//durada del so4
}
void llum_4(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,HIGH);
     digitalWrite(led5,LOW);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
}
void so_5(){
  llum_5();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0005);//so5
     delay (1250);//durada del so5
}
void llum_5(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,HIGH);
     digitalWrite(led5,HIGH);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
}
void so_6(){
  llum_6();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0006);//s06
     delay (1000);//durada del so6
}
void llum_6(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,HIGH);
     digitalWrite(led5,HIGH);
     digitalWrite(led6,HIGH);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);}
void so_7(){
  llum_7();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0007);//so7
     delay (700);//durada del so7
}
void llum_7(){
     digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,HIGH);
     digitalWrite(led5,HIGH);
     digitalWrite(led6,HIGH);
     digitalWrite(led7,HIGH);
     digitalWrite(led8,LOW);}
void so_8(){
  llum_8();
     mp3.volume(0x1F);
     mp3.play_spi_flash(0x0008);//so8
     delay (2000);//durada del so8
}
void llum_8(){
digitalWrite(led1,HIGH);
     digitalWrite(led2,HIGH);
     digitalWrite(led3,HIGH);
     digitalWrite(led4,HIGH);
     digitalWrite(led5,HIGH);
     digitalWrite(led6,HIGH);
     digitalWrite(led7,HIGH);
     digitalWrite(led8,HIGH);
}
void llum_0(){
     digitalWrite(led1,LOW);
     digitalWrite(led2,LOW);
     digitalWrite(led3,LOW);
     digitalWrite(led4,LOW);
     digitalWrite(led5,LOW);
     digitalWrite(led6,LOW);
     digitalWrite(led7,LOW);
     digitalWrite(led8,LOW);
}