Ви не увійшли.
Сторінки 1
Напишу нужный Вам скетчь $
Напишу нужный Вам скетчь $
Напишу нужный Вам скетчь $
Напишу нужный Вам скетчь $
Помогите сделать многоуровневое меню на енкодере.
Хочу собрать радио на RDA5807M + екран 1602 + енкодер с кнопкой.
Как я хочу чтоб оно работало:
1)крутим енкодер в лево-уменьшается громкость
2)крутим енкодер в право-увеличивается громкость
3)нажали отпустили кнопку-произошол автопоиск следующего канала
4)нажали и держим кнопку-попадаем в меню настроек
5)ничего не трогаем в меню-происходит автовыход с меню
Коды и2с для RDA5807M с ними у меня проблем нет.Немогу осилить написать структуру и алгоритм меню
P.S.: в меню хочу сделать все настройки которые только есть у етого радио в даташите(примерно 40 пунктов меню).Не комерция.Помогите кто чем может
Помогите сделать многоуровневое меню на енкодере.
RDA5807M
I2C Scanner
Scanning...
I2C device found at address 0x10 !
I2C device found at address 0x11 !
I2C device found at address 0x60 !
done
// 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");
}
Кто поможет освоить етот модуль?Интересует регулировка громкости и т д.всё что есть в даташите.
Сторінки 1