Показать сообщение отдельно
Старый 28.09.2016, 16:44   #7
oleg707
Гуру
 
Аватар для oleg707
 
Регистрация: 16.04.2014
Возраст: 39
Город: Gdynia
Регион: другой - для добавления сообщить ab
Сообщений: 2,548
oleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond reputeoleg707 has a reputation beyond repute
По умолчанию

итак
подключил
вход к джеку наушников телефона
выход - на линейный вход активной акустики.

Прицепил 2 кнопки для теста ( подтяжку не надо, использую внутренние резаки; один конец на минус, второй на 52 и 53 пины)

скетч, при нажатии кнопок громкости в ком порт идут значения громкости
0-80 звук есть, 80-255 Mute.

Монитор ком порта работает только когда есть питание на TDA7442!

PHP код:
//Для запуска tda7442 достаточно загрузить скетчь который ниже в ардуино
#include "Wire.h" //добавление библиотеки I2C шины 
//настройка кнопок громкости
const int volUPbutton 52;     // номер пина на подключение кнопки VOL+
const int volDNbutton 53;     // номер пина на подключение кнопки VOL-  


int buttonStateVOLup 0//переменная для чтения статуса кнопки
int buttonStateVOLdn 0//переменная для чтения статуса кнопки
byte MasterVolume 80// переменная, хранящая в себе громкость выходного звука, 0 - макс громкость, 79- минимальная, 80-255 MUTE http://arduino.ru/Reference/Byte Тип данных byte 8-ми битное беззнаковое целое число, в диапазоне 0..255
 
void setup() 

pinMode(13OUTPUT); // настройка пина встроенного светодиода на выход (чтоб моргать мог)
pinMode(volUPbuttonINPUT); //настройка порта ардуины на вход - приём данных от кнопки громкости +
pinMode(volDNbuttonINPUT); //настройка порта ардуины на вход - приём данных от кнопки громкости -
digitalWrite(volUPbuttonHIGH);       // включить подтягивающий резистор http://arduino.ru/Tutorial/DigitalPins
digitalWrite(volDNbuttonHIGH);       // включить подтягивающий резистор

Wire.begin(); // включение библиотеки I2C шины 
delay(1000); 
Serial.begin(9600); // ком порт
Serial.println(MasterVolume);
delay(1000); 

void loop(){ 

  
buttonStateVOLup digitalRead(volUPbutton); // читаем статус кнопки volUPbutton
  // проверяем, нажата ли кнопка 
    
if (buttonStateVOLup == LOW) {      digitalWrite(13HIGH); MasterVolume--; Serial.println(MasterVolume);  delay(300); } //если нажата кнопка VOL+, то включаем светик, уменьшаем переменную громкости (для увеличения звука)выводим значение громкости в порт и паузу от дребезга
     
else {      digitalWrite(13LOW);  }//если нет - тушим светик.
     
  
buttonStateVOLdn digitalRead(volDNbutton); // читаем статус кнопки volDNbutton   
      // проверяем, нажата ли кнопка 
      
if (buttonStateVOLdn == LOW) {      MasterVolume++; Serial.println(MasterVolume);  delay(300); }//если нажата кнопка VOL- увеличиваем переменную громкости (для уменьшения звука)выводим значение громкости в порт и паузу от дребезга

 /*
tda7442(0, 0b01100000);  //INPUT ATTENUATION  -16dB (0b - показывает, что данные будут в двоичной форме. )
потом идут разряды
D7 D6 D5 D4 D3 D2 D1 D0
по даташиту (5,1 пункт) D7 это B ( в табличке, B = 1 incremental bus; active B = 0 no incremental bus;X = indifferent 0,1)поэтому D7 будет 0.
D7 D6 D5 D4 D3 D2 D1 D0
B  X  X  X  0  0  0  0    INPUT ATTENUATION (из даташита)

X X X 0 0 0 0 INPUT ATTENUATION

*/




tda7442(00b01000000);  //INPUT ATTENUATION    приглушение ВХОДНОГО (IN1-IN4) канала (0 ~ -31.5dB)(0db-макс громкость, без приглушения)
tda7442(10b00000110);  //SURROUND & OUT & EFFECT CONTROL( -6 FIX OFF)
tda7442(20b00000011);  //SURROUND PHASE RESISTOR( 37KOm)
tda7442(30b00011111);  //BXXX0011 BASS SELECTION (0dB)-14dB
tda7442(40b01111110);  //BXXX0100 TREBLE (0dB)
//tda7442(5, 0b00000000);  //BXXX0101 SPEAKER ATTENUATION "L" (0dB)( SPEAKER SELECTION = 0dB ~ -79dB) громкость правого канала
//tda7442(6, 0b00000000);  //BXXX0110 SPEAKER ATTENUATION "R" (0dB) громкость левого канала
// регулировку громкости можно делать  0dB ~ -79dB в DEC c шагом 1. если (80-255) - то MUTE  
tda7442(5,  MasterVolume); //0 - макс громкость, 80-255 - MUTE .  
tda7442(6,  MasterVolume);
tda7442(70b00000000);  //BXXX0111 NOT ALLOWED
tda7442(80b00000000);  //BXXX1000 NOT ALLOWED         
tda7442(90b00000110);  //BXXX1001 INPUT MULTIPLEXER
            
 

 
void tda7442(int subaddressint data)  //Вызов tda7719 char??

Wire.beginTransmission(0x40); //СТАРТ и Адрес микросхема tda7442 
//или Wire.beginTransmission(0b1000000);
//после beginTransmission дуина ждёт по линии ДАТА ответа от tda7442 ( присаживание линии на землю)и потом передает
Wire.write(subaddress);       //Подадрес команды 
Wire.write(data);             //Команда 
//Serial.println(subaddress);   //Пишем подадрем в монитор 
//Serial.println(data);         //Пишем команду в монитор 
Wire.endTransmission();       //СТОП 
//delay(500); 

oleg707 вне форума   Ответить с цитированием