Тема: Радио Si4703
Данный контент доступен только зарегистрированным пользователям.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SparkFunSi4703.h>
#include <EEPROM.h>
LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей
Si4703_Breakout radio(2, A4, A5, 3);// RST,SDIO,SCLK,SEN
int vol=1;
int channel[11]{1010,1015,1019,1030,1035,1039,1044,1062,1068,1073};
char rdsBuffer[20];
int w,c,i;
void setup(){
lcd.init();lcd.backlight();// Включаем подсветку дисплея
pinMode(12,INPUT);// Cannel +
pinMode(11,INPUT);// Cannel -
pinMode(10,INPUT);// Volume +
pinMode(9,INPUT); // Volume -
c = EEPROM.read(0);vol = EEPROM.read(1);
radio.powerOn();
radio.setVolume(vol);
radio.setChannel(channel[c]);
}
void loop(){
radio.readRDS(rdsBuffer);
if(digitalRead(12)==HIGH){w=1;delay(200);}
if(digitalRead(11)==HIGH){w=2;delay(200);}
if(digitalRead(10)==HIGH){w=3;delay(200);}
if(digitalRead(9)==HIGH){w=4;delay(200);}
if(w==1){c++;if(c>9){c=9;}radio.setChannel(channel[c]);cl();radio.setChannel(channel[c]);EEPROM.update(0,c);}
if(w==2){c--;if(c<0){c=0;}radio.setChannel(channel[c]);cl();radio.setChannel(channel[c]);EEPROM.update(0,c);}
if(w==3){vol++;if(vol>15){vol=15;}radio.setVolume(vol);cl1();EEPROM.update(1,vol);}
if(w==4){vol--;if(vol<0){vol=0;}radio.setVolume(vol);cl1();EEPROM.update(1,vol);}
lcd.setCursor(0, 0); lcd.print((float)channel[c]/10,1);lcd.print(" MHz ");lcd.print("VOL ");lcd.print(vol);lcd.print(" ");
lcd.setCursor(0, 1);lcd.print("C"); lcd.print(c+1);lcd.print(" ");
lcd.setCursor(6, 1); lcd.print(rdsBuffer);
}
void cl(){delay(100);w=0;lcd.clear();for(i=0;i<20;i++){rdsBuffer[i]=NULL;}}
void cl1(){delay(100);w=0;}