Twin20

Звонок громкого боя для шумного помещения

6 сообщений в этой теме

Twin20    0

Добрый день. Раньше на предприятии была аналоговая АТС и проблем со звонком запаралеленным с обычным телефоном не было. Но как начали внедрять IP телефонию наши звонки перестали работать. Я придумал снимать сигнал с динамика телефона VOIP (сделать повторитель и компаратор на lm358). Помогите может кто знает лучший способ реализовать звонок. И у моей схеме есть минус нельзя будет пользоваться громкой связью. И ещё в схемотехнике я не очень схему вечером набросаю может кто посмотрит правильно или нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
bvj    15

Для громкой связи можно и выключатель поставить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Twin20    0

День добрый. Родилась ещё одна идея подключение звонка. Есть вопрос. В телефоне установлен специфический контроллер. Хочу пару кнопок с клавиатуре запоралелить на ардуино там напряжение 3.3 вольта. Одна кнопка просто притягивается к земле есть подтягивающий резистор. А вторая кнопка вроде вроде на шлейфе ещё с четырьмя. Но там странно общее напряжение 2.2 вольта и также притянута к питанию 3.3 вольта. Так нужен совет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
UTSource

Найдите миллионы труднодоступных

электронных компонентов

Twin20    0
int flag_key_speker = 0; // флаг включения кнопки спикерфона
int key_speker = 0; // переменная кнопки спикерфона
int key_handset = 0; // переменная кнопки положенной трубки
int ZVK = 0; //
float NAP = 0;
unsigned long last_press;

void setup() {
  pinMode(PB7, OUTPUT); // инцилизация порта для имитации кнопки для спикерфона
  pinMode(PB6, OUTPUT); // инцилизация порта для на симистерный блок
  pinMode(PB4, INPUT); // инцилизация порта для кнопка спикерфона
  pinMode(PB5, INPUT); // инцилизация порта для кнопка положенной трубки
  pinMode(PA0, INPUT); // инцилизация порта для измерения напряжение с динамика
  Serial.begin(9600); // инцилизация паралельного порта
}
void loop() {
  ZVK = analogRead(PA0); // измерение напряжения с динапика
  key_speker = digitalRead(PB4);// чтение состояние кнопки спекирфона
  key_handset = digitalRead(PB5); // чтение состояние кнопки положенной трубки 
  NAP = (ZVK*3.3)/4095; // переcчет напряжения

  //Serial.println(key_speker);

  // оброботка нажатие кнопки спикерфона
  if (key_handset == 1)
  {
    if (key_speker == 1 && flag_key_speker == 0 && millis() - last_press > 1000)
        {
        digitalWrite(PB7, 1);                  
        delay(100);                  
        digitalWrite(PB7, 0);
        last_press = millis();
        flag_key_speker = 1;  
        digitalWrite(PB6, 0);   
        } 
       }
    Serial.println(flag_key_speker);
        last_press = 0;
    if (NAP > 1.5 && key_handset == 1)
  {
      if (key_speker == 1 && flag_key_speker == 1 && millis() - last_press > 1000)
      {
        digitalWrite(PB7, 1);                  
        delay(100);                  
        digitalWrite(PB7, 0);
        last_press = millis();
        flag_key_speker = 0;
        digitalWrite(PB6, 0);
      } 
  }
   // оброботка вызовного сигнала с положеннной трубкой
  
  if (NAP > 1.5 && key_handset == 1 && flag_key_speker == 0)
  {
  digitalWrite(PB6, 1);
  }
  else 
  {
  digitalWrite(PB6, 0);
  }
  } 
   

Добрый день. Помогите с кодом. Не могу понять почему  flag_key_speker не держит единицу пока второй раз не нажата кнопка спекирфона...

stm32f103 pins.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас