PCCar.ru - Ваш автомобильный компьютер

Вернуться   PCCar.ru - Ваш автомобильный компьютер > Всё Остальное > Arduino проекты

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2019, 13:51   #1
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию Переназначить кнопки на подрулевом переключателе.

Добрый день господа.

В связи с тем, что после встраивания в панель планшета и переноса магнитолы вниз пульт ДУ от нее видит магнитолу только когда руль вывернут вправо и пульт находится максимально внизу. В общем в 80% времени он не может отдавать команды на магнитолу. Появилось желание как нибудь установить подрулевой переключатель от какой нибудь машины. Поиск в инете навел на несколько переключателей, но понравился один ситроен/ пежо. Нашел на просторах авито такой и заказал.



На драйве много записей где за пять минут с перекуром подобрав резисторы разных номиналов заставляют работать этот переключатель с магнитолами сони и пионер, но вот с jvc и кенвуд такое не прокатывает так как у них импульсный режим чтения в отличии от резистивного на сони и пионер.Так как у меня стоит классика JVC Chameleon KD-LX555R я попал в список счастливчиков

Поиск на просторах интернета вывел на форум где люди пытаются подключить свою магнитолу jvc к разного рода пультам.

https://www.avforums.com/threads/jvc...er-diy.248455/

Потом я нашел на ютубе ролик где человек с помощью ардуино заставляет работать именно такой джой как у меня и магнитолу jvc. На странице с видео он оставил ссылки на схему и прошивку. Все это я закинул на Ядиск



Так вот в ардуине я не шарю от слова совсем и хотелось бы попросить местных умельцев переназначить в прошивке кнопку которая на торце (по умолчанию в прошивке пауза / смена источника данных) на ATT — приглушение звука / выключение, включение магнитолы при зажатии клавиши. Ну и если получиться при зажатии клавиш след. трек/пред. трек чтоб выполнялась перемотка песни.
Звук с планшета идет через aux мафона и так же мафон используется как резервный источник звука (если что-то случится с карПС).

В общем буду признателен если кто-то поможет решить данную проблему.

Последний раз редактировалось belui; 25.02.2019 в 17:58.
belui вне форума   Ответить с цитированием
Старый 25.02.2019, 18:50   #2
жека 3
Гуру
 
Регистрация: 05.12.2010
Город: москва
Регион: 77, 97, 99, 177
Машина: логан санта фе
Сообщений: 1,160
жека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really nice
По умолчанию

https://yandex.ru/turbo?text=https%3...l%2F2423471%2F может приходится
жека 3 вне форума   Ответить с цитированием
Старый 25.02.2019, 19:02   #3
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от жека 3 Посмотреть сообщение
Цитата:
Сразу отвечу на вопрос "зачем городить огород, когда можно собрать схему на нескольких резисторах": Дело в том, что кнопки джойстика сделаны настолько убого, что имеют плавающее сопротивление, и это может доставлять проблемы с нечетким включением, включением одной функции заместо другой.
Это для магнитол сони/пионер. За пять минут можно собрать.

belui вне форума   Ответить с цитированием
Старый 25.02.2019, 19:12   #4
жека 3
Гуру
 
Регистрация: 05.12.2010
Город: москва
Регион: 77, 97, 99, 177
Машина: логан санта фе
Сообщений: 1,160
жека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really nice
По умолчанию

Это не для Сони и Пионер это для вашей я стокнулся с такой проблемой у меня джойстик от Рено, но принцип тот же как и у пыжика почитайте внимательно
жека 3 вне форума   Ответить с цитированием
Старый 25.02.2019, 19:20   #5
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию

Вот эта тема с комментариями. У него на плате распаяны резисторы как на схеме, что я выше выкладывал.

https://www.drive2.ru/l/2423471/



В комментах есть, что для jvc не подходит, это резистивный вариант.
belui вне форума   Ответить с цитированием
Старый 26.02.2019, 20:31   #6
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию

На этом форуме, стр.3 есть видео где человек реализовал перемотку зажатием перемотки. Его код.



Там же есть человек который выложил содержимое скетча в котором присутствуют строки интересующие меня (я так думаю). Пропишите их куда нужно

Его код:

Код:
int PINO = 8;            // Digital IO pin connected to base of transistor
int Length = 537;        // Length in Microseconds
int DebugOn = 0;

