Тема: Помогите с приёмником!!!
Здравствуйте, случилась следующая беда. По данной ссылке ( http://rcl-radio.ru/?p=53149 ) я решил собрать приёмник на чипе RDA5807, Arduino Pro MIni и дисплее 1602. Собираю дисплей и приёмник вместе, загружаю: на экране ничего не выводится, он также мерцает. С монтажом проблем нет, дисплей и приёмник проверял - работают. Если кто - нибудь сталкивался с данной проблемой, помогите пожалуйста с ней.
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
#include <LiquidCrystal.h>
#include <EEPROM.h>//#include <EEPROMex.h>
#include <RDSParser.h>
LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
byte a1[8]={0b00000,0b11011,0b11011,0b11011,0b11011,0b11011,0b11011,0b00000};
#define FIX_BAND RADIO_BAND_FM
RDA5807M radio;
RADIO_INFO info;
RDSParser rds;
char s[12];
int menu,k,f_scan[10],f,i1=8700;
byte vol,bass,z,w,start,start1,t;
unsigned long time;
void DisplayServiceName(char *name){lcd.setCursor(0,1);lcd.print(" ");lcd.print(name);lcd.print(" ");}
void RDS_process(uint16_t block1, uint16_t block2, uint16_t block3, uint16_t block4) {rds.processData(block1, block2, block3, block4);}
void setup() {
vol=EEPROM.read(0);
for(int c=0;c<10;c++){f_scan[c]=EEPROM.read(10+c)*100+EEPROM.read(100+c);}
k=EEPROM.read(3);
f=EEPROM.read(1)*100+EEPROM.read(2);start=0;
lcd.begin(16, 2);
Serial.begin(9600);
radio.init();
radio.debugEnable();
pinMode(12,INPUT);// меню
pinMode(11,INPUT);// плюс
pinMode(10,INPUT);// минус
lcd.createChar(0,a1);
radio.setBandFrequency(FIX_BAND, f);
radio.setVolume(vol);
radio.setMono(false);
radio.setMute(false);
radio.attachReceiveRDS(RDS_process);
rds.attachServiceNameCallback(DisplayServiceName);
delay(400);
}
void loop() {
radio.formatFrequency(s, sizeof(s));
if(start==0){radio.setBandFrequency(FIX_BAND, f);delay(400);radio.getRadioInfo(&info);start=1;}
if(digitalRead(12)==HIGH){menu++;lcd.clear();time=millis();radio.getRadioInfo(&info);start=0;w=1;delay(300);if(menu>3){menu=0;}}
if(menu==0){// ГРОМКОСТЬ
if(digitalRead(11)==HIGH){vol++;if(vol>15){vol=15;}w=1;time=millis();radio.setVolume(vol);delay(200);lcd.clear();}
if(digitalRead(10)==HIGH){vol--;if(vol>16){vol=0;}w=1;time=millis();radio.setVolume(vol);delay(200);lcd.clear();}
lcd.setCursor(0,0);lcd.print(" ");lcd.print(s);
lcd.setCursor(0,1);
if(millis()-time<5000){for(z=0;z<=vol;z++){lcd.setCursor(z,1);lcd.write((uint8_t)0);}}
if(millis()-time>5000 and millis()-time<10000){
lcd.print(info.tuned ? " TUNED" : " -----");
lcd.print(info.stereo ? " STEREO " : " MONO ");}
if(millis()-time>10000){radio.checkRDS();} // RDS
}
if(menu==1){// КАНАЛЫ
if(start1==0){f=f_scan[k];start=0;start1=1;}
if(digitalRead(11)==HIGH){k++;if(k>9){k=9;}delay(200);f=f_scan[k];w=1;time=millis();start=0;lcd.clear();}
if(digitalRead(10)==HIGH){k--;if(k<0){k=0;}delay(200);f=f_scan[k];w=1;time=millis();start=0;lcd.clear();}
lcd.setCursor(0,0);lcd.print("K");lcd.print(k);
if(f_scan[k]!=0){lcd.print(" ");lcd.print((float)f_scan[k]/100);lcd.print(" MHz ");}else{lcd.print(" N/A ");}
radio.getRadioInfo(&info);
lcd.setCursor(0,1);lcd.print(info.tuned ? "TUNED" : "-----");
lcd.print(" SIGNAL ");lcd.print(info.rssi);
}
if(menu==2){// АВТО ПОИСК КАНАЛОВ
lcd.setCursor(0,0);lcd.print("AUTOSCAN");
if(digitalRead(11)==HIGH || digitalRead(10)==HIGH){
for(int i=0;i<10;i++){
for(i1;i1<=10800;i1=i1+10){
radio.setBandFrequency(FIX_BAND, i1);delay(300);
radio.getRadioInfo(&info);delay(500);
if(info.tuned==1 and info.rssi>26){f_scan[i]=i1;i1=f_scan[i]+10;if(i1>=10800){f_scan[i]=0;}break;}
lcd.setCursor(9,0); lcd.print((float)i1/100);
}
lcd.setCursor(0,1);lcd.print(i);lcd.print(" ");lcd.print((float)f_scan[i]/100);lcd.print(" MHz ");
}delay(1000);time=millis();i1=8700;eeprom();k=0;start1=0;menu=1;}}
if(menu==3){// ПОДСТРОЙКА ЧАСТОТЫ КАНАЛА
if(digitalRead(11)==HIGH){f=f+10;t=1;if(f<8700){f=8700;}start=0;time=millis();delay(200);lcd.clear();}
if(digitalRead(10)==HIGH){f=f-10;t=1;if(f>10800){f=10800;}start=0;time=millis();delay(200);lcd.clear();}
lcd.setCursor(0,0);lcd.print("< ");lcd.print((float)f/100);lcd.print(" MHz >");
radio.getRadioInfo(&info);
lcd.setCursor(0,1);lcd.print(info.tuned ? "TUNED" : "-----");
lcd.print(" SIGNAL ");lcd.print(info.rssi);
if(millis()-time>10000 and t==1){f_scan[k]=f;t=0;EEPROM.update(10+k,f_scan[k]/100);EEPROM.update(100+k,f_scan[k]-(f_scan[k]/100)*100);
if(millis()-time<11000){lcd.setCursor(0,1);lcd.print(" SAVE ");delay(1000);}}
}
if(millis()-time>60000 && w==1){EEPROM.update(0,vol);EEPROM.update(3,k);EEPROM.update(1,f_scan[k]/100);EEPROM.update(2,f_scan[k]-(f_scan[k]/100)*100);w=0;}
if(millis()-time>10000 and menu==1){menu=0;time=millis();lcd.clear();}
} // LOOP
void eeprom(){for(int b=0;b<10;b++){EEPROM.update(10+b,f_scan[b]/100);EEPROM.update(100+b,f_scan[b]-(f_scan[b]/100)*100);}}