Paso 7: Codificación de Arduino
Este código que escribí es bastante recta hacia adelante. Cuando encienda la radio por conectar el Arduino a la alimentación, la radio se sintonice a una estación de set de que frecuencia se muestra en la pantalla LCD junto con las palabras "Radio FM". Desde este punto, puede utilizar los botones momentáneos + sintonizador o tuner - para encontrar la emisora deseada y ver que actualizar en la pantalla LCD.
Como tengo varias entradas de audio para mi jukebox, decidí tener el Si4703 breakout junta a un cierto nivel de volumen y pude ajustar el volumen de mis altavoces usando los botones en el panel frontal de la máquina de discos junto a los botones del sintonizador. Usted puede agregar fácilmente un par botones más momentáneos para el Arduino para controlar el nivel de volumen del módulo de radio sí mismo sin embargo.
Así que creo que es la funcionalidad básica del código explicado, aquí aunque es el real código de Arduino:
COMIENZO DEL CÓDIGO
/*
El circuito:
LCD (Jaycar pieza número QP5520)
* Pin RS para pin digital 8
* Activar pin a pin digital 9
* DB4 pin a pin digital 4
* DB5 pin a pin digital 5
* DB6 pin a pin digital 6
* DB7 pin al pin digital 7
* R/W pin a tierra
* Pin VSS a tierra
* Pin VDD a 5V
* Pin VO a tierra
* A(+) pin a 5V a través de la resistencia de 220 ohm [luz de fondo LCD]
* K(-) pin a tierra [luz de fondo LCD]
Si4703 breakout Junta
* SDIO a pin analog pin 4 (vía lógica nivel convertidor) amarillo alambre
* SCLK a pin analog pin 5 (vía lógica nivel convertidor) azul cable
* Pin RST al pin digital 2 (vía lógica nivel convertidor) cable blanco
* GND a tierra
* + 3, 3V a 3.3V
Convertidor de nivel de lógica
* Alto voltaje a 5V
* LV a 3, 3V
* HV1 al pin analógico Arduino 4
* LV1 al pin Si4703 SDIO
* HV2 al pin analógico Arduino 5
* LV2 al pin Si4703 SCLK
* HV3 al pin digital de Arduino 2
* LV3 al pin RST Si4703
* GND a GND
Momentánea (N/O) entradas de pulsador (Jaycar pieza número SP0716)
* Botón momentáneo 1 + 5V___button___digital pin 10 (buscar hacia abajo) con 10kohm tire hacia abajo la resistencia a tierra
* Botón momentáneo 2 + 5V___button___digital pin 11 (buscar por) con 10kohm baje la resistencia a tierra * /
incluir el código de biblioteca:
#include "<" LiquidCrystal.h">"
#include "<" Si4703_Breakout.h">"
#include "<" Wire.h">"
definir los pines de la pantalla LCD
int RS = 8;
int E = 9;
int DB4 = 4;
int DB5 = 5;
int DB6 = 6;
int DB7 = 7;
definir los pines para el Si4703
int resetPin = 2;
int SDIO = A4;
int SCLK = A5;
definir los pines para los botones de búsqueda
int channelDown = 10;
int channelUp = 11;
inicializar la biblioteca con los números de los pines de interfaz
Inicialización del LCD
LiquidCrystal lcd (RS E, DB4, DB5, DB6, DB7);
Si4703 inicialización
Si4703_Breakout radio (resetPin, SDIO, SCLK);
Definir las variables para la radio
canal de int;
int volumen;
void setup()
{
definir el botón pines como entradas
pinMode(channelDown,INPUT);
pinMode(channelUp,INPUT);
Delay(1000); retraso para tener en cuenta para encender de Arduino y el lag conseguir LCD funcionando
fijar número la pantalla del LCD de filas y columnas:
LCD.Begin (16, 2);
Encienda el radio y ajuste el volumen al nivel deseado
radio.powerOn();
radio.setVolume(15); volumen entre 0 y 15
programar la radio a una frecuencia predeterminada (Nova 96.9 MHz FM)
canal = 969;
radio.setChannel(channel);
Mostrar un título 'FM Radio' en la línea 0 de la pantalla LCD, centrada en
(Nota: la línea 1 es la segunda fila, ya que cuenta comienza con 0):
lcd.setCursor(0,0);
LCD.Print ("FM Radio"); Mostrar la frecuencia de canal en la pantalla LCD, centrada en
lcd.setCursor(0,1);
LCD.Print ("96,9 MHz");}
void loop()
{
Compruebe si se ha pulsado el botón de channelUp, si lo buscan en un canal
Si (digitalRead(channelUp) == HIGH)
{
canal = radio.seekUp();
updateLCD();
}
Compruebe si se ha pulsado el botón de channelDown, si es así buscar abajo de un canal
else if (digitalRead(channelDown) == HIGH)
{
canal = radio.seekDown();
updateLCD();
}
}
void updateLCD()
{
el canal entero a convertir una cadena a añadir lugar decimal y "MHz" antes de mostrar en la pantalla LCD
String channelString = String(channel);
Frecuencia de la cadena;
Si (channelString.length() == 3) //if la frecuencia es de 3 dígitos, coloque un punto decimal después de la segunda cifra
{
frecuencia = channelString.substring(0,2) + "." + channelString.substring(2) + "MHz";
}
else if (channelString.length() == 4) //if la frecuencia es de 4 dígitos, coloque un punto decimal después del tercer dígito
{
frecuencia = channelString.substring(0,3) + "." + channelString.substring(3) + "MHz";
}
claro primero la línea 1 de la pantalla a cuenta para la transición entre las frecuencias de dígitos 3 y 4
lcd.setCursor(0,1);
LCD.Print("");
actualizar la frecuencia en la pantalla LCD
lcd.setCursor(4,1);
LCD.Print(Frequency);
}
FINAL DEL CÓDIGO DE
He leído que el breakout Junta también es capaz de obtener otros datos como nombres de la canción, pero no he encontrado mucha más información al respecto y cada vez que trataba de la RDS, no pasó nada. Para una actualización de este proyecto sería cool para quitar la línea "FM Radio" de la pantalla LCD y reemplace con el nombre de la canción que se está reproduciendo. Si alguien sabe cómo hacerlo o puede compartir alguna información, me encantaría oír de usted!