PCCar.ru - Ваш автомобильный компьютер

PCCar.ru - Ваш автомобильный компьютер (http://pccar.ru/index.php)
-   Звуковые процессоры (http://pccar.ru/forumdisplay.php?f=188)
-   -   Аудиопроцессор для планшетов. Настраиваемый с андроид. (http://pccar.ru/showthread.php?t=24040)

Alekssandr 10.05.2016 00:38

Цитата:

Сообщение от T_r_D (Сообщение 360235)
И код у меня ну совсем не маленький!
Sketch uses 10*592 bytes (34%)
Global variables use 745 bytes (36%)

Ок в следующих видюхах будут писать называние трека)

Возможно вы заметили что у меня в проекте будет присутствовать ещё и OLED дисплей для отображения всякой инфы. Так вот, я в неё добавил графику, шрифты и т.д и всё это жрёт не мало памяти) + код для управления tda у меня на почти 1000 строк.

Проект будет построен на arduino due, 100%! Я не хочу в какойто определённый момент застрять на том что не хватает памяти для реализации, той или иной идеи.

А так проект я делаю для себя, и одновременно делюсь с вами и конечно выслушаю ваши мнения) т.е. я хочу сделать базу для open source проекта с возможностью кастомизации и набором конструктивных решений.

oleg707 10.05.2016 00:44

Цитата:

Сообщение от Alekssandr (Сообщение 360240)
Ок в следующих видюхах будут писать называние трека)

Возможно вы заметили что у меня в проекте будет присутствовать ещё и OLED дисплей для отображения всякой инфы. Так вот, я в неё добавил графику, шрифты и т.д и всё это жрёт не мало памяти) + код для управления tda у меня на почти 1000 строк.

Проект будет построен на arduino due, 100%! Я не хочу в какойто определённый момент застрять на том что не хватает памяти для реализации, той или иной идеи.

А так проект я делаю для себя, и одновременно делюсь с вами и конечно выслушаю ваши мнения) т.е. я хочу сделать базу для open source проекта с возможностью кастомизации и набором конструктивных решений.

да ты делай, делай. Блок питания у меня уже есть, разработка его - та ещё кака, времени съела кучу (хотя и опыта много дала). Я лучше твой проект сграблю и под свои нужды допилю, чем с нуля разрабатывать. Если надо - помогу чем могу с удовольствием, потому как программу написать для меня сложнее, чем с железом ковыряться.

Alekssandr 10.05.2016 01:28

Цитата:

Сообщение от oleg707 (Сообщение 360241)
да ты делай, делай. Блок питания у меня уже есть, разработка его - та ещё кака, времени съела кучу (хотя и опыта много дала). Я лучше твой проект сграблю и под свои нужды допилю, чем с нуля разрабатывать. Если надо - помогу чем могу с удовольствием, потому как программу написать для меня сложнее, чем с железом ковыряться.

Ок в программировании сам новичок но потихоньку изучаю всё, как раз таки с блоком питания и думаю чтоб шумов никаких не было, даже думал отдельную плату сделать с источником питания чтоб потом основную плату не ковырять. Какие советы можешь дать чтоб всё было без шумно, нужно стабилизированных 3 источника питания, 3.3В, 5.1-5.2В и 8.5-9В.

на плате у меня специально отведено пространство под блок питания размером 55х33мм, хватит? Если не хватит придётся 2-й этаж строить) благо корпус это позволяет.

yuriy m 10.05.2016 01:41

Для начало токи скажи по каждому, а потом уже можно ,что-то говорить....

Alekssandr 10.05.2016 01:46

Цитата:

Сообщение от yuriy m (Сообщение 360244)
Для начало токи скажи по каждому, а потом уже можно ,что-то говорить....

8.5-9В ток около 30-40мА питание TDA7719.
3.3В ток около 30-120мА в зависимости от нагрузки Arduino DUE
5.1В до 2A питание USB и периферии.

T_r_D 10.05.2016 01:58

