Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* TITULO: Radio FM con el módulo TEA5767 V3.
- AUTOR:
- MARIANO DEL CAMPO GARCÍA (@2016) --> INGENIERO TÉCNICO INDUSTRIAL ESPECIALIDAD ELECTRÓNICA
- - FACEBOOK: https://www.facebook.com/mariano.delcampogarcia
- - TWITTER: https://twitter.com/MarianoCampoGa
- - CORREO: marianodc83@gmail.com
- DESCRIPCIÓN DEL PROGRAMA
- Con este programa se pueden sintonizar de manera automática 16 emisoras de Radio FM de España. Si
- apretamos el pulsador "subeCanal" se sintonizará la frecuencia del siguiente canal y si apretamos
- el pulsador "bajaCanal" se sintonizará el canal anterior. Para saber en que emisora y frecuencia
- nos encontramos en cada momento disponemos de un LCD 1602 conectado mediante al Arduino mediante
- comunicación I2C al igual que el módulo TEA5767 V3, que es el que nos permite sintonizar las emisoras.
- La salida de audio del módulo TEA5767 V3 la conectaremos a unos altavoces auto amplificados mediante
- un conector Jack hembra de 3,5 mm del que dispone el módulo.
- ESQUEMA DE CONEXION
- +-----+
- +----[PWR]-------------------| USB |--+
- | +-----+ |
- | GND/RST2 [ ][ ] |
- | MOSI2/SCK2 [ ][ ] A5/SCL[ ] | SCL del módulo LCM 1602 I2C V1 y del módulo TEA5767 V3.
- | 5V/MISO2 [ ][ ] A4/SDA[ ] | SDA del módulo LCM 1602 I2C V1 y del módulo TEA5767 V3.
- | AREF[ ] |
- | GND[ ] |
- | [ ]N/C SCK/13[ ] |
- | [ ]IOREF MISO/12[ ] |
- | [ ]RST MOSI/11[ ]~|
- | [ ]3V3 +---+ 10[ ]~|
- | [ ]5v -| A |- 9[ ]~|
- | [ ]GND -| R |- 8[ ] |
- | [ ]GND -| D |- |
- | [ ]Vin -| U |- 7[ ] |
- | -| I |- 6[ ]~|
- | [ ]A0 -| N |- 5[ ]~|
- | [ ]A1 -| O |- 4[ ] |
- | [ ]A2 +---+ INT1/3[ ]~| PAS
- | [ ]A3 INT0/2[ ] | PAB
- | [ ]A4/SDA RST SCK MISO TX>1[ ] |
- | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] |
- | [ ] [ ] [ ] |
- | UNO_R3 GND MOSI 5V ____________/
- \_______________________/
- NOTAS:
- - Los pulsadores suelen tener dos pines, que vamos a denominar PA y PB (si es de 4 sólo usamos 2 de ellos)
- - PAS y PBS--> Pines para el pulsador subeCanal.
- - PAB y PBB--> Pines para el pulsador bajaCanal.
- - Conexión PULL-DOWN del pulsador.
- - PBS y PBB conectados a VCC.
- - PAS y PAB conectados a GND a través de una R=10K omhs (diferente para cada uno).
- - La alimentación y la masa de los módulos LCM 1602 I2C V1 y TEA5767 V3 van directamente conectadas a VCC
- (+5V) y GND respectivamente.
- */
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- #include <TEA5767Radio.h>
- // Declaración del objeto "radio" de tipo TEA5767Radio
- TEA5767Radio radio = TEA5767Radio();
- // Matriz que acumula las 16 frecuencias de las 16 emisoras de radio FM que yo he seleccionado
- float frecuencia[16] =
- {
- 88.5, 90.2, 90.9, 92.2, 94.4, 95.1, 97.3, 98.1, 99.4, 100.4, 101.5, 102.4, 102.8, 104.5, 105.2, 106.7
- };
- int canalInicial = 6; // Establecemos el canal inicial en uno diferente al actual
- int canalActual = 7; // Establecemos la emisora intermedia de la lista
- int subeCanal = 3; // Pin digital para el botón de subir el canal
- int bajaCanal = 2; // Pin digital para el botón de bajar el canal
- int imprimir = 1; // Variable para imprimir datos una sola vez
- // Declaración del objeto
- // Terminales de conexión del LCD
- // addr, en,rw,rs,d4,d5,d6,d7,bl,blpol
- LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- void setup()
- {
- Wire.begin(); // Comienza la comunicación I2C
- lcd.begin(16,2); // Inicializa el LCD para 16x2
- // Mensaje de inicio de la RADIO
- lcd.backlight();
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("RADIO TEA5767 V3");
- delay(3000);
- // Imprimimos los valores iniciales a través del LCD
- imprimirFrecuenciaCanal();
- lcd.setCursor(0,1);
- imprimirEmisora();
- }
- void loop()
- {
- // Si presionamos el pulsador subeCanal y el canal es menor o igual a 14
- if(digitalRead(subeCanal)== HIGH && canalActual <=14)
- {
- // Subimos un canal e imprimimos valores a través del LCD
- canalActual ++;
- imprimirFrecuenciaCanal();
- lcd.setCursor(0,1);
- imprimirEmisora();
- }
- // Si presionamos el pulsador bajaCanal y el canal es mayor o igual a 1
- if(digitalRead(bajaCanal)== HIGH && canalActual >=1)
- {
- // Bajamos un canal e imprimimos valores a través del LCD
- canalActual --;
- imprimirFrecuenciaCanal();
- lcd.setCursor(0,1);
- imprimirEmisora();
- }
- // Si hemos cambiado de canal
- if(canalInicial != canalActual)
- {
- radio.setFrequency(frecuencia[canalActual]); // Se sintoniza la frecuencia correspondiente
- }
- canalInicial = canalActual; // Actualizamos el canal inicial
- delay(50); // Retardo para evitar el rebote de los pulsadores
- }
- // Función que imprime la frecuencia de la emisora y el número del canal en el que estemos
- void imprimirFrecuenciaCanal()
- {
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("CH");
- lcd.print(canalActual+1);
- lcd.print(" ");
- lcd.print(frecuencia[canalActual]);
- lcd.print(" MHz");
- }
- // Función que imprime el nombre de la emisora
- void imprimirEmisora()
- {
- switch(canalActual)
- {
- case 0:
- {
- lcd.print("<Cadena 100>");
- break;
- }
- case 1:
- {
- lcd.print("<Mortal FM>");
- break;
- }
- case 2:
- {
- lcd.print("<40 Principales>");
- break;
- }
- case 3:
- {
- lcd.print("<RNE Radio 3>");
- break;
- }
- case 4:
- {
- lcd.print("<Europa FM>");
- break;
- }
- case 5:
- {
- lcd.print("<RNE Radio 5>");
- break;
- }
- case 6:
- {
- lcd.print("<RNE Nacional>");
- break;
- }
- case 7:
- {
- lcd.print("<M80 Radio>");
- break;
- }
- case 8:
- {
- lcd.print("<Kiss FM>");
- break;
- }
- case 9:
- {
- lcd.print("<Cadena DIAL>");
- break;
- }
- case 10:
- {
- lcd.print("<Radio MARCA>");
- break;
- }
- case 11:
- {
- lcd.print("<Melodia FM>");
- break;
- }
- case 12:
- {
- lcd.print("<esRADIO>");
- break;
- }
- case 13:
- {
- lcd.print("<Cadena COPE>");
- break;
- }
- case 14:
- {
- lcd.print("<Onda CERO>");
- break;
- }
- case 15:
- {
- lcd.print("<Cadena SER>");
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement