Код: Выделить всё
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(flag_key_speker);
// оброботка нажатие кнопки спикерфона
if (key_handset == 1 && key_speker == 1 && flag_key_speker == 0 && millis() - last_press > 200)
{
digitalWrite(PB7, 1);
delay(100);
digitalWrite(PB7, 0);
last_press = millis();
flag_key_speker = 1;
digitalWrite(PB6, 0);
last_press = millis();
}
Serial.println(flag_key_speker);
last_press = 0;
if (key_handset == 1 && key_speker == 1 && flag_key_speker == 1 && millis() - last_press > 200)
{
digitalWrite(PB7, 1);
delay(100);
digitalWrite(PB7, 0);
flag_key_speker = 0;
last_press = millis();
}
Serial.println(flag_key_speker);
// оброботка вызовного сигнала с положеннной трубкой
if (NAP > 1.5 && key_handset == 1 && flag_key_speker == 0)
{
digitalWrite(PB6, 1);
}
else
{
digitalWrite(PB6, 0);
}
}

