#1 2016-03-23 15:50:53

electronhic
Учасник
Зареєстрований: 2016-03-23
Повідомлень: 7

RDA5807M ПОМОГИТЕ =)

RDA5807M
   
I2C Scanner
Scanning...
I2C device found at address 0x10 !
I2C device found at address 0x11 !
I2C device found at address 0x60 !
done

RDA5807M_datasheet_v1.1.pdf

// Programm: fm_radio_module_em5807m_rev100.ino
// Language: Arduinio C++
// Hardware: Arduino Nano 3.0 + EM5807M module with RDA5807M Chip.
// Version:  1.00
// Autor:    www.5v.ru
// Link:     www.5v.ru/start/em5807m-arduino-nano-30.htm

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#include <Wire.h>               // I2C-Library

double f_ini=115;             // Стартовая частота настройки приемника. (Изменяем на нужную).

void setup()                    // Инициализация.
{
    // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  Wire.begin();                 // Инициализация двухпроводной шины I2C.
  setFrequency(f_ini);          // Вызываем фукнкцию загрузки частоты настройки в модуль EM5807M.
}

void loop()                     // Основной цикл программы
{
  // Здесь можем написать нашу самую лучшую программу, которая будет работать так как нам нужно.
  
  f_ini = 91.0;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 91.4;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 92.1;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 100.2;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 101.0;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 101.6;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 102.4;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 102.9;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 103.3;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 103.7;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 104.1;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 104.5;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 105.0;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 106.1;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 107.1;
  setFrequency(f_ini);
  delay(10000);

  f_ini = 107.5;
  setFrequency(f_ini);
  delay(10000);
}
  

void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль EM5807M.
{
  int  frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
  char frequencyH = frequencyB >> 8;     // Старший байт.
  char frequencyL = frequencyB & 0XFF;   // Накладываем маску 0xFF на младший байт.
  Wire.beginTransmission(0x60);          // Адрес чипа RDA5807M
  Wire.write(frequencyH);                // Старший байт.
  Wire.write(frequencyL);                // Младший байт.
  Wire.write(0xB8);                      // 1011 1000     =Стерео
  Wire.write(0x10);                      // 0001 0000
  Wire.write((byte)0x00);                // 
  Wire.endTransmission();                // формируем I2C-Stop.
  lcd.clear();
  lcd.print(f_ini);
  lcd.print("MHz");
}

Кто поможет освоить етот модуль?Интересует регулировка громкости и т д.всё что есть в даташите.

Неактивний

#2 2016-03-23 18:09:00

NoName
Customer
З Київ
Зареєстрований: 2014-07-08
Повідомлень: 1,446

Re: RDA5807M ПОМОГИТЕ =)

"Кто поможет освоить етот модуль?"

день добрый, вопрос непонятен (

если эта функция работает то у вас все есть для освоения
void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль EM5807M.
настройка    на волну работает?

Неактивний

#3 2018-07-24 09:33:14

Yon
Учасник
Зареєстрований: 2018-07-24
Повідомлень: 7

Re: RDA5807M ПОМОГИТЕ =)

Нарыл код в нете для FM радио на Ардуино на базе EM5807M.  Залил это дело в Atmega8, все заработало, сделал простой выбор стаций.

А кто знает как управлять програмно громкостью, басами, стерео/моно  и др. Используемая часть кода ниже.

#include <Wire.h>              // I2C-Library
double f_ini=104.3;            // Стартовая частота настройки приемника. (Изменяем на нужную).
void setup()                    // Инициализация.
{
  Wire.begin();                // Инициализация двухпроводной шины I2C.
  setFrequency(f_ini);          // Вызываем фукнкцию загрузки частоты настройки в модуль EM5807M.
}
void loop()                    // Основной цикл программы
{
  //
}
void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль EM5807M.
{
  int  frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
  char frequencyH = frequencyB >> 8;    // Старший байт.
  char frequencyL = frequencyB & 0XFF;  // Накладываем маску 0xFF на младший байт.
  Wire.beginTransmission(0x60);          // Адрес чипа RDA5807M
  Wire.write(frequencyH);                // Старший байт.
  Wire.write(frequencyL);                // Младший байт.
  Wire.write(0xB8);                      // 1011 1000    = Стерео
  Wire.write(0x10);                      // 0001 0000
  Wire.write((byte)0x00);                //
  Wire.endTransmission();                // формируем I2C-Stop.
}


http://forklg.ru/viewtopic.php?f=98&t=1173

Неактивний

#4 2018-07-24 11:55:33

Вячеслав Азаров
Учасник
Зареєстрований: 2017-05-25
Повідомлень: 1,732

Re: RDA5807M ПОМОГИТЕ =)

electronhic пише:

RDA5807M
...
Кто поможет освоить етот модуль? Интересует регулировка громкости и т д.всё что есть в даташите.

А что у вас не получается? Все?

Неактивний

#5 2018-07-24 12:49:20

Yon
Учасник
Зареєстрований: 2018-07-24
Повідомлень: 7

Re: RDA5807M ПОМОГИТЕ =)

Регулировка громкости. Куда и что тут вставлять?

void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль EM5807M.
{
  int  frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
  char frequencyH = frequencyB >> 8;    // Старший байт.
  char frequencyL = frequencyB & 0XFF;  // Накладываем маску 0xFF на младший байт.
  Wire.beginTransmission(0x60);          // Адрес чипа RDA5807M
  Wire.write(frequencyH);                // Старший байт.
  Wire.write(frequencyL);                // Младший байт.
  Wire.write(0xB8);                      // 1011 1000    = Стерео
  Wire.write(0x10);                      // 0001 0000
  Wire.write((byte)0x00);                //
  Wire.endTransmission();                // формируем I2C-Stop.
}

Остання редакція Yon (2018-07-24 12:49:53)

Неактивний

#6 2018-07-25 09:33:16

Kaka
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 411

Re: RDA5807M ПОМОГИТЕ =)

А что взять готовую библиотеку, в которой всё это есть и либо пользовать, либо посмотреть как они управляют, религия не позволяет?
https://github.com/mathertel/Radio

Неактивний

#7 2018-07-25 21:45:41

Yon
Учасник
Зареєстрований: 2018-07-24
Повідомлень: 7

Re: RDA5807M ПОМОГИТЕ =)

Я спрашиваю конкренто о куске коде выше, который хочу залить в Атмегу8. Остальную память под другое выделяю. А с библиотекой RDA5807M уже порабодал на Уне. Это другой проэкт. Если есть ответ, плиз, ответьте!

Остання редакція Yon (2018-07-25 21:46:33)

Неактивний

#8 2018-07-26 09:05:27

Kaka
Учасник
Зареєстрований: 2018-03-21
Повідомлень: 411

Re: RDA5807M ПОМОГИТЕ =)

Так это и был ответ. Открой библиотеку и посмотри как они делают те функции, что тебе нужно. Все эти возможности там есть. Посмотри и делай также.

Неактивний

#9 2018-07-30 09:57:55

Yon
Учасник
Зареєстрований: 2018-07-24
Повідомлень: 7

Re: RDA5807M ПОМОГИТЕ =)

Спасибо.

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму