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

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

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

Сообщение solo »

пытаюсь сделать управление микросхемой R2S15902FP
за основу взял инфу с сайта
http://forum.rcl-radio.ru/viewtopic.php?id=15
если просто беру скетчи с сайта, который выше, то все работает и управляется нормально
пытаюсь создать пользовательский блок на основании "тест инфо" но чего то не того , громкость регулируется но неправильно( наоборот ) и тихо
в последствии хочу сделать управление R2S15902FP с помощью ESP8266
может кто сможет помочь , а то я в не очень , а метод ТЫКА не прокатил
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

[ref]solo[/ref], Чуток попутали в вызове Slot1, поправил, а так в целом все верно...
proba нано v2.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
com
Капитан
Сообщения: 832
Зарегистрирован: 31 май 2018, 22:12
Откуда: Санкт-Петербург
Имя: Ринат

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

Сообщение com »

Оффтоп. Не пробывали применить ADAU1701? Интересный аудиопроцессор, хорошие возможности, программируется аналогично флпрог, есть своя графическая программа, какая никакая поддержка.
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

AlexCrane писал(а): 20 дек 2021, 20:41 [ref]solo[/ref], Чуток попутали в вызове Slot1, поправил, а так в целом все верно...
proba нано v2.flp
не так совсем не работает

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

Отправлено спустя 2 минуты 52 секунды:
вот если заливаю такой скетч в ардуино

[spoiler]
//#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
}

[/spoiler]
то все работает отлично
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

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

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

Сообщение solo »

av писал(а): 22 дек 2021, 13:15 Вопрос... по какой схеме вы делаете аудиопроцессор. У автора библиотеки на форуме есть обновленная схема и исправленная библа. Добавились отдельные входы звука 5.1 в связи с этим изменилась функция управления параметров селектора входов.
у меня на плате сделана разводка всех входов кроме in_3 если смотреть по даташифту
https://www.renesas.com/us/en/document/ ... -datasheet
конкретно сейчас ковыряюсь с управлением сигнала который приходит на IN_2
Да я сам взялся ковыряюсь с этим блоком , на фирме решили сделать корпоратив , ну и понадобилась музыка .
Сейчас попробую залить скеч в ЕСП8266 может поможет, за одно и проверю масштабирование
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

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

планирую телефон
av писал(а): 22 дек 2021, 16:32 назначением пинов подключения DATA, CLK. Не знаю как вы назначите эти пины для ЕСП.
о спасибо про пины проверил пины (2. 3.) нано, переносятся в esp как 4 и RX соответственно
а покажите как можно регулировать частоту вывода DATA , Clk чета мне кажется шо ЕСП сильно быстро генерит частоту , а судя по датшифту частота должна быть не выше 125кГц ( 8мкС )
У вас нет необходимых прав для просмотра вложений в этом сообщении.
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

av писал(а): 22 дек 2021, 19:11 Кстати в блоке есть ошибка. Вход R_L_in имеет тип boolean (из библиотеки), а не тип integer.
подправил не помогло , все без изменений
Аватара пользователя
AlexCrane
Капитан
Сообщения: 903
Зарегистрирован: 20 окт 2017, 13:22
Откуда: Ульяновск
Имя: Александр
Поблагодарили: 12 раз

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

Сообщение AlexCrane »

Я думаю, лишние библиотеки нужно удалить, в приложенном блоке встроены четыре, какую из них ардуино берет.... Поэтому и все гадания в каком месте и какого типа R_L
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

спасибо
но чего то таво ругается на вот ЭТО
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)

[spoiler]
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'?
[/spoiler]

Отправлено спустя 1 минуту 26 секунд:
а проект
У вас нет необходимых прав для просмотра вложений в этом сообщении.
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

ура на ардуино и на ESP заработало :smile9: :smile225:
с еспешкой были маленькие проблемы, при питании от юсб проходили какие то помехи ( постоянное хрюкание )
и сигнал R_L_in почему то не переключатся с веб интерфейса , ну это мелочи может перересую мордочку и все у нормализуется
все с меня причитается
сяду рисовать мордочку для управления
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

спасибо я это уже исправил , У меня вчера были с этим проблемы по этому долго не мог понять почему я меняю библиотеки ( только я менял библиотеки у которых 6 переменных и 7 переменных в строке void Slot1) а в скетче использовалась только одна на 7 переменных .
Это я так методом тыка пытался создавать сам пользовательский блок
solo
Рядовой
Сообщения: 54
Зарегистрирован: 06 дек 2016, 18:04
Откуда: Харьков

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

Сообщение solo »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: diman27 и 0 гостей