Добавлена схема и пплата опторазвязок. И код для работы с ней.

This commit is contained in:
Калинин Сергей Валерьевич
2025-01-23 13:53:04 +03:00
parent 40de9299d1
commit e05acef63c
10 changed files with 6671 additions and 636 deletions

View File

@@ -15,6 +15,14 @@
#define RELAY_OUT_BT_RIGHT 9
#define RELAY_OUT_MP3_LEFT 11
#define RELAY_OUT_MP3_RIGHT 12
// Индикаторы включения (подключения) входов
#define OPTOCOUPLE_USB 13
#define OPTOCOUPLE_COAX 14
#define OPTOCOUPLE_BT 15
// Входы звукового сигнала для анализатора спектра
#define AUDIO_IN_L 0
#define AUDIO_IN_R 1
// Кнопки
#define BTN_MENU 2 // Кнопка меню
@@ -37,13 +45,6 @@
byte posOffset[16] = {2, 3, 4, 6, 8, 10, 12, 14, 16, 20, 25, 30, 35, 60, 80, 100};
// ---------------- НАСТРОЙКИ ----------------
// ---------------------- ПИНЫ ----------------------
#define AUDIO_IN_L 0 // пин, куда подключен звук
#define AUDIO_IN_R 1 // пин, куда подключен звук
#define POT_PIN 7 // пин потенциометра настройки
// ---------------------- ПИНЫ ----------------------
// --------------- БИБЛИОТЕКИ ---------------
#define LOG_OUT 1
#include <FHT.h> // преобразование Хартли
@@ -106,6 +107,12 @@ void setup() {
pinMode(RELAY_OUT_BT_RIGHT, OUTPUT);
pinMode(RELAY_OUT_MP3_LEFT, OUTPUT);
pinMode(RELAY_OUT_MP3_RIGHT, OUTPUT);
// Входы индикаторов с USB ЦАП
pinMode(OPTOCOUPLE_USB, INPUT_PULLUP);
pinMode(OPTOCOUPLE_COAX, INPUT_PULLUP);
// Вход индикатора с BlueTooth адаптера
pinMode(OPTOCOUPLE_BT, INPUT_PULLUP);
// lcdVuMeter.createChar(5,znak_l);
// lcdVuMeter.begin(16, 2);// lcdVuMeter 16X2
@@ -181,9 +188,23 @@ void lcdChars() {
lcdVuMeter.createChar(7, v8);
}
// Получаем тип подключенного входа к USB ЦАПу
String setUSBinput() {
return "Input: USB";
if (!digitalRead(OPTOCOUPLE_USB) && usb) {
return "Input: USB";
} else if (!digitalRead(OPTOCOUPLE_COAX) && usb) {
return "Input: Coax";
} else {
return "Input: None";
}
}
// Получаем статус подключения устройства к bluetooth
String setBTstatus() {
if (!digitalRead(OPTOCOUPLE_BT) && bluetooth) {
return "Connected";
} else {
return "Connecting..";
}
}
@@ -315,12 +336,13 @@ void loop() {
if(!menuShow){
if(usb){
lcdService.print("USB DAC");
lcdService.setCursor(0,1);
lcdService.print(setUSBinput());
// actionUSB();
}
if(bluetooth){
lcdService.print("Bluetooth");
lcdService.setCursor(0,1);
lcdService.print(setBTstatus());
// actionBT();
}
if(mp3){
@@ -344,23 +366,8 @@ void loop() {
delay(100);
while (!digitalRead(BTN_EXECUTE));
}
// Тут будет код обработки данных от USB DAC для индикации режима его работы
// if (digitalRead(8) && usb) {
// lcdService.setCursor(0,1);
// lcdService.print("Coaxial");
// } else if (digitalRead(9) && usb) {
// lcdService.setCursor(0,1);
// lcdService.print("Optical");
// } else if (digitalRead(10) && usb) {
// lcdService.setCursor(0,1);
// lcdService.print("Audio ");
// } else {
// lcdService.setCursor(0,1);
// lcdService.print(" ");
// }
// lcdService.setCursor(11,1);
// lcdService.print(digitalRead(8), digitalRead(9));
if (GAIN_CONTROL) gain = map(analogRead(POT_PIN), 0, 1023, 0, 150);
// if (GAIN_CONTROL) gain = map(analogRead(POT_PIN), 0, 1023, 0, 150);
analyzeAudio(); // функция FHT, забивает массив fht_log_out[] величинами по спектру