Étape 7: Arduino codage
Ce code que j’ai écrit est assez simple. Lorsque vous allumez la radio en connectant l’Arduino au pouvoir, la radio est réglée sur une station fixe dont la fréquence s’affiche sur l’écran LCD ainsi que les mots "Radio FM". De ce point, vous pouvez utiliser les boutons poussoirs momentanés tuner + ou tuner - pour trouver la station désirée et regardez-le de mettre à jour sur l’écran LCD.
Comme je l’ai plusieurs entrées audio dans mon jukebox, j’ai décidé d’avoir la carte de dérivation Si4703 définie sur un certain niveau de volume et je pouvais régler le volume de mes haut-parleurs à l’aide de boutons poussoirs sur la façade de la librairie à côté des boutons de tuner. Vous pouvez facilement ajouter quelques touches plus momentanés à l’Arduino pour contrôler le niveau de volume du module radio lui-même bien.
Donc je pense que c’est la fonctionnalité de base du code a expliqué, voici le code réel de Arduino si :
DÉBUT DU CODE
/*
Le circuit :
LCD (numéro de pièce Jaycar QP5520)
* Broche RS à la broche numérique 8
Permettre de broche à broche numérique 9
* DB4 broche à broche numérique 4
* DB5 broche à broche numérique 5
* DB6 broche à broche numérique 6
* DB7 broche à broche numérique 7
* R/W pin au sol
* Pin VSS à terre
* Goupille de la DMV à 5V
* Pin VO au sol
* A (+) broche à 5V via une résistance de 220 ohms [rétro]
* K(-) broche à la masse [rétro]
Carte de dérivation Si4703
* Pin SDIO pour broche analogique 4 (Via logique niveau convertisseur) fil jaune
* Pin SCLK analogique broche 5 (Via logique niveau convertisseur) à câble bleu
* Broche RST à la broche numérique 2 (Via logique niveau convertisseur) fil blanc
* GND à la terre
* + 3, 3V à 3.3V
Convertisseur de niveau logique
* HV à 5V
* LV à 3,3 v
* HV1 pour Arduino broche analogique 4
* LV1 à broche Si4703 SDIO
* HV2 Arduino broche analogique 5 à
* LV2 sur broche de Si4703 SCLK
* HV3 pour Arduino broche numérique 2
* LV3 à la broche de Si4703 RST
* GND à de GND
Entrées de bouton poussoir momentané (N/O) (numéro de pièce Jaycar SP0716)
* Un bouton poussoir momentané 1 + 5V___button___digital broche 10 (chercher vers le bas) avec 10kohm déroulant : résistance à la terre
* Un bouton poussoir momentané 2 + 5V___button___digital broche 11 (chercher vers le haut) avec 10kohm tirer vers le bas de la résistance à la terre * /
inclure le code de bibliothèque :
#include "<" LiquidCrystal.h">"
#include "<" Si4703_Breakout.h">"
#include "<" Wire.h">"
définir les axes de l’écran LCD
int RS = 8 ;
int E = 9 ;
int DB4 = 4 ;
int DB5 = 5 ;
int DB6 = 6 ;
int DB7 = 7 ;
définir les broches pour le Si4703
int resetPin = 2 ;
int SDIO = A4 ;
int SCLK = A5 ;
définir les broches pour les boutons poussoirs seek
int channelDown = 10 ;
channelUp int = 11 ;
initialiser la bibliothèque avec les numéros des broches interface
Initialisation de l’écran LCD
Innovente lcd (RS, E, DB4, DB5, DB6, DB7) ;
Initialisation de Si4703
Radio Si4703_Breakout (resetPin, SDIO, SCLK) ;
Définir les variables de la radio
canal int ;
volume int ;
void setup()
{
définir les goupilles poussoir comme entrées
pinMode(channelDown,INPUT) ;
pinMode(channelUp,INPUT) ;
Delay(1000) ; retard pour tenir compte de la mise sous tension de l’Arduino et décalage pour obtenir l’écran LCD en cours d’exécution
mis en place nombre de l’écran LCD de colonnes et de lignes :
LCD.Begin (16, 2) ;
Allumez la radio et régler le volume au niveau désiré
radio.powerOn() ;
radio.setVolume(15) ; volume 0 à 15 ans
Réglez la radio sur une fréquence par défaut (Nova 96,9 MHz FM)
Channel = 969 ;
radio.setChannel(channel) ;
affichage d’un titre « FM Radio » à la ligne 0 de l’écran LCD, centré sur
(Remarque : la ligne 1 est la seconde ligne, puisque le décompte commence par 0) :
lcd.setCursor(0,0) ;
LCD.Print ("Radio FM") ; montrer la fréquence du canal sur l’écran LCD, centré sur
lcd.setCursor(0,1) ;
LCD.Print ("96,9 MHz");}
void loop()
{
Vérifiez si le bouton channelUp a été enfoncé, le cas échéant demander pour un canal
Si (digitalRead(channelUp) == HIGH)
{
Channel = radio.seekUp() ;
updateLCD() ;
}
Vérifiez si le bouton de channelDown a été appuyé, dans l’affirmative chercher vers le bas pour un canal
ElseIf (digitalRead(channelDown) == HIGH)
{
Channel = radio.seekDown() ;
updateLCD() ;
}
}
Sub updateLCD()
{
convertir la chaîne de nombre entier en une chaîne à ajouter décimale et « MHz » avant l’affichage sur écran LCD
String channelString = String(channel) ;
Chaîne de fréquence ;
Si (channelString.length() == 3) //if la fréquence est de 3 chiffres, placez une virgule après le deuxième chiffre
{
fréquence = channelString.substring(0,2) + "." + channelString.substring(2) + « MHz » ;
}
ElseIf (channelString.length() == 4) //if la fréquence est de 4 chiffres, placez une virgule après le troisième chiffre
{
fréquence = channelString.substring(0,3) + "." + channelString.substring(3) + « MHz » ;
}
tout d’abord effacer la ligne 1 de l’écran pour le compte de transition entre les fréquences de chiffres 3 et 4
lcd.setCursor(0,1) ;
LCD.Print("") ;
mise à jour de la fréquence sur l’écran LCD
lcd.setCursor(4,1) ;
LCD.Print(Frequency) ;
}
FIN DU CODE
J’ai lu que la carte de dérivation est également en mesure d’obtenir d’autres informations telles que les noms de la chanson, mais je n’ai pas trouvé beaucoup plus d’informations à cet égard et chaque fois que j’ai essayé le RDS, rien n’est arrivé. Pour une mise à jour de ce projet, il serait cool de supprimer la ligne « FM Radio » de l’écran LCD et remplacez-le par le nom de la chanson qui joue actuellement. Si quelqu'un sait comment faire cela ou peut partager des informations, je serais ravi de vous entendre !