<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[forum.rcl-radio.ru &mdash; TDA7439 - добавление режима STANDBY]]></title>
		<link>http://forum.rcl-radio.ru/viewtopic.php?id=49</link>
		<atom:link href="http://forum.rcl-radio.ru/extern.php?action=feed&amp;tid=49&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «TDA7439 - добавление режима STANDBY».]]></description>
		<lastBuildDate>Sat, 31 Aug 2019 04:12:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[TDA7439 - добавление режима STANDBY]]></title>
			<link>http://forum.rcl-radio.ru/viewtopic.php?pid=57#p57</link>
			<description><![CDATA[<p>кнопка энкодера D13<br />кнопка IN D11<br />кнопка POWER A1<br />управление STANDBY D12</p><p>Основная статья - <a href="http://rcl-radio.ru/?p=55465">http://rcl-radio.ru/?p=55465</a></p><div class="codebox"><pre><code>#include &lt;Wire.h&gt;
#include &lt;TDA7439.h&gt;
#include &lt;LiquidCrystal.h&gt;
#include &lt;EEPROM.h&gt;
#include &lt;Encoder.h&gt;
#include &lt;MsTimer2.h&gt;
#include &lt;boarddefs.h&gt;
#include &lt;IRremote.h&gt;
  IRrecv irrecv(10); // указываем вывод модуля IR приемника
  TDA7439 tda;
  Encoder myEnc(9, 8);//CLK, DT
  decode_results ir;
  LiquidCrystal lcd(7, 6, 2, 3, 4, 5);// RS,E,D4,D5,D6,D7
   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,treb,treb_d,balans,in,standby=1;
  byte w,w1,in_d,gr1,gr2,www;
  int z,z0,z1,bass,bass_d,mids,mids_d,menu,w2;
  unsigned long time,time1,time3,time4;long oldPosition  = -999,newPosition;
 
 void setup() { Serial.begin(9600); Serial.println(&quot;TDA7439&quot;);
  lcd.begin(16, 2);pinMode(12,OUTPUT);// STANDBY
  irrecv.enableIRIn(); // запускаем модуль IR
  digitalWrite(12,LOW);
  lcd.setCursor(0,0);lcd.print(&quot;    TDA7439    &quot;);delay(1000);
   pinMode(13,INPUT);// меню кнопка энкодера SW
   pinMode(11,INPUT);// in 1-4
   pinMode(A1,INPUT);// POWER
  MsTimer2::set(3, to_Timer);MsTimer2::start();
  lcd.createChar(0,a1);lcd.createChar(1,a2);lcd.createChar(2,a3);
  vol = EEPROM.read(0);// vol eeprom 
  bass = EEPROM.read(1)-7;// bass eeprom
  mids = EEPROM.read(2)-7;// mids eeprom
  treb = EEPROM.read(3)-7;// treb eeprom
  balans = EEPROM.read(4)-4;// balans eeprom
  in = EEPROM.read(5);// in eeprom
 
  delay(500);audio();
 }
 
 void to_Timer(){newPosition = myEnc.read()/4;}
 
 void loop() { delay(10);
   if ( irrecv.decode( &amp;ir )) {Serial.print(&quot;0x&quot;);Serial.println( ir.value,HEX);time1=millis();time=millis();w=1;w1=1;irrecv.resume();}// IR приемник
   if(digitalRead(13)==LOW&amp;&amp;standby==0){menu++;cl();myEnc.write(0);time=millis();w=1;w2=1;if(menu&gt;4){menu=0;}}// меню
   if(digitalRead(11)==HIGH&amp;&amp;standby==0){in++;;cl();myEnc.write(0);time=millis();w=1;w2=1;www=1;menu=5;if(in&gt;3){in=0;};audio();}// in

   if(standby==1){menu=100;lcd.setCursor(0,0);lcd.print(&quot;   POWER OFF    &quot;);}
   if(analogRead(A1)&gt;900&amp;&amp;standby==1){standby=0;lcd.clear();lcd.setCursor(0,0);lcd.print(&quot;   POWER ON     &quot;);digitalWrite(12,HIGH);delay(1000);menu=0;w2=1;}
   if(analogRead(A1)&gt;900&amp;&amp;standby==0){standby=1;lcd.clear();digitalWrite(12,LOW);delay(500);menu=100;}
 
     if(ir.value==0x2FDD02F&amp;&amp;standby==0){menu++;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;if(menu&gt;4){menu=0;}}// меню кнопка вверх
     if(ir.value==0x2FD32CD&amp;&amp;standby==0){menu--;gr1=0;gr2=0;cl();time=millis();w=1;w2=1;if(menu&lt;0){menu=4;}}// меню кнопка вниз
  
  // индикация громкости + управление  //////////////
   if(menu==0){ 
     if(millis()-time3&gt;100){
     if(ir.value==0x2FD906F){vol++;gr1=1;gr2=0;cl1();w2=1;if(vol&lt;0){vol=0;}if(vol&gt;48){vol=48;}audio();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){vol++;gr2=0;cl1();w2=1;if(vol&lt;0){vol=0;}if(vol&gt;48){vol=48;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==0x2FDF20D){vol--;gr1=0;gr2=1;cl1();w2=1;if(vol&lt;0){vol=0;}if(vol&gt;48){vol=48;}audio();}// кнопка &lt;
     if(ir.value==0xFFFFFFFF and gr2==1){vol--;gr1=0;cl1();w2=1;if(vol&lt;0){vol=0;}if(vol&gt;48){vol=48;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
     }
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    vol=vol+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(vol&lt;0){vol=0;}if(vol&gt;48){vol=48;}audio();} 
 lcd.setCursor(0,0);lcd.print(&quot;Volume  &quot;);
  lcd.print(&quot; &quot;);lcd.print(-48+vol);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);vol_d=vol;
   if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=vol_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0,1);lcd.write((uint8_t)2);}w2=0;}}
 
 // индикация тембр НЧ  //////////////
 
  if(menu==1){ 
     if(ir.value==0x2FD906F){bass++;gr1=1;gr2=0;cl1();w2=1;if(bass&gt;7){bass=7;}if(bass&lt;-7){bass=-7;}audio();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){bass++;gr2=0;cl1();w2=1;if(bass&gt;7){bass=7;}if(bass&lt;-7){bass=-7;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==0x2FDF20D){bass--;gr1=0;gr2=1;cl1();w2=1;if(bass&gt;7){bass=7;}if(bass&lt;-7){bass=-7;}audio();}// кнопка &lt; 
     if(ir.value==0xFFFFFFFF and gr2==1){bass--;gr1=0;cl1();w2=1;if(bass&gt;7){bass=7;}if(bass&lt;-7){bass=-7;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    bass=bass+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(bass&gt;7){bass=7;}if(bass&lt;-7){bass=-7;}audio();} 
   lcd.setCursor(0,0);lcd.print(&quot;Bass    &quot;);
   lcd.print(&quot; &quot;);lcd.print(bass*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);bass_d=bass*2+15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=bass_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}
   
 // индикация тембр CЧ  //////////////  
 
   if(menu==2){ 
     if(ir.value==0x2FD906F){mids++;gr1=1;gr2=0;cl1();w2=1;if(mids&gt;7){mids=7;}if(mids&lt;-7){mids=-7;}audio();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){mids++;gr2=0;cl1();w2=1;if(mids&gt;7){mids=7;}if(mids&lt;-7){mids=-7;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==0x2FDF20D){mids--;gr1=0;gr2=1;cl1();w2=1;if(mids&gt;7){mids=7;}if(mids&lt;-7){mids=-7;}audio();}// кнопка &lt; 
     if(ir.value==0xFFFFFFFF and gr2==1){mids--;gr1=0;cl1();w2=1;if(mids&gt;7){mids=7;}if(mids&lt;-7){mids=-7;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    mids=mids+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(mids&gt;7){mids=7;}if(mids&lt;-7){mids=-7;}audio();} 
   lcd.setCursor(0,0);lcd.print(&quot;Middle  &quot;);
   lcd.print(&quot; &quot;);lcd.print(mids*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);mids_d=mids*2+15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=mids_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}
   
  // индикация тембр BЧ  //////////////
  if(menu==3){ 
     if(ir.value==0x2FD906F){treb++;gr1=1;gr2=0;cl1();w2=1;if(treb&gt;7){treb=7;}if(treb&lt;-7){treb=-7;}audio();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){treb++;gr2=0;cl1();w2=1;if(treb&gt;7){treb=7;}if(treb&lt;-7){treb=-7;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==0x2FDF20D){treb--;gr1=0;gr2=1;cl1();w2=1;if(treb&gt;7){treb=7;}if(treb&lt;-7){treb=-7;}audio();}// кнопка &lt; 
     if(ir.value==0xFFFFFFFF and gr2==1){treb--;gr1=0;cl1();w2=1;if(treb&gt;7){treb=7;}if(treb&lt;-7){treb=-7;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
   
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    treb=treb+newPosition;myEnc.write(0);newPosition=0;time=millis();w=1;w2=1;if(treb&gt;7){treb=7;}if(treb&lt;-7){treb=-7;}audio();} 
   lcd.setCursor(0,0);lcd.print(&quot;Treble  &quot;);
   lcd.print(&quot; &quot;);lcd.print(treb*2);lcd.print(&quot; &quot;);lcd.setCursor(13,0);lcd.print(&quot;dB&quot;);treb_d=treb*2+15;
   if(w2==1){
   for(z=0,z0=0,z1=0;z&lt;=treb_d;z++,z1++){if(z1&gt;2){z1=0;z0++;}
   if(z1==1){lcd.setCursor(z0+3,1);lcd.write((uint8_t)0);lcd.setCursor(z0+1+3,1);lcd.print(&quot;   &quot;);}}
   if(z1==3){lcd.setCursor(z0+3,1);lcd.write((uint8_t)1);}
   if(z1==2){lcd.setCursor(z0+3,1);lcd.write((uint8_t)2);}w2=0;}}
 
 ///////////////////////////////////////////////////////////
 
  // индикация баланс + управление кнопками +\- 4 дБ ///////
   if(menu==4){
     if(ir.value==0x2FD906F){balans++;gr1=1;gr2=0;cl();if(balans&gt;4){balans=4;}if(balans&lt;-4){balans=-4;}audio();}// кнопка &gt; 
     if(ir.value==0xFFFFFFFF and gr1==1){balans++;gr2=0;cl();if(balans&gt;4){balans=4;}if(balans&lt;-4){balans=-4;}audio();}// кнопка &gt;&gt;&gt;&gt;&gt;&gt;
     if(ir.value==0x2FDF20D){balans--;gr1=0;gr2=1;cl();if(balans&gt;4){balans=4;}if(balans&lt;-4){balans=-4;}audio();}// кнопка &lt; 
     if(ir.value==0xFFFFFFFF and gr2==1){balans--;gr1=0;cl();if(balans&gt;4){balans=4;}if(balans&lt;-4){balans=-4;}audio();}// кнопка &lt;&lt;&lt;&lt;&lt;&lt;
 
    if (newPosition != oldPosition) {
    oldPosition = newPosition;
    balans=balans+newPosition;myEnc.write(0);newPosition=0;lcd.clear();time=millis();w=1;if(balans&gt;4){balans=4;}if(balans&lt;-4){balans=-4;}audio();}
  lcd.setCursor(0,0);
   if(balans&gt;=0){lcd.print(&quot;-&quot;);}else{lcd.print(&quot;+&quot;);}
  lcd.print(abs(balans));lcd.print(&quot; dB &quot;);
  lcd.print(&quot; &lt;&gt;  &quot;);
   if(balans&gt;=0){lcd.print(&quot;+&quot;);}else{lcd.print(&quot;-&quot;);}
  lcd.print(abs(balans));lcd.print(&quot; dB &quot;);
  lcd.setCursor(0,1);lcd.print(&quot;L&quot;);
  lcd.setCursor(15,1);lcd.print(&quot;R&quot;);
   if(balans&lt;0){lcd.setCursor(balans+7,1);lcd.write((uint8_t)0);}
   if(balans&gt;0){lcd.setCursor(balans+8,1);lcd.write((uint8_t)0);}
   if(balans==0){lcd.setCursor(7,1);lcd.write((uint8_t)0);lcd.setCursor(8,1);lcd.write((uint8_t)0);}
 }
 
   if(menu==5){
     if(www==1){audio();www=0;}
   lcd.setCursor(0,0);
   switch(in){
     case 0: lcd.print(&quot;      USB      &quot;);break;
     case 1: lcd.print(&quot;      AUX      &quot;);break;
     case 2: lcd.print(&quot;     RADIO     &quot;);break;
     case 3: lcd.print(&quot;   BLUETOOTH   &quot;);break;
  }}
 /////////////////////////////////////////////////////////////
 


   if(millis()-time&gt;5000 &amp;&amp; w==1){// запись всех настроек в EEPROM через 60 сек неактивности
     EEPROM.update(0,vol);
     EEPROM.update(4,balans+4);
     EEPROM.update(1,bass+7);
     EEPROM.update(2,mids+7);
     EEPROM.update(3,treb+7);
     EEPROM.update(5,in);
     lcd.clear();w=0,w2=1;menu=0;
 }
 }//void
 
 void cl(){ir.value=0;delay(300);lcd.clear();}
 void cl1(){ir.value=0;delay(50);}
 void audio(){
  tda.setInput(in+1); // 1 to 4 // номер канала
  tda.inputGain(0); // 0 to 15 // усиление 
  tda.setVolume(vol); // 0 to 48 ( 0 is mute) // громкость
  tda.setSnd(bass, 1); //-7 to +7 , 1 - Bass | 2 - Mids | 3 - Trebble
  tda.setSnd(mids, 2);
  tda.setSnd(treb, 3); 
  tda.spkAtt(4-balans, 4+balans); // баланс R L от 0 to 79 (db) 
 }</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (liman324)]]></author>
			<pubDate>Sat, 31 Aug 2019 04:12:20 +0000</pubDate>
			<guid>http://forum.rcl-radio.ru/viewtopic.php?pid=57#p57</guid>
		</item>
	</channel>
</rss>
