#6 ES COSA DE ENCONTRAR EL TIEMPO CORRECTO

Introducción

Cuando el relé 1 se activa, da continuidad la ampolleta que se alimenta con 220v, cuando se activa el relé 3 suena la sirena indicando que se infringió el sistema de seguridad.

Pasos a seguir:

En la linea 186 leemos el valor análogo y el 187 convertimos el valor leído en algo util para cambiar el tempo.

#1   Armar el circuito según la imagen

#2   Abrir el IDE de Arduino y conectar la tarjeta PICARO al computador

#3   Seleccionar el tipo de tarjeta como Arduino Uno

#4   Elegir el puerto serial en que se encuentra conectada la tarjeta PICARO

#5   Copiar el código de ejemplo al IDE, compilarlo y subirlo

Listado de componentes :

Código:

Hasta la linea 131 solo se definen las frecuencias para cada nota, después vienen listas con las notas y las duraciones. En la linea 169 sing hace lo suyo reproduciendo nota por nota.
int factor = 50;

int p_v;

float mtemp = 2;

 

#define g0 15000   //Se definen las notas con su frecuencia

#define b0 31

#define c1 33

#define c1s 35

#define d1b 35

#define d1 37

#define d1s 39

#define e1b 39

#define e1 41

#define f1 44

#define f1s 46

#define g1b 46

#define g1 49

#define g1s 52

#define a1b 52

#define a1 55

#define a1s 58

#define b1b 58

#define b1 62

#define c2 65

#define c2s 69

#define d2b 69

#define d2 73

#define d2s 78

#define e2b 78

#define e2 82

#define f2 87

#define f2s 93

#define g2b 93

#define g2 98

#define g2s 104

#define a2b 104

#define a2 110

#define a2s 117

#define b2b 117

#define b2 123

#define c3 131

#define c3s 139

#define d3b 139

#define d3 147

#define d3s 156

#define e3b 156

#define e3 165

#define f3 175

#define f3s 185

#define g3b 185

#define g3 196

#define g3s 208

#define a3b 208

#define a3 220

#define a3s 233

#define b3b 233

#define b3 247

#define c4 262

#define c4s 277

#define d4b 277

#define d4 294

#define d4s 311

#define e4b 311

#define e4 330

#define f4 349

#define f4s 370

#define g4b 370

#define g4 392

#define g4s 415

#define a4b 415

#define a4 440

#define a4s 466

#define b4b 466

#define b4 494

#define c5 523

#define c5s 554

#define d5b 554

#define d5 587

#define d5s 622

#define e5b 622

#define e5 659

#define f5 698

#define f5s 740

#define g5b 740

#define g5 784

#define g5s 831

#define a5b 831

#define a5 880

#define a5s 932

#define b5b 932

#define b5 988

#define c6 1047

#define c6s 1109

#define d6b 1109

#define d6 1175

#define d6s 1245

#define e6b 1245

#define e6 1319

#define f6 1397

#define f6s 1480

#define g6b 1480

#define g6 1568

#define g6s 1661

#define a6b 1661

#define a6 1760

#define a6s 1865

#define b6b 1865

#define b6 1976

#define c7 2093

#define c7s 2217

#define d7b 2217

#define d7 2349

#define d7s 2489

#define e7b 2489

#define e7 2637

#define f7 2794

#define f7s 2960

#define g7b 2960

#define g7 3136

#define g7s 3322

#define a7b 3322

#define a7 3520

#define a7s 3729

#define b7b 3729

#define b7 3951

#define c8 4186

#define c8s 4435

#define d8b 4435

#define d8 4699

#define d8s 4978

#define e8b 4978

 

 

#define melodyPin 3   //El pin 3 es el que va conectado al Speaker 

 

int melody[] = {   // Se crea la melodía, generando una secuencia entre las notas

  d5, c5, b4, c5, e5b,

  f5, e5b, d5, e5b, g5,

  a5b, g5, f5s, g5, d6, c6, b5, c6, d6, c6, b5, c6, e6b

  , c6, e6b,

  d6, c6, b5, c6, d6, c6, b5, c6, d6, c6, b5, a5b, g5,

  g5, a5b, b5, b5, c6, b5, a5b, g5, f5,

  b5, g5, a5b, b6, b6, c6, b6, a6b, g5,

  f5, e5b, f5, g5, g5, a5b, g5, f5, e5b,

  d5,

  g4, e5b, f5, g5, g5, a5b, g5, f5, e5b,

  d5,

  e6b, c6, d6, e6b, d6, c6, b5,

  c6, g5, a5b, f5,

  e5b, d5, c5, d5, c5

};

 

int noteDurations[] = {     //Se le asigna los tiempos a cada nota

4, 4, 4, 4, 1, 4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 2, 2, 2, 

2, 2, 2, 2, 2, 2,2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 1, 2, 2, 2, 

2, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 1 , 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 5, 5, 1

                      };

 

void setup(void)

{ 

  pinMode(3, OUTPUT);    //Se declara el pin 3 como Salida.

 

}

void loop()

{

  sing(1);  //Se llama a la función que genera la melodía

}

int song = 0;

 

void sing(int s) {

 

  song = s;

  int size = sizeof(noteDurations)       //el tamaño sera igual a la duración de las notas

  for (int thisNote = 0; thisNote < size; thisNote++) {     //Se crea un ciclo

    int noteDuration = 1000 / (noteDurations[thisNote] * mtemp); // Se varia el tiempo por medio del potenciometro

    buzz(melodyPin, melody[thisNote], noteDuration); //Se envía al pin la nota que va a tocar y su duración

    int pauseBetweenNotes = noteDuration * 2.30;  //Tiempo entre las notas

    delay(pauseBetweenNotes);

    buzz(melodyPin, 0, noteDuration);

  }

}

 

void buzz(int targetPin, long frequency, long length) {

 

  long delayValue = 1000000 / frequency / 4;

 

  p_v = analogRead(A0);   //Lectura de la salida del potenciometro

  mtemp = map(p_v, 350, 1024, 0.01, 10);    //Mapea los valores del potenciometro

  long numCycles = frequency * length / 1000;   //Cantidad de ciclos

 

  for (long i = 0; i < numCycles; i++) {   //Se genera un ciclo repetitivo de la melodía

    digitalWrite(targetPin, HIGH);

    delayMicroseconds(delayValue);

    digitalWrite(targetPin, LOW);

    delayMicroseconds(delayValue);

  }

}

 

Demostración

    Vamos a imaginar que tenemos en un condominio, un tanque de agua, que mide su nivel a través de un flotante, para ello simularemos nuestro flotante con un potenciometro, el sistema debe activar una alarma de precaución cuando llegue al 30% de agua, de igual manera se debe activar un tono mas agudo cuando este en un nivel de 10% que indicara que ya no se puede suministrar agua al condominio. Tienes las herramientas para generar un tono y una melodía, solo debes asignar valores para el 30% y 10% y compararlos con lo que haya a la salida del potenciometro y podrás hacerlo. Éxito!

¿En busca del Kit PICARO?

Con el PICARO Starter Kit podrás realizar estos ejemplos ¡y mucho más!
Producto Chileno. Encuéntralo en MCI Electronics.

Contacto

Direccion Luis Thayer Ojeda 0115 Of. 1105, Providencia, Santiago, Chile.

Phone: +56 2 2333 9579 / +56 2 2231 9268

Horario Lunes a Viernes de 8:00 a 18:00

Nosotros

En MCI Electronics, estamos aquí para mantener la industria en movimiento. Nuestro objetivo es difundir y hacer accesible el uso de la electrónica a todo aquel que tenga el interés. Para ello nos esforzamos para traer los mejores componentes y módulos de manera que puedas aprender desarrollando tus propios proyectos.

Somos tu aliado en electrónica.

Suscríbete a nuestro boletín