#define POWERNOFF 0x00
#define VOLUP 0x04
#define VOLDOWN 0x05
#define MUTE 0x06
#define SOURCE 0x08
#define EQUALIZER 0x0d///0x0C
#define MUTE2 0x0e//0x0D// - Mute/Unmute (and Power OFF with "press and hold" - see below)
#define SEARCHFORW 0x12// - Seach + / Track + (and Manual Tune + / Fast fwd with "press and hold")
#define SEARCHBACK 0x13// - Seach - / Track - (and Manual Tune - / Fast rwd with "press and hold")
#define BANDFORW 0x14// - Band cycle / Folder + //programs
#define BANDBACK 0x15// - Band cycle / Folder + //programs
#define PROGR 0x15// - Program 1-6 cycle / Folder -//programs
//#define UNKNOWN 0x16// - Sel cycle (it cycles between Fader/Balance/Loudness/Subwoofer out level/Volume gain for the current source)

#define GREENPIN 5
#define BLUEPIN 3
#define YELLOWPIN 6
#define BROWNPIN 7
#define REDPIN 4
#define BLACKPIN 2

#define OUT_PINS 3
unsigned char out_pins[OUT_PINS]={
  GREENPIN,BLUEPIN,YELLOWPIN};

void setup() {
  pinMode(PINO, OUTPUT);
  digitalWrite(PINO, LOW); // Make PIN low to shut off transistor
  Serial.begin(115200);
  Serial.println("Enter 1 to Go");
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
  pinMode(YELLOWPIN, OUTPUT);
  pinMode(BROWNPIN, INPUT_PULLUP);
  pinMode(REDPIN, INPUT_PULLUP);
  pinMode(BLACKPIN, INPUT_PULLUP);
}

unsigned char GetJoystic(void){
  static unsigned char stage = 0;
  static unsigned char scroll_stored;
  unsigned char tmp,i;
  if (++stage > (OUT_PINS-1)) stage=0;

  for (i=0;i<(OUT_PINS);i++)
    if (i==stage){
      digitalWrite(out_pins[i], LOW);
    }
  else{
    digitalWrite(out_pins[i], HIGH);
  }

  delay(10);

  tmp = digitalRead(BROWNPIN);
  if (!tmp){
    if (stage != scroll_stored){
      char scrl = stage-scroll_stored;
      scroll_stored = stage;
      if ((scrl == 1) ||(scrl==-2)) {
        Serial.println("Scroll-");
        return SEARCHFORW;
      }else{
        Serial.println("Scroll+");
        return SEARCHBACK;
      }
    }
  }
  tmp = digitalRead(REDPIN);
  if (!tmp){
    switch(stage){
    case 0:
      Serial.println("Select");
      return SOURCE;
    case 1:
      Serial.println("Vol+");
      return VOLUP;
    case 2:
      Serial.println("Vol-");
      return VOLDOWN;
    }
  }
  tmp = digitalRead(BLACKPIN);
  if (!tmp){
    switch(stage){
    case 0:
      Serial.println("Source-");
      return BANDFORW;
    case 1:
      Serial.println("Mute");
      return MUTE2;
    case 2:
      Serial.println("Source+");
      return BANDBACK;
    }
  }
  return 0;
}

