Тема: M62446
Пожалуйста создайте скетч
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
forum.rcl-radio.ru → Аудиопроцессоры → M62446
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Пожалуйста создайте скетч
У Вас есть в наличии эта микросхема? Плата собрана?
Да есть брат
Палата собран
Уточните у Вас M62446FP или M62446AFP?
Тестирование, нужно проверить работает ли скетч, регулируется ли тембр, громкость по всем 6 каналам.
M62446FP
#define LATCH 2
#define DATA 3
#define CLOCK 4
void setup() {
Serial.begin(9600);
pinMode(LATCH, OUTPUT);
pinMode(DATA, OUTPUT);
pinMode(CLOCK, OUTPUT);
}
void loop() {
byte_1(5,0b0000,5,0);// treb -5...5, port 0b0000, bass -5...5, bypass = 0
byte_2(0,0);// 0...79 = 0...-79 dB
byte_3(0,0);// 0...79 = 0...-79 dB
byte_4(0,0);// 0...79 = 0...-79 dB
delay(1000);
}
void byte_1(int treb, byte port, int bass, bool by_pass){
// treb int -5...+5 === -10...+10 dB
// bass int -5...+5 === -10...+10 dB
// byte port 0b0000....0b1111
// by_pass === 0 TONE | 1 BYPASS
switch(treb){
case -5: treb = 0b1110;break;
case -4: treb = 0b1100;break;
case -3: treb = 0b1011;break;
case -2: treb = 0b1010;break;
case -1: treb = 0b1001;break;
case 0: treb = 0b0000;break;
case 1: treb = 0b0001;break;
case 2: treb = 0b0010;break;
case 3: treb = 0b0011;break;
case 4: treb = 0b0100;break;
case 5: treb = 0b0110;break;
}
switch(bass){
case -5: bass = 0b1110;break;
case -4: bass = 0b1100;break;
case -3: bass = 0b1011;break;
case -2: bass = 0b1010;break;
case -1: bass = 0b1001;break;
case 0: bass = 0b0000;break;
case 1: bass = 0b0001;break;
case 2: bass = 0b0010;break;
case 3: bass = 0b0011;break;
case 4: bass = 0b0100;break;
case 5: bass = 0b0110;break;
}
unsigned int data_byte = (treb<<12)|(port<<8)|(bass<<4)|(by_pass<<2)|0b00;
writeByte(data_byte);
}
void byte_2(int vol_l, int vol_r){
// int vol 0...79 === 0...-79 dB
unsigned int data_byte = (vol_l<<9)|(vol_r<<2)|0b01;
writeByte(data_byte);
}
void byte_3(int vol_c, int vol_sw){
// int vol 0...79 === 0...-79 dB
unsigned int data_byte = (vol_c<<9)|(vol_sw<<2)|0b10;
writeByte(data_byte);
}
void byte_4(int vol_sl, int vol_sr){
// int vol 0...79 === 0...-79 dB
unsigned int data_byte = (vol_sl<<9)|(vol_sr<<2)|0b11;
writeByte(data_byte);
}
void writeByte(uint16_t data){
for (int i = 15; i >= 0; i--){
digitalWrite(DATA, (data >> i) & 1);delayMicroseconds(3);
digitalWrite(CLOCK, HIGH);delayMicroseconds(3);
digitalWrite(CLOCK, LOW);delayMicroseconds(3);
Serial.print((data >> i) & 1);
}
Serial.println();
digitalWrite(LATCH, HIGH);delayMicroseconds(1);
digitalWrite(LATCH, LOW);delayMicroseconds(3);
}
У меня M62446AFP хорошо позже буду тестировать
M62446AFP
#define LATCH 2
#define DATA 3
#define CLOCK 4
void setup() {
Serial.begin(9600);
pinMode(LATCH, OUTPUT);digitalWrite(LATCH, LOW);
pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
pinMode(CLOCK, OUTPUT);digitalWrite(CLOCK, LOW);
}
void loop() {
byte_1(5,0b0000,5,0);// treb -7...7, port 0b0000, bass -5...5, bypass = 0
byte_2(0,0);// 0...95 = 0...-95 dB mute = 112
byte_3(0,0);// 0...95 = 0...-95 dB mute = 112
byte_4(0,0);// 0...95 = 0...-95 dB mute = 112
delay(1000);
}
void byte_1(int treb, byte port, int bass, bool by_pass){
// treb int -7...+7 === -14...+14 dB
// bass int -7...+7 === -14...+14 dB
// byte port 0b0000....0b1111
// by_pass === 0 TONE | 1 BYPASS
switch(treb){
case -7: treb = 0b1111;break;
case -6: treb = 0b1101;break;
case -5: treb = 0b1110;break;
case -4: treb = 0b1100;break;
case -3: treb = 0b1011;break;
case -2: treb = 0b1010;break;
case -1: treb = 0b1001;break;
case 0: treb = 0b0000;break;
case 1: treb = 0b0001;break;
case 2: treb = 0b0010;break;
case 3: treb = 0b0011;break;
case 4: treb = 0b0100;break;
case 5: treb = 0b0110;break;
case 6: treb = 0b1101;break;
case 7: treb = 0b1111;break;
}
switch(bass){
case -7: bass = 0b1111;break;
case -6: bass = 0b1101;break;
case -5: bass = 0b1110;break;
case -4: bass = 0b1100;break;
case -3: bass = 0b1011;break;
case -2: bass = 0b1010;break;
case -1: bass = 0b1001;break;
case 0: bass = 0b0000;break;
case 1: bass = 0b0001;break;
case 2: bass = 0b0010;break;
case 3: bass = 0b0011;break;
case 4: bass = 0b0100;break;
case 5: bass = 0b0110;break;
case 6: bass = 0b1101;break;
case 7: bass = 0b1111;break;
}
unsigned int data_byte = (treb<<12)|(port<<8)|(bass<<4)|(by_pass<<2)|0b00;
writeByte(data_byte);
}
void byte_2(int vol_l, int vol_r){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_l>79){vol_l=vol_l+16;}
if(vol_r>79){vol_r=vol_r+16;}
unsigned int data_byte = (vol_l<<9)|(vol_r<<2)|0b01;
writeByte(data_byte);
}
void byte_3(int vol_c, int vol_sw){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_c>79){vol_c=vol_c+16;}
if(vol_sw>79){vol_sw=vol_sw+16;}
unsigned int data_byte = (vol_c<<9)|(vol_sw<<2)|0b10;
writeByte(data_byte);
}
void byte_4(int vol_sl, int vol_sr){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_sl>79){vol_sl=vol_sl+16;}
if(vol_sr>79){vol_sr=vol_sr+16;}
unsigned int data_byte = (vol_sl<<9)|(vol_sr<<2)|0b11;
writeByte(data_byte);
}
void writeByte(uint16_t data){
digitalWrite(LATCH, HIGH);delayMicroseconds(1);
digitalWrite(LATCH, LOW);delayMicroseconds(3);
for (int i = 15; i >= 0; i--){
digitalWrite(DATA, (data >> i) & 1);delayMicroseconds(3);
digitalWrite(CLOCK, HIGH);delayMicroseconds(3);
digitalWrite(CLOCK, LOW);delayMicroseconds(3);
}
digitalWrite(LATCH, HIGH);delayMicroseconds(1);
digitalWrite(LATCH, LOW);delayMicroseconds(3);
}
Брат у m62446afp нету регулировка тембра
Громкость регулируется?
Ну не знаю раньше у меня не было этих функций на даташиту есть такой функция ночью проверяю
Вот такой проблема
Опешите проблему подробнее
Звук появляется и исчезает
По кругу появляется и исчезает все канал
Попробуйте этот код:
#define LATCH 2
#define DATA 3
#define CLOCK 4
void setup() {
Serial.begin(9600);
pinMode(LATCH, OUTPUT);digitalWrite(LATCH, LOW);
pinMode(DATA, OUTPUT);digitalWrite(DATA, LOW);
pinMode(CLOCK, OUTPUT);digitalWrite(CLOCK, LOW);
delay(100);
}
void loop() {
byte_1(5,0b0000,5,0);// treb -7...7, port 0b0000, bass -5...5, bypass = 0
byte_2(0,0);// 0...95 = 0...-95 dB mute = 112
byte_3(0,0);// 0...95 = 0...-95 dB mute = 112
byte_4(0,0);// 0...95 = 0...-95 dB mute = 112
delay(1000);
}
void byte_1(int treb, byte port, int bass, bool by_pass){
// treb int -7...+7 === -14...+14 dB
// bass int -7...+7 === -14...+14 dB
// byte port 0b0000....0b1111
// by_pass === 0 TONE | 1 BYPASS
switch(treb){
case -7: treb = 0b1111;break;
case -6: treb = 0b1101;break;
case -5: treb = 0b1110;break;
case -4: treb = 0b1100;break;
case -3: treb = 0b1011;break;
case -2: treb = 0b1010;break;
case -1: treb = 0b1001;break;
case 0: treb = 0b0000;break;
case 1: treb = 0b0001;break;
case 2: treb = 0b0010;break;
case 3: treb = 0b0011;break;
case 4: treb = 0b0100;break;
case 5: treb = 0b0110;break;
case 6: treb = 0b1101;break;
case 7: treb = 0b1111;break;
}
switch(bass){
case -7: bass = 0b1111;break;
case -6: bass = 0b1101;break;
case -5: bass = 0b1110;break;
case -4: bass = 0b1100;break;
case -3: bass = 0b1011;break;
case -2: bass = 0b1010;break;
case -1: bass = 0b1001;break;
case 0: bass = 0b0000;break;
case 1: bass = 0b0001;break;
case 2: bass = 0b0010;break;
case 3: bass = 0b0011;break;
case 4: bass = 0b0100;break;
case 5: bass = 0b0110;break;
case 6: bass = 0b1101;break;
case 7: bass = 0b1111;break;
}
unsigned int data_byte = (treb<<12)|(port<<8)|(bass<<4)|(by_pass<<2)|0b00;
writeByte(data_byte);
}
void byte_2(int vol_l, int vol_r){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_l>79){vol_l=vol_l+16;}
if(vol_r>79){vol_r=vol_r+16;}
unsigned int data_byte = (vol_l<<9)|(vol_r<<2)|0b01;
writeByte(data_byte);
}
void byte_3(int vol_c, int vol_sw){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_c>79){vol_c=vol_c+16;}
if(vol_sw>79){vol_sw=vol_sw+16;}
unsigned int data_byte = (vol_c<<9)|(vol_sw<<2)|0b10;
writeByte(data_byte);
}
void byte_4(int vol_sl, int vol_sr){
// int vol 0...95 === 0...-95 dB mute=112
if(vol_sl>79){vol_sl=vol_sl+16;}
if(vol_sr>79){vol_sr=vol_sr+16;}
unsigned int data_byte = (vol_sl<<9)|(vol_sr<<2)|0b11;
writeByte(data_byte);
}
void writeByte(uint16_t data){
digitalWrite(LATCH, HIGH);delayMicroseconds(3);
digitalWrite(LATCH, LOW);delayMicroseconds(3);
for (int i = 15; i >= 0; i--){
digitalWrite(DATA, (data >> i) & 1);delayMicroseconds(3);
digitalWrite(CLOCK, HIGH);delayMicroseconds(3);
digitalWrite(DATA,LOW);digitalWrite(CLOCK, LOW);delayMicroseconds(3);
Serial.print((data >> i) & 1);
} Serial.println();
digitalWrite(LATCH, HIGH);delayMicroseconds(3);
digitalWrite(LATCH, LOW);delayMicroseconds(3);
}
тепер работаеть стабилно
как изменит громкости
Проверьте регулировку громкости по 6 каналам и тембр измените для этого параметры функций:
byte_1(5,0b0000,5,0);// treb -7...7, port 0b0000, bass -5...5, bypass = 0
byte_2(0,0);// 0...95 = 0...-95 dB mute = 112
byte_3(0,0);// 0...95 = 0...-95 dB mute = 112
byte_4(0,0);// 0...95 = 0...-95 dB mute = 112
-40 дБ на все каналы
byte_2(40,40);// 0...95 = 0...-95 dB mute = 112
byte_3(40,40);// 0...95 = 0...-95 dB mute = 112
byte_4(40,40);// 0...95 = 0...-95 dB mute = 112
Нет нечего не меняется после отсоединения gnd из Ардуино звука нету
Чтобы отправить ответ, вы должны войти или зарегистрироваться
forum.rcl-radio.ru → Аудиопроцессоры → M62446
Форум работает на PunBB, при поддержке Informer Technologies, Inc
|