вопрос по приемнику фм на уно

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

не могу засветить индикатор ТМ 1637  скетч проверяется и загружается  может кто сталкивался?

подскажите

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

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А причём тут ТМ1637 и FM-приёмник? Да и чего Вы там не можете - тоже осталось непонятым :(

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

в тексте ссылки этот индикатор является частотомером(настройки) и есть схема с двумя кнопами

вот эти кнопки точнее их подключение к плате возможно некорректо

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

azlk пишет:

в тексте ссылки 

Вы ожидаете, что кто-то будет читать over9000 букв на постороннем форуме лишь на том основании, что Вам лень опубликовать схему, скетч и нормально сформулировать вопрос?

Давайте так, если Вам нужна помощь - схему, скетч и нормальное объяснение проблемы. 

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

можно вам на почту отправлю суть ..сюда что не очень получается

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016
    // FM Радио версия 1.0
    // http://www.forklg.ru


    #include <Wire.h>               // I2C-Library для управления радиомодулем RDA5807
    // SDA приемника RDA5807 подключаем к аналоговому входу 4
    // SCL приемника RDA5807 подключаем к аналоговому входу 5
    #include "TM1637.h" // Библиотека для управления LED дисплеем TM1637
    #define CLK 4     // вывод CLC дисплея
    #define DIO 5     // вывод DIO дисплея
    TM1637 disp(CLK,DIO);
    double f_ini=100.000;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную).

    void setup()
    {
      disp.set(7); // Устанавливаем яркость дисплея на максимум
      disp.init(D4056A); // Проводим инициализацию дисплея
      Wire.begin();   // Инициализация двухпроводной шины I2C.
      setFrequency(f_ini);  // Присваиваем значение частоты радиомодулю RDA5807
      pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз"
      pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх"
    }

    void loop()                 
    {
    float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее
    int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее
    disp.display(fin2); // выводим значение частоты на дисплей
    // проверяем нажатие кнопки "Частота вниз"
    if (digitalRead(6) == HIGH){
    // если кнопка "Частота вниз" нажата
    f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц
     setFrequency(f_ini); // передаем новое значение частоты радиомодулю
    };
    // проверяем нажатие кнопки "Частота вверх"
    if (digitalRead(7) == HIGH){
    // если кнопка "Частота вверх" нажата
    f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц
     setFrequency(f_ini);// передаем новое значение частоты радиомодулю
    };
    delay(500); // задержка 0,5 сек.
    }
     

    void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль RDA5807.
    {
      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.endTransmission();                // формируем I2C-Stop.
    }

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Я так понимаю RDA5807M в этом счетче используется в режиме совместимости с TEA5767.

Но в скетче не вижу инициализации чипа RDA5807M. Подскажите, он действительно будет рабоать без инициализации? То есть у вас станции настраиваются только частота не отображается?

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

использую скетч

    // FM Радио версия 1.0
    // http://www.forklg.ru


    #include <Wire.h>               // I2C-Library для управления радиомодулем RDA5807
    // SDA приемника RDA5807 подключаем к аналоговому входу 4
    // SCL приемника RDA5807 подключаем к аналоговому входу 5
    #include "TM1637.h" // Библиотека для управления LED дисплеем TM1637
    #define CLK 4     // вывод CLC дисплея
    #define DIO 5     // вывод DIO дисплея
    TM1637 tm1637(CLK,DIO);
    double f_ini=102.200;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную).

    void setup()
    {
     tm1637.init();
      tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
      Wire.begin();   // Инициализация двухпроводной шины I2C.
      setFrequency(f_ini);  // Присваиваем значение частоты радиомодулю RDA5807
      pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз"
      pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх"
    }

    void loop()                 
    {
    float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее
    int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее
    tm1637.display(fin2); // выводим значение частоты на дисплей
    // проверяем нажатие кнопки "Частота вниз"
    if (digitalRead(6) == HIGH){
    // если кнопка "Частота вниз" нажата
    f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц
     setFrequency(f_ini); // передаем новое значение частоты радиомодулю
    };
    // проверяем нажатие кнопки "Частота вверх"
    if (digitalRead(7) == HIGH){
    // если кнопка "Частота вверх" нажата
    f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц
     setFrequency(f_ini);// передаем новое значение частоты радиомодулю
    };
    delay(500); // задержка 0,5 сек.
    }
     

    void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль RDA5807.
    {
      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.endTransmission();                // формируем I2C-Stop.
    }

 

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

все отоброжается но я делаю это без кнорпок

 

 

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Я так понял без кнопок это если просто указать частоту напрямую через функцию setFrequency() то приемник настраивается. 

А если нажимать кнопки то увеличение уменьшение частоты не происходит?

Загрузите скетч, посмотрите что приходит в монитор. Добавил строки 16,35,42. Если ничего не происходит значит кнопки подключены не правильно.

// FM Радио версия 1.0
// <a href="http://www.forklg.ru" title="http://www.forklg.ru" rel="nofollow">http://www.forklg.ru</a>


#include <Wire.h>               // I2C-Library для управления радиомодулем RDA5807
// SDA приемника RDA5807 подключаем к аналоговому входу 4
// SCL приемника RDA5807 подключаем к аналоговому входу 5
#include "TM1637.h" // Библиотека для управления LED дисплеем TM1637
#define CLK 4     // вывод CLC дисплея
#define DIO 5     // вывод DIO дисплея
TM1637 tm1637(CLK,DIO);
double f_ini=102.200;// Стартовая частота настройки приемника RDA5807. (Можно изменить на нужную).

void setup()
{
  Serial.begin(115200);
  tm1637.init();
  tm1637.set(BRIGHT_TYPICAL);//BRIGHT_TYPICAL = 2,BRIGHT_DARKEST = 0,BRIGHTEST = 7;
  Wire.begin();   // Инициализация двухпроводной шины I2C.
  setFrequency(f_ini);  // Присваиваем значение частоты радиомодулю RDA5807
  pinMode(6, INPUT); // вход для подключения кнопки "Частота вниз"
  pinMode(7, INPUT);// вход для подключения кнопки "Частота вверх"
}

void loop()                 
{
float fin1=(f_ini*1000); // производим вычисления для отображения установленной частоты на дисплее
int fin2=fin1/100; // производим вычисления для отображения установленной частоты на дисплее
tm1637.display(fin2); // выводим значение частоты на дисплей
// проверяем нажатие кнопки "Частота вниз"
if (digitalRead(6) == HIGH){
// если кнопка "Частота вниз" нажата
 f_ini=f_ini-0.1; // уменьшаем значение частоты на 0,1 МГц
 setFrequency(f_ini); // передаем новое значение частоты радиомодулю
 Serial.print("Press down, f_ini - "); Serial.println(f_ini);
};
// проверяем нажатие кнопки "Частота вверх"
if (digitalRead(7) == HIGH){
// если кнопка "Частота вверх" нажата
 f_ini=f_ini+0.1;// увеличиваем значение частоты на 0,1 МГц
 setFrequency(f_ini);// передаем новое значение частоты радиомодулю
 Serial.print("Press up, f_ini - "); Serial.println(f_ini);
};
delay(500); // задержка 0,5 сек.
}
 

void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль RDA5807.
{
  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.endTransmission();                // формируем I2C-Stop.
}

 

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

а с добавлением строк есть у вас вариант

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

да именно так не происходит никакого изменения  при нажатии на кнопки

Andrey12
Andrey12 аватар
Offline
Зарегистрирован: 26.12.2014

Ну тогда фото нужно того что у вас собрано. Причем чтоб видно было детально как и что подключено.

Я так понимаю кнопки подключены неправильно. А кнопки то рабочие?

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

да рабочие я  подключал их слогласно рисунку в на чале поста    безкнопок и 5 вольт на них идущих с этим скетчем все работает

 

azlk
azlk аватар
Offline
Зарегистрирован: 24.10.2016

может быть 1 ком номинал изменить в этом делителе?

ronixx
ronixx аватар
Offline
Зарегистрирован: 20.12.2018

azlk пишет:

может быть 1 ком номинал изменить в этом делителе?

 

Столкнулся с такой же проблемой. Только у меня хрень даже на дисплее показывает. Решили проблему ?