Alekssandr
тысяча строк на управление микрухой?
Офигеть!
Надо посмотреть будет что там такого хитрого.

T_r_D 10.05.2016 02:07

Оу нашёл твой код!
Да так памяти не хватит ни какой!
case 6: tdaparametr="GAIN REAR R";
if(selectmenu==true){ encoder_data=dueFlashStorage.read(25);}
tdapodparametr="0 to 39";
add = 1;
encoder_data = constrain(encoder_data, 0,39);
rear_r = encoder_data;
rear_rtda = 223-(rear_r+attenation);
if(selectmenu==false){
tda7719(16, rear_rtda); //Настройки динамика задний правый :Speaker Attenuator Left Front
}
break;
case 7: tdaparametr="GAIN SUBWOOFER L";
if(selectmenu==true){ encoder_data=dueFlashStorage.read(26);}
tdapodparametr="0 to 39";
add = 1;
encoder_data = constrain(encoder_data, 0,39);
sub_l = encoder_data;
sub_ltda = 223-(sub_l+attenation);
if(selectmenu==false){
tda7719(17, sub_ltda); //Настройки сабвуфера левый :Speaker Attenuator Left Front
}
break;

А теперь смотри фишку!
Можно создать функцию, скажем PARAM и передавать в неё значения.
Сильно с твоим кодом не разбирался, но вот так:

case 5: tdaparametr="GAIN REAR L";
PARAM(24,100,16)
break;
case 6: tdaparametr="GAIN REAR R";
PARAM(25,100,16)
break;
....

void PARAM(int a , int b, int c){
if(selectmenu==true){ encoder_data=dueFlashStorage.read(a);}
tdapodparametr="0 to 39";
add = 1;
encoder_data = constrain(encoder_data, 0,39);
rear_l = encoder_data;
rear_ltda = 223-(b+attenation);
if(selectmenu==false){
tda7719(c, rear_ltda); //Настройки динамика задний левый :Speaker Attenuator Left Front
}

идея понятна?
Таким образом ты выкинешь треть кода своего!
так же можешь сделать возвратный параметр из функции, но он тебе не нужен в данном коде.

Успешный 10.05.2016 08:50

Александр, твое устройство для планшета и ты планируешь делать приложение под андроид, зачем же дисплей туда прикручивать? Через приложение все настройки можно организовать. Уберешь дисплей и размер убавиться и можно будет на анрдуино про микро делать.

Alekssandr 10.05.2016 11:40

Так у меня почти тоже самое. 5 основных функции. Просто все параметры заведены в одну функцию void meny_oled. А вы предлагаете сделать почти тоже самое только вывести каждый параметр в отдельную функцию, только смысл, возможно удобней будет конечно.

Или я чтото не понял? весь код здесь


172) void encoder() //обработка энкодера, и пока его не крутанешь остальные функции вызываться не будут.

210) void meny_oled() //здесь все меню которые есть, и расчеты для аудиопроца .

817) void tda7719(int subaddress, int data) //сюда подаются параметры из меню и отправляются на аудиопроц по I2C

824) void displayprint() //Здесь происходит отображение инфы на дисплее

852) void flaschwrite() //эта функция, сохраняет параметры в память после 1 сек как перестали вращать энкодер.



По поводу того что я ещё приделал дисплей он мне нужен, для отображения всякой важной информации, да и чтоб устройство было самодостаточным. управление с android тоже будет но попозже как печатную плату сделаю. Дисплей останется 100%.

Думаю сделать 2 платы внутри, 1 снизу для слаботочки, 2-ю сверху для блоков питания и усилителей. (Корпус заказал сегодня за 1200р), причем верхнюю без проблем можно будет вытравить самому) чтоб экономичней вышло.

T_r_D 10.05.2016 13:31

Alekssandr
Я про то, что там куча повторяющегося кода. Который различается на один или пару параметров. Предлагаю такие куски запихать в функцию и передавать в неё параметры.
Очень много однотипного кода. Если его сократить, то программа сократится втрое наверное.


Часовой пояс GMT +4, время: 19:21.

Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot