Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

AVT 5382 PRE4562 – przedwzmacniacz liniowy audio

Adam Tatuś
-
-
Posty: 38
Rejestracja: 22 cze 2011, o 07:46

AVT 5382 PRE4562 – przedwzmacniacz liniowy audio

Postautor: Adam Tatuś » 4 lut 2013, o 20:50

W artykule z EP02/13 nie zmieściły się zdjęcie z rozmieszczeniem elementów przedwzmacniacza, może być sugestią przy montażu w posiadanej obudowie:
Pre_rozmieszczenie_elementów.jpg
oraz kod dla Arduino obsługujący pilota i PVC przydatny gdy chcemy dostosować innego pilota, konieczna jest biblioteka IRremote (http://github.com/shirriff/Arduino-IRremote) :
// PRE LM4652 Adam Tatuś
#include <IRremote.h>
#include <EEPROM.h>
#include <LiquidCrystal.h>

void VoL_Level(void);

int VOL_LUT[64]=
  { 
    0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,
   18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,
   52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,
  116,124,132,140,148,156,164,172,180,188,196,204,
  213,223,239,255
};


int RECV_PIN = 11;

int REL_ON = 13;
int REL_9 = 8;
int REL_10 = 9;
int BCKL = 10;

boolean PWR_ON = false;
int VOL_LEVEL;
boolean MUTE = false;
int IN_SEL;

IRrecv irrecv(RECV_PIN);
decode_results results;

LiquidCrystal lcd(A4, A5, A0, A1, A2, A3);
// RS,EN,D4-D7

void setup()
{
  lcd.begin(8, 2);
  lcd.clear();
  DDRD = B11111111;  
  DDRD = DDRC | B11111111;  
  
  pinMode(REL_ON, OUTPUT);
  pinMode(REL_9, OUTPUT);
  pinMode(REL_10, OUTPUT);
  pinMode(BCKL, OUTPUT);
  VOL_LEVEL = EEPROM.read(1);
  IN_SEL = EEPROM.read(2);
  if (IN_SEL >3) IN_SEL=3;
  if (IN_SEL <1) IN_SEL=1;

  irrecv.enableIRIn(); // Start the receiver
}

void VoL_LeveL(){
       lcd.setCursor(0, 1);
       lcd.print("Vol: ");
       if (VOL_LEVEL >9) lcd.setCursor(6, 1); else lcd.setCursor(7, 1);
       lcd.print(VOL_LEVEL, DEC);
}

void loop() {
  if (irrecv.decode(&results)) {
  
   switch (results.value) {
    case 0x80C:{ //ON 0x14C
       digitalWrite(REL_ON, HIGH);
       digitalWrite(BCKL, HIGH);
       lcd.setCursor(0, 0);
       lcd.print("PRE 4562");
       lcd.setCursor(0, 1);
       lcd.print("traxman ");
       delay(1000);
       PWR_ON = true;
       PORTD=VOL_LUT[VOL_LEVEL];
       VoL_LeveL();
       lcd.setCursor(0, 0);
       switch (IN_SEL) {
        case 1: {digitalWrite(REL_9, LOW); digitalWrite(REL_10, LOW); lcd.print("PRE CD"); break;};
        case 2: {digitalWrite(REL_9, HIGH); digitalWrite(REL_10, LOW); lcd.print("PRE PH"); break;};
        case 3: {digitalWrite(REL_9, HIGH); digitalWrite(REL_10, HIGH); lcd.print("PRE AUX"); break;};
       delay(500);
       }   
       
      break; }
    case 0x00C:{ //OFF 0x94C
       digitalWrite(REL_ON, LOW);
       digitalWrite(REL_9, LOW);
       digitalWrite(REL_10, LOW);
       digitalWrite(BCKL, LOW);
       PWR_ON = false;
       PORTD=0;
       lcd.clear();
       break; }
   }  
        
if (PWR_ON) {
  
    results.value= results.value & 0x0FF;
  
  switch (results.value) {
 
    case 0x0D: {
      
       if (MUTE){
         lcd.setCursor(0, 1);
         lcd.print("Vol: --");
         PORTD=0;
       }
       else{
         VoL_LeveL();
         PORTD=VOL_LUT[VOL_LEVEL];;}  
         
         MUTE=!MUTE;       
      break;}
    
    case 0x01: {
       digitalWrite(REL_9, LOW);
       digitalWrite(REL_10, LOW);
       IN_SEL=1;
       EEPROM.write(2, IN_SEL);
       lcd.setCursor(0, 0);
       lcd.print("PRE CD");
       VoL_LeveL();
       PORTD=VOL_LUT[VOL_LEVEL];
       break;}

    case 0x02:{
       digitalWrite(REL_9, HIGH);
       digitalWrite(REL_10, LOW);
       IN_SEL=2;
       EEPROM.write(2, IN_SEL);
       lcd.setCursor(0, 0);
       lcd.print("PRE PH");
       VoL_LeveL();
       PORTD=VOL_LUT[VOL_LEVEL];   
       break;}
   
    case 0x03: {
       digitalWrite(REL_9, HIGH);
       digitalWrite(REL_10, HIGH);
       IN_SEL=3;
       EEPROM.write(2, IN_SEL);
       lcd.setCursor(0, 0);
       lcd.print("PRE AUX");
       VoL_LeveL();
       PORTD=VOL_LUT[VOL_LEVEL];
       break;}

    case 0x10: {
       if (VOL_LEVEL < 63) ++VOL_LEVEL; else VOL_LEVEL = 63;
       EEPROM.write(1, VOL_LEVEL);
       VoL_LeveL();
       PORTD=VOL_LUT[VOL_LEVEL];
       break;}

    case 0x11: {
       if (VOL_LEVEL > 0) --VOL_LEVEL; else VOL_LEVEL = 0;
       EEPROM.write(1, VOL_LEVEL);
       VoL_LeveL();
       PORTD=VOL_LUT[VOL_LEVEL];
       break;}
  }
  }
    delay(250);
    irrecv.resume(); // Receive the next value
  }
}


Awatar użytkownika
Wojtek
-
-
Posty: 868
Rejestracja: 21 lut 2003, o 18:21

Re: AVT 5382 PRE4562 – przedwzmacniacz liniowy audio

Postautor: Wojtek » 5 lut 2013, o 11:06

Z przyjemnoscia czytam twoje i Tomka projekty w EP :)
Ta obudowa jak piszesz jest kupiona na portalu aukcyjnym, a jakis link do takiej obudowy podałbys?

Dodano po namyśle:

O, nie moge ci wysłac pw, czy adres email na tlenie jest aktualny?

Wróć do „Kity AVT”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 3 gości