1

Тема: BD34701KS2

BD34701KS2  - Данный контент доступен только зарегистрированным пользователям.

BD34701KS2.h

// liman324@yandex.ru rcl-radio.ru


#ifndef BD34701KS2_H
#define BD34701KS2_H

#define ADDR_0 0
#define ADDR_1 1
#define ADDR_2 2
#define ADDR_3 3
#define ADDR_7 11


#include <Arduino.h>
class BD34701KS2
{
  public:
    BD34701KS2(uint8_t cl, uint8_t da);
    void set0(int chip, int sub, int rec, int input_main); 
    // Input Selector (MAIN)
    // chip >> 0 (0...1)
    // sub >> 0 (0...1)
    // rec >> 0 (0...1)
    // input >> 1 (1...12 = in1...in12 , 0 = MUTE)
    void set1(int chip, int input);
    // IInput Selector (SUB)
    // chip >> 0 (0...1)
    // input >> 1 (1...12 = in1...in12 , 0 = MUTE)
    void set2(int chip, int adc_att, int mode_sbl_sbrch, int mode_sl_srch, int mode_c_swch, int mode_fr_frch);
    // chip >> 0 (0...1)
    // adc_att >> 0 (0...8)
    // mode_sbl_sbrch >> 1 (0...3)
    // mmode_sl_srch >> 1 (0...3)
    // mode_c_swch >> 1 (0...3)
    // mode_fr_frch >> 1 (0...3)
    void set3(int chip, int volume, int ch_vol_sel);
    // chip >> 0 (0...1)
    // volume >> 0 (-190...64)
    // ch_vol_sel >> 0,1,2,3,4,5,6,7
    void set7(int chip, int reset, int base_clock, int sw_ba, int sw_ab);
    // chip >> 0 (0...1)
    // reset >> 0 (0...1)
    // base_clock >> 0 (0...1)
    // sw_ba >> 0 (0...7)
    // sw_ab >> 0 (0...7)

	
  private:
	void writeBD(char data);
        uint8_t CL;
        uint8_t DA;
};
	
#endif //BD34701KS2_H

BD34701KS2.cpp

#include <Arduino.h>
#include "BD34701KS2.h"

BD34701KS2::BD34701KS2(uint8_t cl, uint8_t da){
	CL = cl;
        DA = da;
      pinMode(CL,OUTPUT);
      pinMode(DA,OUTPUT);
}


void BD34701KS2::set0(int chip, int sub, int rec, int input_main){
  writeBD(ADDR_0 + (2 << chip) + (6 << sub) + (9 << rec) + (10 << input_main) );
}

void BD34701KS2::set1(int chip, int input){
  writeBD(ADDR_1 + (2 << chip) + (10 << input) );
}

void BD34701KS2::set2(int chip, int adc_att, int mode_sbl_sbrch, int mode_sl_srch, int mode_c_swch, int mode_fr_frch){
  writeBD(ADDR_2 + (2 << chip) + (4 << adc_att) + (8 << mode_sbl_sbrch) + (10 << mode_sl_srch) + (12 << mode_c_swch) + (14 << mode_fr_frch) );
}

void BD34701KS2::set3(int chip, int volume, int ch_vol_sel){
    int vol_d;
    if(volume > 0) {vol_d = 0;}
    if(volume <= 0) {volume = abs(volume);vol_d = 1;}
  writeBD(ADDR_3 + (2 << chip) + (4 << volume) + (13 << ch_vol_sel) + (12 << vol_d) );
}

void BD34701KS2::set7(int chip, int reset, int base_clock, int sw_ba, int sw_ab){
   writeBD(ADDR_7 + (2 << chip) + (6 << reset) + (9 << base_clock) + (10 << sw_ba) + (13 << sw_ab) );
}


void BD34701KS2::writeBD(char data){
   
   for(int i = 15; i >= 0; i--){
        digitalWrite(CL,LOW);
        digitalWrite(DA, (data >> i) & 0x01);
        digitalWrite(CL,HIGH);
        }  
   digitalWrite(CL,LOW);
   digitalWrite(DA,LOW);
   delay(100);
}

test.ino

#include <BD34701KS2.h>

  BD34701KS2 bd(2,3); // CL, DA

void setup() {
  audio();

}

void loop() {
  // put your main code here, to run repeatedly:

}

void audio(){
   bd.set0(0, 0, 0, 1); 
    // Input Selector (MAIN)
    // chip >> 0 (0...1)
    // sub >> 0 (0...1)
    // rec >> 0 (0...1)
    // input >> 1 (1...12 = in1...in12 , 0 = MUTE)
     bd.set1(0, 1);
    // IInput Selector (SUB)
    // chip >> 0 (0...1)
    // input >> 1 (1...12 = in1...in12 , 0 = MUTE)
     bd.set2(0,0,1,1,1,1);
    // chip >> 0 (0...1)
    // adc_att >> 0 (0...8)
    // mode_sbl_sbrch >> 1 (0...3)
    // mmode_sl_srch >> 1 (0...3)
    // mode_c_swch >> 1 (0...3)
    // mode_fr_frch >> 1 (0...3)
     bd.set3(0, 0, 0);
     bd.set3(0, 0, 1);
     bd.set3(0, 0, 2);
     bd.set3(0, 0, 3);
     bd.set3(0, 0, 4);
     bd.set3(0, 0, 5);
     bd.set3(0, 0, 6);
     bd.set3(0, 0, 7);
    // chip >> 0 (0...1)
    // volume >> 0 (-190...64)
    // ch_vol_sel >> 0,1,2,3,4,5,6,7
     bd.set7(0, 0, 0, 0, 0);
    // chip >> 0 (0...1)
    // reset >> 0 (0...1)
    // base_clock >> 0 (0...1)
    // sw_ba >> 0 (0...7)
    // sw_ab >> 0 (0...7)

  }

Скетч использует 1184 байт (3%) памяти устройства. Всего доступно 32256 байт.
Глобальные переменные используют 11 байт (0%) динамической памяти, оставляя 2037 байт для локальных переменных. Максимум: 2048 байт.