ultrasons_basic_8b
El logo d'arduino us baixarà l'arxiu per fer la pràctica.
Aquesta practica es la continuació de l'anterior,
Exactament igual: 8 zones que disparen un so concret però, ara, incorporem leds específic per cada zona.
No és el mateix que la pràctica sobre l'R2-D2 on s'encenien tots els leds conforme ens acostavem sino que cada zona te el seu propi led.
Això pot ser important per remarcar el lloc o zona que està activa en aquell moment, un estímul visual que afavoreixi la comprensió.
/***************************************************/
//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 dels noms dels colors en english
//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
//colors per ordre 1 negre, 2 gris, 3 groc, 4 taronja, 5 vermell, 6 rosa, 7 verd i 8 marró
#include <SoftwareSerial.h>
#include <MP3.h>
SoftwareSerial Geno(7,8); // Rx , Tx
/** defineix mp3 class */
MP3 mp3;
int dis0= 45;
int dis1 = 40;
int dis2 = 35;
int dis3 = 30;
int dis4 = 25;
int dis5 = 20;
int dis6 = 15;
int dis7 = 10;
int dis8 = 5;
// Establim zones la distancia en cm para la comprovació
// Librerias necesarias para el funcionamiento
#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("color NEGRE - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_1();
delay(200);
}
else if (distancia <=dis2 && distancia >dis3){
so_2();
Serial.print("color GRIS - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_2();
delay(200);
}
else if (distancia <= dis3 && distancia >dis4){
so_3();
Serial.print("color TARONJA - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_3();
delay(200);
}
else if (distancia <= dis4 && distancia >dis5){
so_4();
Serial.print("color GROC - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_4();
delay(200);
}
else if (distancia <= dis5 && distancia >dis6){
so_5();
Serial.print("color VERMELL - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_5();
delay(200);
}
else if (distancia <= dis6 && distancia >dis7){
so_6();
Serial.print("color ROSA - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_6();
delay(200);
}
else if (distancia <= dis7 && distancia >dis8){
so_7();
Serial.print("color VERD - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_7();
delay(200);
}
else if (distancia <=dis8 && distancia >1){
so_8();
Serial.print("color MARRO - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_8();
delay(200);
}
else if (distancia <= dis0 && distancia == 45){
Serial.print("res cap color Fora de focus - Distancia: ");
Serial.print(ultrasonido.Ranging(CM));
Serial.println(" cm");
llum_0();
//so_0();
delay(200);
}
llum_0();
}
void so_1(){
llum_1();
mp3.volume(0x1F);
mp3.play_spi_flash(0x0001);//NEGRE
delay (1000);//durada del so UN
}
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);//GRIS
delay (1000);//durada del so DOS
}
void llum_2(){
digitalWrite(led1,LOW);
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);//GROC
delay (1000);//durada del so TRES
}
void llum_3(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
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);//TARONJA
delay (1000);//durada del so QUATRE
}
void llum_4(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
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);//VERMELL
delay (1000);//durada del so CINC
}
void llum_5(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
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);//ROSA
delay (1000);//durada del so SIS
}
void llum_6(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,HIGH);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
}
void so_7(){
llum_7();
mp3.volume(0x1F);
mp3.play_spi_flash(0x0007);//VERD
delay (1000);//durada del so SET
}
void llum_7(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,HIGH);
digitalWrite(led8,LOW);
}
void so_8(){
llum_8();
mp3.volume(0x1F);
mp3.play_spi_flash(0x0008);//MARRÓ
delay (1000);//durada del so VUIT
}
void llum_8(){
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
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);
}
Obra publicada con Licencia Creative Commons Reconocimiento Compartir igual 4.0