void loop() {
  unsigned char Key = GetJoystic();
  static unsigned char code = 0;
  if (Key){
    Serial.print("Key    Serial.println(Key,HEX);
    JVCSendCommand(Key);
    delay(2);
    JVCSendCommand(Key);
    delay(20);
  }

  if (Serial.available() > 0) {
    char inp=Serial.read();
    Serial.print("Received
    Serial.println(inp, DEC);
    switch (inp){
      case '1':
      code--;
      break;
      case '2':
      code++;
      break;
      case '3':
      JVCSendCommand(code);
      break;
    }
  
  
  }
}  // end of loop


void JVCSendCode(unsigned char code){
  unsigned char i,tmp=1;
  for (i=0;i<sizeof(code)*8-1;i++){//7bits
    if (code & tmp)
      bONE();
    else
      bZERO();
    tmp = tmp << 1;
  }
}

void JVCSendCommand(unsigned char code){
  Preamble();
  JVCSendCode((unsigned char)code);
  Postamble();
}

//    Wire signals to be generated for a '1' bit
void bONE() {                     // Send a binary ONE over the line
  if (DebugOn == 1) {
    Serial.print(" 1 ");
  }
  digitalWrite(PINO, HIGH);        // Pull 3.5mm TIP low
  delayMicroseconds(Length);      // for 537us
  digitalWrite(PINO, LOW);         // Allow 3.5mm TIP to go high
  delayMicroseconds(Length * 3);  // for 537 * 3 = 1611us
}

//    Wire signals to be generated for a '0' bit
void bZERO() {   // Send a binary ZERO over the line
  if (DebugOn == 1) {
    Serial.print(" 0 ");
  }
  digitalWrite(PINO, HIGH);        // Pull 3.5mm TIP low
  delayMicroseconds(Length);      // for 537us
  digitalWrite(PINO, LOW);         // Allow 3.5mm TIP to go high
  delayMicroseconds(Length);      // for 537us
}

//    Wire signals to be generated for a start of signal to a JVC
void Preamble() {
  if (DebugOn == 1) {
    Serial.println(" ");
    Serial.print(" AGC ");
  }
  digitalWrite(PINO, LOW);         // Not sure what this does
  delayMicroseconds(Length * 1);

  digitalWrite(PINO, HIGH);        // AGC
  delayMicroseconds(Length * 16);

  digitalWrite(PINO, LOW);         // AGC
  delayMicroseconds(Length * 8);

  bONE();    // 1 Start Bit
  JVCSendCode(0x47);
}

//    Wire signals to be generated for a end of signal  
void Postamble() {
  if (DebugOn == 1) {
    Serial.print(" STOP ");
  }
  bONE();
  bONE();    // 2 stop bits
}
P.S. This JVC has not 3.5mm jack inpu


А это содержимое скетча который я выкладывал в первом сообщении:

Код:
#include "Arduino.h"
#include "SoftwareSerial.h"


// Define commands
#define POWERNOFF   0x0A
#define VOLUP       0x04
#define VOLDOWN     0x05
#define SOURCE      0x08
#define EQUALIZER   0x0D
#define MUTE        0x0E
#define NEXTTRACK   0x12
#define PREVTRACK   0x13
#define FOLDERFORW  0x14
#define FOLDERBACK  0x15

//Define outputs
#define VOLUP_PIN    2 // D2
#define VOLDOWN_PIN     3 // D3
#define NEXTTRACK_PIN      5 // D4
#define PREVTRACK_PIN    4 // D5
#define SOURCE_PIN   6 // D6
#define SCROLLUP_PIN    9 // B1
#define SCROLLDOWN_PIN    10 // B2

// Connect optocoupler input through a 1k resistor to this pin
#define OUTPUTPIN   8 // D8

// On-board LED, useful for debugging
#define LEDPIN     13 // D13

// Pulse width in µs
#define PULSEWIDTH 555

// Address that the radio responds to
#define ADDRESS 0x47//47

unsigned long currentTime, holdbutton;
unsigned long loopTime;
int PrevState = 0;

void setup() 
{
  
    currentTime = millis();    
    loopTime = currentTime; 
    pinMode(OUTPUTPIN, OUTPUT);    // Set the proper pin as output
    digitalWrite(OUTPUTPIN, LOW);  // Output LOW to make sure optocoupler is off
  
    // Set the pins connected to the steering wheel remote as input / output
    pinMode(VOLUP_PIN, INPUT_PULLUP);
    pinMode(VOLDOWN_PIN, INPUT_PULLUP);
    pinMode(NEXTTRACK_PIN, INPUT_PULLUP);
    pinMode(PREVTRACK_PIN, INPUT_PULLUP);
    pinMode(SOURCE_PIN, INPUT_PULLUP);
    pinMode(SCROLLUP_PIN, INPUT_PULLUP);
    pinMode(SCROLLDOWN_PIN, INPUT_PULLUP);
      
    pinMode(LEDPIN, OUTPUT);                  // Set pin connected to on-board LED as output...
    digitalWrite(LEDPIN, LOW);     

    digitalWrite(LEDPIN, HIGH); 
    delay(1000);
    digitalWrite(LEDPIN, LOW); 
    // ...and turn LED off
}

unsigned char GetInput(void) 
{

  currentTime = millis();
  
    if(currentTime >= (loopTime + 10))
    {
      
          //VOLUP
          if(PrevState == VOLUP_PIN && digitalRead(VOLUP_PIN))
          {
            PrevState = 0;
            return VOLUP;   
          }
          else if (PrevState == VOLUP_PIN && currentTime >= (holdbutton + 500))
          {
              holdbutton = currentTime;
              return VOLUP;
          }
          else if(PrevState == 0 && !digitalRead(VOLUP_PIN))
          {
            holdbutton = currentTime;
            PrevState = VOLUP_PIN; 
          }
    
          //VOLDOWN
          if(PrevState == VOLDOWN_PIN && digitalRead(VOLDOWN_PIN))
          {
            PrevState = 0;
            return VOLDOWN;
          }
          else if (PrevState == VOLDOWN_PIN && currentTime >= (holdbutton + 500))
          {
              holdbutton = currentTime;
              return VOLDOWN;
          }
          else if(PrevState == 0 && !digitalRead(VOLDOWN_PIN))
          {
            holdbutton = currentTime;
            PrevState = VOLDOWN_PIN; 
          }    
    
          //NEXTTRACK
          if(PrevState == NEXTTRACK_PIN && digitalRead(NEXTTRACK_PIN))
          {
            PrevState = 0;
            return NEXTTRACK;
            }
          else if(PrevState == 0 && !digitalRead(NEXTTRACK_PIN))
          {
            PrevState = NEXTTRACK_PIN; 
          }  
    
          //PREVTRACK
          if(PrevState == PREVTRACK_PIN && digitalRead(PREVTRACK_PIN))
          {
            PrevState = 0;
            return PREVTRACK;
            }
          else if(PrevState == 0 && !digitalRead(PREVTRACK_PIN))
          {
            PrevState = PREVTRACK_PIN; 
          }  


          //SOURCE - PAUSE(LONG PUSH 1sec)
          if((PrevState == SOURCE_PIN && digitalRead(SOURCE_PIN)) || (PrevState == POWERNOFF && digitalRead(SOURCE_PIN)))
          {
            if(PrevState == SOURCE_PIN)
            {
               PrevState = 0;
              return SOURCE;
            }
            else if (PrevState == POWERNOFF)
            {
              PrevState = 0;
              return 0;
            }
          }
          else if(PrevState == 0 && !digitalRead(SOURCE_PIN))
          {
            holdbutton = currentTime;
            PrevState = SOURCE_PIN; 
          }  
          //PAUSE(LONG PUSH 1sec)
          if(PrevState == SOURCE_PIN && currentTime >= (holdbutton + 1000))
          {
              PrevState = POWERNOFF;
              return MUTE;
          }

            
          //SCROLLUP_PIN
          if(PrevState == SCROLLUP_PIN && digitalRead(SCROLLUP_PIN))
          {
             PrevState = 0;
             if(digitalRead(SCROLLDOWN_PIN))
             {
                return FOLDERFORW;
             }
             else
            {
                return FOLDERBACK;              
            }
             
          }
          else if(PrevState == 0 && !digitalRead(SCROLLUP_PIN))
          {
                PrevState = SCROLLUP_PIN; 
          }  
          loopTime = currentTime;  // Updates loopTime
      }
      return 0;
}

void loop() 
{
 unsigned char Key = GetInput(); 
  if (Key) 
  { 
     SendCommand(Key);
      delay(2);
      SendCommand(Key);
      delay(20);   
  }
}

// Send a value (7 bits, LSB is sent first, value can be an address or command)
void SendValue(unsigned char value) {
  unsigned char i, tmp = 1;
  for (i = 0; i < sizeof(value) * 8 - 1; i++) {
    if (value & tmp)  // Do a bitwise AND on the value and tmp
      SendOne();
    else
      SendZero();
    tmp = tmp << 1; // Bitshift left by 1
  }
}

// Send a command to the radio, including the header, start bit, address and stop bits
void SendCommand(unsigned char value) {
  unsigned char i;
  Preamble();       
  for (i = 0; i < 1; i++) {           // Repeat address, command and stop bits three times so radio will pick them up properly
    SendValue(ADDRESS);               // Send the address
    SendValue((unsigned char)value);  // Send the command
    Postamble();                      // Send signals to follow a command to the radio
  }
}

// Signals to transmit a '0' bit
void SendZero() {
  digitalWrite(OUTPUTPIN, HIGH);      // Output HIGH for 1 pulse width
  digitalWrite(LEDPIN, HIGH);         // Turn on on-board LED
  delayMicroseconds(PULSEWIDTH);
  digitalWrite(OUTPUTPIN, LOW);       // Output LOW for 1 pulse width
  digitalWrite(LEDPIN, LOW);          // Turn off on-board LED
  delayMicroseconds(PULSEWIDTH);
}

// Signals to transmit a '1' bit
void SendOne() {
  digitalWrite(OUTPUTPIN, HIGH);      // Output HIGH for 1 pulse width
  digitalWrite(LEDPIN, HIGH);         // Turn on on-board LED
  delayMicroseconds(PULSEWIDTH);
  digitalWrite(OUTPUTPIN, LOW);       // Output LOW for 3 pulse widths
  digitalWrite(LEDPIN, LOW);          // Turn off on-board LED
  delayMicroseconds(PULSEWIDTH * 3);
}

// Signals to precede a command to the radio
void Preamble() {
  // HEADER: always LOW (1 pulse width), HIGH (16 pulse widths), LOW (8 pulse widths)
  digitalWrite(OUTPUTPIN, LOW);       // Make sure output is LOW for 1 pulse width, so the header starts with a rising edge
  digitalWrite(LEDPIN, LOW);          // Turn off on-board LED
  delayMicroseconds(PULSEWIDTH * 1);
  digitalWrite(OUTPUTPIN, HIGH);      // Start of header, output HIGH for 16 pulse widths
  digitalWrite(LEDPIN, HIGH);         // Turn on on-board LED
  delayMicroseconds(PULSEWIDTH * 16);
  digitalWrite(OUTPUTPIN, LOW);       // Second part of header, output LOW 8 pulse widths
  digitalWrite(LEDPIN, LOW);          // Turn off on-board LED
  delayMicroseconds(PULSEWIDTH * 8);
  
  // START BIT: always 1
  SendOne();
}

// Signals to follow a command to the radio
void Postamble() {
  // STOP BITS: always 1
  SendOne();
  SendOne();
}
belui вне форума   Ответить с цитированием
Старый 27.02.2019, 00:21   #7
жека 3
Гуру
 
Регистрация: 05.12.2010
Город: москва
Регион: 77, 97, 99, 177
Машина: логан санта фе
Сообщений: 1,160
жека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really nice
По умолчанию

На видео джойстик от рено, у меня такой покупал на Авито к нему адаптер работает с кучей магнитолу, если найду ссылку скину

https://ksize.ru/adapter-knopok-dlya...000007948.html вот такой у меня правда цена крутая можно дешевле найти

https://ksize.ru/adapter-knopok-na-r...000006967.html это для вашего джойстика

Последний раз редактировалось basurman; 27.02.2019 в 10:24.
жека 3 вне форума   Ответить с цитированием
Старый 27.02.2019, 07:15   #8
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию

Меня не интересуют девайсы для подключения, я видел их. Меня интересует переназначение кнопок в коде, что выше.


Последний раз редактировалось belui; 27.02.2019 в 08:23.
belui вне форума   Ответить с цитированием
Старый 27.02.2019, 08:35   #9
жека 3
Гуру
 
Регистрация: 05.12.2010
Город: москва
Регион: 77, 97, 99, 177
Машина: логан санта фе
Сообщений: 1,160
жека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really niceжека 3 is just really nice
По умолчанию

Вы понимаете, что этот джойстик предназначен для подключения в штатном режиме через CAN шину и коды написаны для штатного режима

Ваш джойстик надо колхозить т. е. Выводить каждую кнопку и код написан для реновского джойстика, а эти коды выши вы не вкорячите в джойстик пыжика.Вы хоть посмотрите подключение джойстика от рено ипыжика и сравните.

Последний раз редактировалось basurman; 27.02.2019 в 10:23.
жека 3 вне форума   Ответить с цитированием
Старый 27.02.2019, 09:19   #10
belui
Старший Пользователь
 
Регистрация: 17.02.2014
Возраст: 39
Регион: 26
Сообщений: 138
belui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of lightbelui is a glorious beacon of light
По умолчанию

Цитата:
Сообщение от жека 3 Посмотреть сообщение
Вы понимаете, что этот джойстик предназначен для подключения в штатном режиме через CAN шину и коды написаны для штатного режима
Джойстик это просто кнопки замыкающие контакты. Все. Я могу переткнув контакты в ардуине поменять кнопки местами и кнопка переключения треков на джойстике будет повышать громкость. Если вы почитаете форум что я выкладывал в первом сообщении то найдете там информацию, что люди вычисляют коды которые использует магнитола, вот пример с первой страницы:

И вот коды кнопок на моем пульте:
0x04 Vol +
0x05 Vol -
0x08 источник
0x0D звук
0x0e отключение звука
0x12 справа
0x13 слева
0x14 Up
0x15 вниз

Можно задействовать код любой кнопки с самого мафона или пульта ду к нему. Сам джой ничего кроме замыкания контактов не умеет. А через ардуину эти замыкания преобразуют в определенный код (простыми словами) понятный мафону.

Цитата:
Сообщение от жека 3 Посмотреть сообщение
Ваш джойстик надо колхозить т. е. Выводить каждую кнопку и код написан для реновского джойстика, а эти коды выши вы не вкорячите в джойстик пыжика.Вы хоть посмотрите подключение джойстика от рено ипыжика и сравните.
Я же в первом сообщении скинул видео где подключают джойстик от пежо к jvc. Последнее видео, что я скинул это мое видео с моим мафоном и моим джоем.
Джойстик от рено ничем особо не отличается от джойстика пежо, он так же тупо замыкает контакты.

https://www.drive2.ru/search?text=по...enault+pioneer

Последний раз редактировалось basurman; 27.02.2019 в 10:23.
belui вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 00:45.


Работает на vBulletin® версия 3.8.4.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot