FM-Radio med Si4703 Breakout styrelsen, LCD och Arduino (7 / 9 steg)

Steg 7: Arduino kodning

Denna kod som jag skrev är ganska rakt fram. När du slår på radion genom att ansluta Arduino till makt, är radion inställd på en uppsättning station som frekvens visas på LCD-skärmen tillsammans med orden "FM-Radio". Från denna punkt, kan du använda de tuner + eller tuner - momentan tryckknapparna att hitta önskad station och titta på den uppdatera på LCD.

Som jag har flera ingångar till min jukebox, bestämde jag mig att ha Si4703 breakout styrelsen satt till en viss volym och jag kunde justera volymnivån för mina högtalare med knapparna på frontpanelen på jukeboxen bredvid knapparna tuner. Du kan enkelt lägga till ett par mer momentan tryckknappar till Arduino att styra volymen för radio modulen själv dock.

Så jag tror det är de grundläggande funktionerna i koden förklaras, är här den faktiska Arduino koden ändå:

BÖRJAN AV KOD

/*
Krets:

LCD (Jaycar artikelnummer QP5520)

* RS stift till digital stift 8

* Aktivera stift till digital pin 9

* DB4 stift till digital stift 4

* DB5 stift till digital stift 5

* DB6 stift till digital stift 6

* DB7 stift till digital stift 7

R/W pinnen till jord

* VSS pinnen till jord

* VDD stift till 5V

* VO pinnen till jord

* A(+) stift till 5V via 220 ohm motstånd [LCD backlight]

* K(-) stift till marken [LCD backlight]

Si4703 breakout styrelse

* SDIO stift till analoga stift 4 (Via logik nivå Converter) gul tråd

* SCLK stift till analoga stift 5 (Via logik nivå Converter) blå tråd

* FÖRSTA stift till digital stift 2 (Via logik nivå Converter) vit tråd

* GND marken

* + 3,3 v till 3.3V

Logik nivå Converter

* HV till 5V

* LV till 3.3V

* HV1 till Arduino analog pinne 4

* LV1 till Si4703 SDIO stift

* HV2 till Arduino analoga stift 5

* LV2 till Si4703 SCLK stift

* HV3 till Arduino digital stift 2

* LV3 till Si4703 första stift

* GNDS till GNDS

Tillfällig (N/O) tryckknapp ingångar (Jaycar artikelnummer SP0716)

* Tillfällig tryckknapp 1 + 5V___button___digital pin 10 (söka ner) med 10kohm pull down motstånd till jord

* Tillfällig tryckknapp 2 + 5V___button___digital stift 11 (söka upp) med 10kohm dra ner motstånd till jord * /

inkludera bibliotek-koden:

#include "<" LiquidCrystal.h">"

#include "<" Si4703_Breakout.h">"

#include "<" Wire.h">"

definiera stiften för LCD
int RS = 8.

int E = 9.

int DB4 = 4;

int DB5 = 5;

int DB6 = 6;

int DB7 = 7.

definiera stiften för Si4703

int resetPin = 2;

int SDIO = A4;

int SCLK = A5;

definiera stiften för tryckknapparna seek

int channelDown = 10;

int channelUp = 11;

initiera bibliotek med numrerar av gränssnittet stiften

LCD initiering

LiquidCrystal lcd (RS, E, DB4, DB5, DB6, DB7);

Si4703 initiering

Si4703_Breakout radio (resetPin, SDIO, SCLK);

Definiera variablerna för radio

int kanal;

int volym;

void setup()

{

definiera tryckknapp pins som insatsvaror

pinMode(channelDown,INPUT);

pinMode(channelUp,INPUT);

Delay(1000); fördröjning för att ta hänsyn för att driva upp av Arduino och lag att få LCD kör

Ange den LCD antal kolumner och rader:

LCD.BEGIN (16, 2);

slå på radion och ställa in volymen till en önskad nivå

radio.powerOn();

radio.setVolume(15); mellan 0 och 15

ställa in radion på en standard frekvens (Nova 96,9 MHz FM)

kanal = 969;

radio.setChannel(channel);

Visa en titel "FM-Radio" på rad 0 av LCD, centrerad

(Obs: linje 1 är den andra raden, sedan räknar börjar med 0):

lcd.setCursor(0,0);

LCD.Print ("FM-Radio"). Visa kanalfrekvensen på LCD: N centrerad

lcd.setCursor(0,1);

LCD.Print ("96,9 MHz");}

void loop()

{

Kontrollera om knappen channelUp har tryckt, så söka upp för en kanal

om (digitalRead(channelUp) == hög)

{

kanal = radio.seekUp();

updateLCD();

}

Kontrollera om knappen channelDown har tryckt, så söker en kanal

annat if (digitalRead(channelDown) == hög)

{

kanal = radio.seekDown();

updateLCD();

}

}

void updateLCD()

{

konvertera kanalen som heltal till en sträng att lägga till decimaler och "MHz" innan visas på LCD-

String channelString = String(channel);

Sträng frekvens;

om (channelString.length() == 3) //if frekvensen är 3 siffror, placera ett decimaltecken efter den andra siffran

{

frekvens = channelString.substring(0,2) + "." + channelString.substring(2) + "MHz";

}

annat if (channelString.length() == 4) //if frekvensen är 4 siffror, placera ett decimaltecken efter den tredje siffran

{

frekvens = channelString.substring(0,3) + "." + channelString.substring(3) + "MHz";

}

först ta bort linje 1 som konto för övergången mellan 3 och 4 siffriga frekvenser

lcd.setCursor(0,1);

LCD.Print("");

uppdateringsfrekvens på LCD

lcd.setCursor(4,1);

LCD.Print(Frequency);

}

SLUTET AV KODEN

Jag har läst att breakout styrelsen också få annan information som låten namn, men jag har inte hittat mycket mer information om detta och när jag försökte RDS, ingenting hände. Det skulle vara häftigt att ta bort raden "FM-Radio" från LCD och ersätta den med namnet på låten som spelar för närvarande för en uppdatering av detta projekt. Om någon vet hur man gör detta eller kan dela viss information, skulle jag älska att höra från dig!

Se Steg
Relaterade Ämnen

TEA5767 FM-Radio Breakout styrelsen för Arduino

jag nyligen misslyckades med att motstå köpa två TEA5767 FM-Radio moduler från eBay för nästan ingenting. Dessa små moduler använder serial I2C-protokollet och så är idealiska för att ansluta till en Arduino.Det finns mer information och andra Arduin...

Fläkt RPM med inre hall effekt sensor och Arduino (Intro till hårdvara avbryta och LCD display)

För mitt andra projekt för arbete, jag var tvungen att mäta rotationshastigheten av rotoren i varv Per minut (RPM) av en modifierad dator fläkt. Den hade tre kablarna kommer ut och som kryssat mig som kanske har något sätt att kontrollera sin hastigh...

Ultrasonic linjal med LCD och Arduino

du behöverEn LCD-skärmEn Arduino Uno (jag har en Ethernet-shield på min, det gör inte någon sak i detta projekt, men det är en smärta att ta på och av)En Ultrasonic Sensormodul20 - 30 hoppare ledningarDetta är en ganska enkel projekt som jag kom med,...

Säkerhetssystem med hjälp av Sigfox och Arduino

Idag, tillåter hemautomation oss att göra bra saker. I denna tutorial ska vi skapa våra egna säkerhetssystem. Målet är att skapa ett objekt som är oberoende av din wifi och kunna arbeta länge som drivs av ett batteri för att skydda ditt hem, ett gara...

Ljus intensitet uträkning med hjälp av BH1715 och Arduino Nano

Igår arbetade vi på LCD-skärmen visar, och samtidigt arbetar över dem vi insåg vikten av ljusintensiteten uträkning. Ljusintensiteten är inte bara viktigt i fysisk domän i denna värld men det har dess bra sagt roll i biologiska domän också. Korrekt u...

Luftfuktighet mätning med hjälp av HYT939 och Arduino Nano

HYT939 är en digital Fuktsensor som fungerar på I2C kommunikationsprotokoll. Luftfuktigheten är en avgörande parameter när det gäller medicinska system och laboratorier, så för att uppnå dessa mål som vi försökte gränssnitt HYT939 med arduino nano. I...

Magnetfält mätning med hjälp av HMC5883 och Arduino Nano

HMC5883är en digital kompass avsedd för låg-field magnetisk avkänning. Enheten har en bred magnetfält rad +/-8 Oe och en output ränta på 160 Hz. HMC5883 sensorn ingår automatisk avmagnetiseringsfunktionen rem drivrutiner, offset avbokning och en 12-b...

Acceleration mätning med hjälp av BMA250 och Arduino Nano

BMA250 är en liten, tunn, ultralow makt, 3-axlig accelerometer med hög upplösning (13-bitars) mätning vid upp till ±16 g. Digital utgång data är formaterade som 16-bitars tvåor kompletterar och kan nås via I2C digitala gränssnitt. Itmeasures den stat...

Temperatur och luftfuktighet övervakning med hjälp av SHT25 och Arduino Nano

Vi har nyligen arbetat med olika projekt som krävs för temperatur och luftfuktighet övervakning och sedan insåg vi att dessa två parametrar faktiskt spela en nyckelroll i att ha en uppskattning av den arbetande effektiviteten i ett system. Både på de...

Temperaturövervakning med hjälp av MCP9808 och Arduino Nano

MCP9808 är en mycket noggrann digital temperatur sensor ±0, 5 ° C I2C mini modul. De förkroppsligas med user - programmerbar register som underlättar temperaturkännande program. MCP9808 hög noggrannhet temperaturgivare har blivit en industristandard...

Tryck mätning med hjälp av CPS120 och Arduino Nano

CPS120 är en hög kvalitet och låg kostnad kapacitiv Absolut trycksensor med full ersättning utdata. Det förbrukar mycket mindre energi och består av en ultra liten mikro-elektro-mekanisk Sensor(MEMS) för mätning. En sigma-delta baserat ADC är också i...

Temperaturmätning med hjälp av STS21 och Arduino Nano

STS21 Digital temperaturgivare erbjuder överlägsen prestanda och en utrymmesbesparande fotavtryck. Det ger kalibrerad, linearized signalerar i digitalt, I2C format. Tillverkning av denna sensor är baserad på CMOSens teknik, som tillskrivar till den ö...

Röd färg erkännande baserade Arduino kontroll (med hjälp av MATLAB och Arduino)

I denna tutorial, vi visar hur du använder färg erkännande för att styra någon manöverdonet anslutet till någon digital pin av arduino uno, vi har behandlat LED som ett ställdon i denna handledning som är ansluten till stift 13 av UNO. Vi har dragit...

Auotmatic Street lights kontroll med hjälp av LDR och Arduino

Gatan lätta reglerteknik används för att styra de ljus (aktivera och inaktivera baserat på ljus).Här gör vi användning av LDR (Light beroende motstånd) och LED (Light Emitting diode) och arduino.Hårda Ware komponenter som krävs:1) LDR2) LED3) 4.7 k m...

DIY varm dryck Monitor - med hjälp av DS18B20 och Arduino Nano

Min flickvän har alltid ett problem att hon bränner sin tunga när hon smakar varma drycker. Då började jag tänka, kanske jag kunde skapa en enhet som förhindrar hennes brinnande tungan, så hon kan dricka sitt te och det har alltid perfekt och ville t...

Barometertrycket Sensor Breakout gränssnitt med LCD och Arduino

Denna tutorial lär grunderna om hur du använder barometertrycket sensor breakout.Steg 1: IntroduktionBarometriskt tryck Sensor Breakout modul (BMP180) används för att mäta det absoluta trycket av luften runt dem (lufttryck). Det gör också altitude (h...

Känna av temperaturen i rummet och visas i LCD med hjälp av Simulink och Arduino UNO

Fjärranalys och visning av rumstemperatur genom att använda Arduino är mycket vanligt och du hittar massor av tutorial instructablesand liknande webbplatser. Men jag har inte hittat någon tutorial någonstans hur man gör detta med hjälp av Matlab/Simu...

Larmsignal med hjälp av LDR och Arduino

Hej GuyzJag ville bygga en LDR Summer och fick många Instructables som använder transistorer för att göra detta projekt.Så jag Bulid detta projekt med hjälp av Arduino som många människor har.Följ bara instruktionerna och du kommer få din LDR Summer...

Bygga en Sentry Gun med Laser Trip Wire System och Arduino

* OBS * UTFÖRS DETTA PROJEKT AV EN GRUPP STUDENTER FRÅN SINGAPORE POLYTECHNIC UNDER FYP HANDLEDARE TEO SHIN JEN. GJORT AV CHAN KAI CHI OCH 2 ANONYM.Koncept:Spolhandtaget när laser är blockerad av inkräktande objekt.Obs:Luta är inkluderat för utbyggba...