Тема: CS3310 - Stereo Digital Volume Control
Features
Complete Digital Volume Control
2 Independent Channels
— Serial Control
— 0.5 dB Step Size
Wide Adjustable Range
— -95.5 dB Attenuation
— +31.5 dB Gain
Low Distortion & Noise
— 0.001% THD+N
— 116 dB Dynamic Range
Noise Free Level Transitions
Channel-to-Channel Crosstalk Better Than 110 dB
Данный контент доступен только зарегистрированным пользователям.
Данный контент доступен только зарегистрированным пользователям.
test.ino
#include <CS3310.h>
CS3310 cs(2,3,4);//CS,SCLK,SDATAI
void setup(){
delay(100);
audio();
}
void loop(){}
void audio(){
cs.setVol(200,200);
// byte 0 === mute
// byte 1...255 === -95.5...+31.5 dB (step 0.5 dB)
}
CS3310.h
// Alexander Liman
// liman324@yandex.ru
// rcl-radio.ru
#ifndef CS3310_H
#define CS3310_H
#include <Arduino.h>
class CS3310
{
public:
CS3310(uint8_t, uint8_t, uint8_t);
void setVol(byte r, byte l);
private:
uint8_t CS;
uint8_t SCLK;
uint8_t SDATAI;
};
#endif
CS3310.cpp
#include <CS3310.h>
CS3310::CS3310(uint8_t cs, uint8_t sclk, uint8_t sdatai){
CS = cs;
SCLK = sclk;
SDATAI = sdatai;
pinMode(CS,OUTPUT);
pinMode(SCLK,OUTPUT);
pinMode(SDATAI,OUTPUT);
}
void CS3310::setVol(byte r, byte l){
// start
digitalWrite(CS,HIGH);
digitalWrite(SCLK,HIGH);
delay(2);
digitalWrite(CS,LOW);
// R
for(int i = 7; i >= 0; i--){
digitalWrite(SCLK,LOW);//delay(1);
digitalWrite(SDATAI, (r >> i) & 0x01);delay(1);
digitalWrite(SCLK,HIGH);delay(1);
}
// L
for(int i = 7; i >= 0; i--){
digitalWrite(SCLK,LOW);//delay(1);
digitalWrite(SDATAI, (l >> i) & 0x01);delay(1);
digitalWrite(SCLK,HIGH);delay(1);
}
// end
digitalWrite(CS,HIGH);
}