| Ваш IP: 18.204.227.117 | Online(25) - гости: 17, боты: 8 | Загрузка сервера: 0.81 ::::::::::::

Электронный регулятор громкости CS3310 (Arduino)

CS3310 — электронный, стерео регулятор громкости с микроконтроллерным управлением.

Основные характеристики регулятора громкости на CS3310:

  • два независимых канала
  • шаг регулировки 0,5 дБ
  • диапазон регулировки от -95,5 дБ до +31,5 дБ (127 дБ)
  • КНИ не более 0.001%
  • динамический диапазон 116 дБ
  • перекрестные помехи между каналами не более -110 дБ
  • напряжение питания ±5 В
  • MUTE

На базе Arduino можно организовать управление CS3310. Вся информация будет выводится на дисплей LCD1602 + I2C (I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.) Управление громкостью осуществляется при помощи энкодера KY-040. При нажатии на кнопку энкодера активируется режим MUTE.

#include <Wire.h> 
#include <EEPROM.h>
#include <Encoder.h>  // https://rcl-radio.ru/wp-content/uploads/2019/05/Encoder.zip
#include <MsTimer2.h> // https://rcl-radio.ru/wp-content/uploads/2018/11/MsTimer2.zip
#include <CS3310.h>  // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=582&download=1
#include <LiquidCrystal_I2C.h> //Библиотека -  http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей 
  Encoder myEnc(9, 8);//CLK, DT
  CS3310 cs(2,3,4);//CS,SCLK,SDATAI
 
  byte a1[8] = {0b00000,0b10101,0b10101,0b10101,0b10101,0b10101,0b10101,0b00000};
  byte a2[8] = {0b00000,0b10100,0b10100,0b10100,0b10100,0b10100,0b10100,0b00000};
  byte a3[8] = {0b00000,0b10000,0b10000,0b10000,0b10000,0b10000,0b10000,0b00000};  
  int vol,vol_d,z,z0,z1,vol_old;
  byte w,w1,mute;
  unsigned long times,oldPosition  = -999,newPosition;
 
void setup(){ 
  Wire.begin();Serial.begin(9600);
  lcd.init();lcd.backlight();
  MsTimer2::set(1, to_Timer);MsTimer2::start();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  lcd.setCursor(0,0);lcd.print("     CS3310   ");delay(3000);lcd.clear();// ЗАСТАВКА
  vol = EEPROM.read(0);
  pinMode(7,INPUT);
  audio();
  }
 
void loop(){
   if (newPosition != oldPosition&&mute==0){oldPosition = newPosition;
   vol=vol+newPosition;myEnc.write(0);newPosition=0;times=millis();w=1;w1=1;vol_func();audio();Serial.print(vol*0.5-96,1);Serial.print(" ");Serial.println(vol);} 
   vol_d=map(vol,0,255,0,45);
   if(w1==1){
   for(z=0,z0=0,z1=0;z<=vol_d;z++,z1++){if(z1>2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print("   ");}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w1=0;}
 
   if(digitalRead(7)==LOW&&mute==0){mute=1;vol_old=vol;vol=0;audio();lcd.clear();lcd.setCursor(0,0);lcd.print("      MUTE   ");delay(300);}
   if(digitalRead(7)==LOW&&mute==1){mute=0;vol=vol_old;      audio();lcd.clear();w1=1;delay(300);}
 
   if(mute==0){  
     lcd.setCursor(0,0);lcd.print("VOLUME ");
     if(vol*0.5-96>=0){lcd.print("+");}
     lcd.print(vol*0.5-96,1);lcd.print(" ");
     lcd.setCursor(14,0);lcd.print("dB");}
//     delay(10);
 
 //////// EEPROM //////////////////////////////////////////////////
  if(millis()-times>3000 && w==1){EEPROM.update(0,vol);w=0;}
  } // LOOP
 
void audio(){
  cs.setVol(vol,vol);
  // byte 0  === mute
  // byte 1...255 === -95.5...+31.5 dB (step 0.5 dB)
  }
void to_Timer(){newPosition = myEnc.read()/4;}
void vol_func(){if(vol<0){vol=0;}if(vol>255){vol=255;}
  }

Форум — http://forum.rcl-radio.ru/viewtopic.php?id=162

CS3310 — http://ali.pub/4qrcvd

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Как работает микрофон

    Как работает микрофон

    В этом выпуске: что такое микрофон, принцип действия микрофона, как работает микрофон.Подробнее...
  • Низковольтный двухканальный усилитель мощности звуковой частоты КР174УН31

    Низковольтный двухканальный усилитель мощности звуковой частоты КР174УН31

    Микросхема КР174УН31 предназначена для применения в качестве оконечного каскада усиления звукового сигнала, подаваемого с микросхемы непосредственно на громкоговорители (сопротивление более 8 Ом), в малогабаритной аппаратуре (радиоприемниках, плейерах, беспроводных телефонах). Параметры микросхемы представлены в табл.1. Микросхема выпускается в 8-выводном корпусе DIP (типа 2101.8-1). Чертеж дан на рис.1. Типовые схемы включения — …Подробнее...
  • Простой преобразователь однополярного напряжения в 2-х полярное

    В маломощных уст-вах для питания например ОУ необходимо двух полярное напряжение питания, но имеется только один источник напряжения, например батарея КРОНА, что бы решить эту проблему можно применить простой преобразователь показанный на рисунке. В схеме использован таймер NE555 который работает как генератор импульсов с частотой 100Гц, на выходе генератора стоят …Подробнее...
  • Входной делитель для частотомера

    Входной делитель для частотомера

    Данная приставка позволяет расширить диапазон частотомера до 100-300МГц при верхнем пределе частотомера в 10-30МГц, то есть приставка представляет собой ВЧ делитель частоты на 10. Входное сопротивление приставки 75 Ом, чувствительность по входу 0,5В. VD1 VD2 совместно с R1 представляют собой ограничитель входного напряжения. Далее следует ВЧ дифференциальный усилитель на D1.1, …Подробнее...
  • Термостабилизатор для аквариума

    Несмотря на простоту предложенная схема обеспечивает высокую точность поддержания температуры и экономичность, при выключенном нагревателе уст-во потребляет не более чем 1,5Вт. Датчиком температуры является терморезистор RK1 с отрицательным ТКС. При снижении температуры воды на выводе 6 DA1 появиться напряжение низкого уровня относительно минуса питания (катод VS1). В цепи базы VT1 …Подробнее...