темброблок на R2S15902FP

Вопросы от новичков
Ответить
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#1

Сообщение solo » 20.12.2021{, 19:38}

пытаюсь сделать управление микросхемой R2S15902FP
за основу взял инфу с сайта
http://forum.rcl-radio.ru/viewtopic.php?id=15
если просто беру скетчи с сайта, который выше, то все работает и управляется нормально
пытаюсь создать пользовательский блок на основании "тест инфо" но чего то не того , громкость регулируется но неправильно( наоборот ) и тихо
в последствии хочу сделать управление R2S15902FP с помощью ESP8266
может кто сможет помочь , а то я в не очень , а метод ТЫКА не прокатил
Вложения
proba нано.flp
(592.41 КБ) 20 скачиваний
R2S15902FP.rar
(7.79 КБ) 30 скачиваний

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

темброблок на R2S15902FP

#2

Сообщение AlexCrane » 20.12.2021{, 20:41}

solo, Чуток попутали в вызове Slot1, поправил, а так в целом все верно...
proba нано v2.flp
(587.83 КБ) 32 скачивания
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

com
Капитан
Сообщения: 831
Зарегистрирован: 31.05.2018{, 22:12}
Репутация: 83
Откуда: Санкт-Петербург
Имя: Ринат

темброблок на R2S15902FP

#3

Сообщение com » 20.12.2021{, 20:46}

Оффтоп. Не пробывали применить ADAU1701? Интересный аудиопроцессор, хорошие возможности, программируется аналогично флпрог, есть своя графическая программа, какая никакая поддержка.

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#4

Сообщение solo » 21.12.2021{, 10:39}

AlexCrane писал(а):
20.12.2021{, 20:41}
solo, Чуток попутали в вызове Slot1, поправил, а так в целом все верно...
proba нано v2.flp
не так совсем не работает

com писал(а):
20.12.2021{, 20:46}
Оффтоп. Не пробывали применить ADAU1701? Интересный аудиопроцессор, хорошие возможности, программируется аналогично флпрог, есть своя графическая программа, какая никакая поддержка.
не у меня просто есть ( достался по случаю, музыкальный ящик ) в котором управление звуком идет микрухой R2S15902FP, вот и пытаюсь оживить

Отправлено спустя 2 минуты 52 секунды:
вот если заливаю такой скетч в ардуино
СпойлерПоказать
//#include <R2S15902FPM.h>


#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <R2S15902FP.h>
#include <Encoder.h>
#include <EEPROM.h>
#include <MsTimer2.h>
#include <boarddefs.h>
//#include <IRremote.h>
LiquidCrystal_I2C lcd(0x3F,16,2); // Устанавливаем дисплей
//IRrecv irrecv(12); // указываем вывод модуля IR приемника
Encoder myEnc(9, 8);// DT, CLK
//decode_results ir;
byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};
unsigned long time,oldPosition = -999,newPosition;
int menu,vol,vol_d,treb,treb_d,bass,bass_d,in;
byte w,w2,z,z0,z1,r_l;

void setup(){
//irrecv.enableIRIn(); // запускаем модуль IR
lcd.init();lcd.backlight();// Включаем подсветку дисплея
lcd.setCursor(0,0);lcd.print(" R2S15902FP ");delay(2000);
Serial.begin(9600); lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
pinMode(DATA, OUTPUT); // D2
pinMode(CLK, OUTPUT); // D3
pinMode(10,INPUT);// МЕНЮ КНОПКА SW энкодера
MsTimer2::set(3, to_Timer);MsTimer2::start(); // АКТИВИРУЕМ ПРЕРЫВАНИЯ ДЛЯ ЭНКОДЕРА
vol = EEPROM.read(0);treb = EEPROM.read(1);bass = EEPROM.read(2);in = EEPROM.read(3);
delay(100);cl();
audio();
}

void loop(){
if(digitalRead(10)==LOW){menu++;cl();time=millis();w=1;w2=1;if(menu>3){menu=0;}}// меню

if(menu==0){

if (newPosition != oldPosition){oldPosition = newPosition;
vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;vol_func();audio();}
lcd.setCursor(0,0);lcd.print("VOLUME ");
lcd.print(" ");lcd.print(-vol);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");vol_d=48-vol;
if(w2==1){
for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}

///////////////////////// TREBLE +/-14 dB /////////////////////////////////////////////////////////
if(menu==1){

if (newPosition != oldPosition) {
oldPosition = newPosition;
treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;treb_func();audio();}
lcd.setCursor(0,0);lcd.print("TREBLE ");
lcd.print(" ");lcd.print(14-treb*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");treb_d=28-treb*2;
if(w2==1){
for(z=0,z0=0,z1=0;z<=treb_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}

///////////////////////// BASS +/-14 dB /////////////////////////////////////////////////////////
if(menu==2){

if (newPosition != oldPosition) {
oldPosition = newPosition;
bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;bass_func();audio();}
lcd.setCursor(0,0);lcd.print("BASS ");
lcd.print(" ");lcd.print(14-bass*2);lcd.print(" ");lcd.setCursor(13,0);lcd.print("dB");bass_d=28-bass*2;
if(w2==1){
for(z=0,z0=0,z1=0;z<=bass_d;z++,z1++){if(z1>2){z1=0;z0++;}
if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(" ");}}
if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}

///////////////////// IN /////////////////////////////////////////////////////////////////////////
if(menu==3){
if (newPosition != oldPosition) {
oldPosition = newPosition;
in=in-newPosition;myEnc.write(0);newPosition=0;time=millis();cl();w=1;w2=1;in_func(); if(in==3){r_l=1;}else{r_l=0;}audio();}
lcd.setCursor(0,0);lcd.print("INPUT ");lcd.print(in+1);

}

if(millis()-time>10000 && w==1){
EEPROM.update(0,vol);EEPROM.update(1,treb);EEPROM.update(2,bass);EEPROM.update(3,in);
menu=0;w=0;w2=1;cl();}
}
void in_func(){if(in>3){in=0;}if(in<0){in=3;}}
void bass_func(){if(bass>14){bass=14;}if(bass<0){bass=0;}}
void treb_func(){if(treb>14){treb=14;}if(treb<0){treb=0;}}
void vol_func(){if(vol<0){vol=0;}if(vol>99){vol=99;}}
void cl(){
//ir.value=0;
delay(300);lcd.clear();}
void to_Timer(){newPosition = myEnc.read()/4;}
void audio(){
Slot1(in,3,r_l,0,bass,treb,0);
// input selector 1...4 === int 0...3, in4 === multi in
//REC-Output Gain Control int 0...6 dB === int 0...3
//L/R Input 0 === IN1...3, 1 === IN4 MULTI
//ADC Input ATT 0...-6 dB === int 0...3
//bass int 0 === +14dB int 8 === 0dB int 15 === -14dB
//treble int 0 === +14dB int 8 === 0dB int 15 === -14dB
//Input Gain 0...14 dB === int 0...7
Slot2(5,vol,5,vol); // gain0, volume0, gain1, volume1
Slot3(5,vol,5,vol); // gain2, volume2, gain3, volume3
Slot4(5,vol,5,vol); // gain4, volume4, gain5, volume5
// gain 0...14 dB === int 0...7
// volume 0...-99 dB === int 0...100
}
то все работает отлично

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#5

Сообщение solo » 22.12.2021{, 10:45}

спасибо за внимание к теме
из выше сказанного мне почти нечего не понятно
скажу что пробовал
так как в программировании я почти "0" но методом тыка пробовал вносить изменения в пользовательский блок :smile390: но пользовательский блок так и не заработал нормально ,
если заливаю скетч из сообщения выше то при управлении "громкость" выходной сигнал нарастает от мин до мах
если заливаю скетч с FLProg с пользовательским блоком, то при вращении энкодера значение переменной "volum" увеличивается , а уровень выходного сигнала уменьшается , и при значении где то 20 исчезает совсем ( складывается такое впечатление, что не те биты попадают на управление микросхемы ) :smile250: и я не понимаю из за чего это происходит то ли рассогласования тайминга между clock и data ( осциллографа посмотреть сигналы нету) то ли еще по какой то причине

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#6

Сообщение solo » 22.12.2021{, 15:04}

av писал(а):
22.12.2021{, 13:15}
Вопрос... по какой схеме вы делаете аудиопроцессор. У автора библиотеки на форуме есть обновленная схема и исправленная библа. Добавились отдельные входы звука 5.1 в связи с этим изменилась функция управления параметров селектора входов.
у меня на плате сделана разводка всех входов кроме in_3 если смотреть по даташифту
https://www.renesas.com/us/en/document/ ... -datasheet
конкретно сейчас ковыряюсь с управлением сигнала который приходит на IN_2
Да я сам взялся ковыряюсь с этим блоком , на фирме решили сделать корпоратив , ну и понадобилась музыка .
Сейчас попробую залить скеч в ЕСП8266 может поможет, за одно и проверю масштабирование

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#7

Сообщение solo » 22.12.2021{, 18:35}

av писал(а):
22.12.2021{, 16:32}
Какой дисплей будет использоваться для отображения и настройки параметров ?

планирую телефон
av писал(а):
22.12.2021{, 16:32}
назначением пинов подключения DATA, CLK. Не знаю как вы назначите эти пины для ЕСП.
о спасибо про пины проверил пины (2. 3.) нано, переносятся в esp как 4 и RX соответственно
а покажите как можно регулировать частоту вывода DATA , Clk чета мне кажется шо ЕСП сильно быстро генерит частоту , а судя по датшифту частота должна быть не выше 125кГц ( 8мкС )
Вложения
proba.flp
(541.19 КБ) 16 скачиваний

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#8

Сообщение solo » 22.12.2021{, 19:25}

av писал(а):
22.12.2021{, 19:11}
Кстати в блоке есть ошибка. Вход R_L_in имеет тип boolean (из библиотеки), а не тип integer.
подправил не помогло , все без изменений

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

темброблок на R2S15902FP

#9

Сообщение AlexCrane » 22.12.2021{, 19:52}

Я думаю, лишние библиотеки нужно удалить, в приложенном блоке встроены четыре, какую из них ардуино берет.... Поэтому и все гадания в каком месте и какого типа R_L
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#10

Сообщение solo » 23.12.2021{, 09:40}

спасибо
но чего то таво ругается на вот ЭТО
if (Old_Selector != Selector || Old_Out_gain != Out_gain || Old_att != att || Old_R_L_in != R_L_in || Old_bass != bass || Old_treb != treb || Old_in_gain != in_gain)
СпойлерПоказать
C:\Users\solo\AppData\Local\Temp\flprog\pr1\pr1.ino: In function 'void loop()':

pr1:166:37: error: 'Old_Out_gain' was not declared in this scope; did you mean 'Old_out_gain'?

166 | if (Old_Selector != Selector || Old_Out_gain != Out_gain || Old_att != att || Old_R_L_in != R_L_in || Old_bass != bass || Old_treb != treb || Old_in_gain != in_gain)

| ^~~~~~~~~~~~

| Old_out_gain

pr1:175:58: error: 'treble' was not declared in this scope; did you mean 'treb'?

175 | Slot1(Selector, Out_gain, att,R_L_in, bass, treble,in_gain); //выполняем функцию настройки параметров если функция сравнения неравенства была успешной

| ^~~~~~

| treb

Несколько библиотек найдено для "EEPROM.h"

Используется: D:\FLpog7.4\PortableFLProg_7-4-1_Win64\ideV8\portable\packages\esp8266\hardware\esp8266\3.0.2\libraries\EEPROM

Не используется: d:\FLpog7.4\PortableFLProg_7-4-1_Win64\ideV8\portable\sketchbook\libraries\E2PROM

exit status 1

'Old_Out_gain' was not declared in this scope; did you mean 'Old_out_gain'?
Отправлено спустя 1 минуту 26 секунд:
а проект
Вложения
proba01.flp
(464.63 КБ) 22 скачивания

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#11

Сообщение solo » 23.12.2021{, 12:40}

ура на ардуино и на ESP заработало :smile9: :smile225:
с еспешкой были маленькие проблемы, при питании от юсб проходили какие то помехи ( постоянное хрюкание )
и сигнал R_L_in почему то не переключатся с веб интерфейса , ну это мелочи может перересую мордочку и все у нормализуется
все с меня причитается
сяду рисовать мордочку для управления

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#12

Сообщение solo » 23.12.2021{, 16:15}

спасибо я это уже исправил , У меня вчера были с этим проблемы по этому долго не мог понять почему я меняю библиотеки ( только я менял библиотеки у которых 6 переменных и 7 переменных в строке void Slot1) а в скетче использовалась только одна на 7 переменных .
Это я так методом тыка пытался создавать сам пользовательский блок

solo
Рядовой
Сообщения: 54
Зарегистрирован: 06.12.2016{, 18:04}
Репутация: 0
Откуда: Харьков

темброблок на R2S15902FP

#13

Сообщение solo » 23.12.2021{, 16:39}

подскажите пж
в веб интерфейсе есть виджет "Кнопка ", можно где то, что то подправить чтобы увеличить размер тыкательного места
в свойствах кнопки написано стиль stBtn
В настройках веб интерфейса есть упоминание рядом с "stBtn" {margin 5px} если увеличить значение цифирьки то становится более крупная надпись а тыкательное место не увеличивается
Вложения
вопрос.jpg

Ответить

Вернуться в «Начинающим»