Переключение режимов. С программированием очень плохо. Подскажите или поправьте.

mifar
Offline
Зарегистрирован: 07.04.2021

 ТС нужно

Цитата:
Импульсный режим включается сразу на все лазеры, не важно как они включены, он либо включен, либо выключен.

а у вас модулируется тока один лазер.

Предлагаю свой говнокод

boolean vibro = false;
unsigned long time_r=40;
int impulseOn = 3;
int powerOn = 4;
int butt_select = 2;
int butt_modul = 5;

int regim = 1;
int flag = 0;
int flag1 = 0;

void setup()
{
  pinMode(powerOn, OUTPUT);
  pinMode(butt_select, INPUT_PULLUP);
  pinMode(butt_modul, INPUT_PULLUP);
  digitalWrite(powerOn, LOW);
  digitalWrite(impulseOn, HIGH);
  DDRB = B11001110;
}

void loop()
{
if (digitalRead(butt_select) == LOW && flag == 0 && !vibro)
  {
    regim++;
    flag = 1;
    if (regim > 3) regim = 1;
  }
  if (digitalRead(butt_select) == HIGH && flag == 1) flag = 0;

  if (digitalRead(butt_modul) == LOW && flag1 == 0)
  {
    vibro = !vibro;
    flag1 = 1;
  }
  if (digitalRead(butt_modul) == HIGH && flag1 == 1) flag1 = 0;
  
  if (regim == 1 && !vibro) PORTB = 0B11000010;
  if (regim == 2 && !vibro) PORTB = 0B11000100;
  if (regim == 3 && !vibro) PORTB = 0B11001000;

  if (vibro) {
    PORTB = 0B11001110;
    delayMicroseconds(time_r);
    PORTB = 0B11000000;
    delayMicroseconds(time_r);
  }
}

Учитывая что тут ядреный реактор не управляется  поэтому тупо использую delay. В железе не проверял, с заданным значением в протеусе частота почти 10кГц.

b707
Offline
Зарегистрирован: 26.05.2017

mifar - насколько я прочитал ТЗ - в каждый момент может быть включен только один лазер из трех. И на нем может быть либо постоянное напряжение, либо меандр 10 КГц

Впрочем пусть ТС нас рассудит - ему лучше знать.

 

Выкладываю свой вариант

class Btn_Sns {
  protected:
    const byte pin;
    const bool OnValue;
    bool bounce = 0;
    bool oldBtn = 1;
    bool pressed = false;
    int  bounce_int = 30;
    uint32_t past;
  public:
    Btn_Sns(byte pin_): pin(pin_), OnValue(LOW)  {}
    Btn_Sns(byte pin_, bool OnValue): pin(pin_), OnValue(OnValue)  {}

    void init() {
      if ( ! OnValue) pinMode(pin, INPUT_PULLUP);
      else pinMode(pin, INPUT);
      oldBtn = ! OnValue;
    }

    void test() {
      bool newBtn = digitalRead(pin);
      if ((newBtn == OnValue) && (oldBtn != OnValue)) {
        if (!bounce) {
          bounce = 1;
          past = millis();
        }
        else if (millis() - past >= bounce_int) {
          bounce = 0 ;
          oldBtn = newBtn;
        }
      }
      if ((newBtn != OnValue) && (oldBtn == OnValue)) {
        oldBtn = newBtn;
        pressed = true;
      }
    }
    bool onPress(bool rst = true) {
      if ( pressed )  {
        if (rst) pressed = false;
        return true;
      }
      return false;
    }
};

#define Knob_laser_pin 8
#define Knob_impulse_pin 9
volatile uint8_t mask = 0;
uint8_t laser_all = 0b01110000;
uint8_t laser_mask[] = {0, 0b00010000, 0b00100000, 0b01000000 };
Btn_Sns Knob_laser(Knob_laser_pin);
Btn_Sns Knob_impulse(Knob_impulse_pin);

void setup() {
  Serial.begin(9600);
  DDRD |= laser_all;
  // инициализация Timer1
  cli(); // отключить глобальные прерывания
  TCCR1A = 0; // установить регистры в 0
  TCCR1B = 0;
  OCR1A = 99; // установка регистра совпадения для периода 50мкс
  TCCR1B |= (1 << WGM12);    // включение в CTC режим
  TCCR1B |= (1 << CS11);     // прескалер 8
  sei(); // включить глобальные прерывания
  Knob_laser.init();
  Knob_impulse.init();
}

ISR(TIMER1_COMPA_vect)
{
  PIND |= mask;
}

void loop() {
  
  static uint8_t laser_num = 0;
  static bool impulse = 0;
  bool par_changed = false;
  Knob_laser.test();
  Knob_impulse.test();
  if (Knob_impulse.onPress()) {
    impulse = ! impulse;
    Serial.print("Pulse = ");
    Serial.println(impulse);
    par_changed = true;
  }
  if (Knob_laser.onPress()) {
    if (++laser_num > 3) laser_num = 0;
    Serial.print("Laser = ");
    Serial.println(laser_num);
    par_changed = true;
  }
  if (par_changed) {
    cli();
    PORTD &= ~(laser_all);
    PORTD |= laser_mask[laser_num];
    if (impulse) {
      mask = laser_mask[laser_num];
      TIMSK1 |= (1 << OCIE1A); // включение прерываний по совпадению
      }
    else {
      mask = 0; 
      TIMSK1 &= ~(1 << OCIE1A);// выключение прерываний 
      }
    sei();
  } 
}

 

Код рассчитан на Уно-Нано 16МГц.  Лазеры подключаются к пинам 4, 5 и 6 (не менять!). Кнопки - к любым пинам начиная с восьмого (настраиваются в коде).

Добавил еще один режим - полное выключение. При нажатии кнопки "лазер" включаются последовательно режимы

лазер1 - лазер2 - лазер3 - ВСЕ_ВЫКЛ

и далее по кругу.

Выходная частота по осциллографу 10.01 КГц

 

b707
Offline
Зарегистрирован: 26.05.2017

mifar - попробовал ваш код в железе.

Работу кнопок не проверял, только импульсный режим.

частота 10.25 Кгц,  но скважность 39% - что, в общем, неудивительно, с учетом организации цикла на делеях внутри ЛУП.

 

rastaman29
Offline
Зарегистрирован: 04.04.2021

По поводу скважности смысл есть поднять, чем лучше видно луч, тем лучше. Но это тоже надо экспериментировать. Когда я экспериментировал, то при скважности 60% детектор уже нестабильно принимал сигнал, но возможно надо было расстояние побольше. Думаю этот момент можно будет отрегулировать уже в процессе. А вот скважность 39% это не айс, там уже луч плохо видно.

Алгоритм по переключению лазеров такой: При включении прибора загорается 1 лазер, 1 раз кнопкой жмак включается лазер 2 (первый не отключается), второй раз кнопкой включается 3 лазер(все лазеры включены получаются), 3 раз жмак включается только первый и по кругу. Все лазеры выключать нет смысла, так как это можно сделать отключив прибор(т.е. другая кнопка). Там еще функция есть - включение лазеров в заблокированном состоянии удержанием, но думаю это сам постараюсь воткнуть (не критичный параметр).

Импульсный режим включается сразу на все лазеры. Независимо от их работы.

b707
Offline
Зарегистрирован: 26.05.2017

rastaman29 пишет:

По поводу скважности смысл есть поднять, чем лучше видно луч, тем лучше.

в моем коде скважность строго 50% и чтобы это поменять - надо много переписывать, я не буду

Цитата:
Алгоритм по переключению лазеров такой: При включении прибора загорается 1 лазер, 1 раз кнопкой жмак включается лазер 2 (первый не отключается), второй раз кнопкой включается 3 лазер(все лазеры включены получаются), 3 раз жмак включается только первый и по кругу.

ну тогда ни один из нас не угадал. У меня лазеры включаются поочередно, в каждый момент включен только один.  У Alexey_Rem, насколько я понимаю код - тоже. Чтобы переделать алгоритм, в моем коде достаточно поменять три символа в одной строке.  Если мой код понадобится - поменяю.

rastaman29
Offline
Зарегистрирован: 04.04.2021

Как ни крути тот или иной код, всех благодарю за участие, что не прошли мимо. Каждый код имеет право на жизнь. А главное можно будет мне, который в этом деле не соображает, пытаться разобраться в нюансах. Так как 2 разных по принципу кода, а выполняют в принципе одну задачу. Надо вычерпать пользу из этого.

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

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

так режим со всеми лазерами нужен?

rastaman29
Offline
Зарегистрирован: 04.04.2021

Так то нужен. Но уже стыдно спрашивать))) 

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

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

rastaman29
Offline
Зарегистрирован: 04.04.2021

Хорошо попробую.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Оказывается : :)))

rastaman29 пишет:

4. Измерение напряжение на делителе, что бы сигнализировать о разряде. Сигнальный светодиод тот же, что и Power ON, только он начинает мигать.

Тут хорошо бы узнать как питается ардуинка, если от лития, то наверное можно было бы сделать так:

rastaman29
Offline
Зарегистрирован: 04.04.2021

Питается от лития. Да такой делитель пойдет. 

mifar
Offline
Зарегистрирован: 07.04.2021

Если батарея 4-х вольтовая - не нужен там делитель.

rastaman29
Offline
Зарегистрирован: 04.04.2021

По идее стаб поставить. Но это уже другая история.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

И не надо АЦП  читать сигнал 0 на GPIO и мигать POWER ON диодом

rastaman29
Offline
Зарегистрирован: 04.04.2021

Alexey_Rem - работает норм, по кругу не переключается.

Mifar - что то там при включении импульсного режима не переключаются лазеры.  Дальше не разобрался пока.

b707 - а привязки к пинам сильно обязательно? Это ведь перепивать все надо))

b707
Offline
Зарегистрирован: 26.05.2017

rastaman29 пишет:

b707 - а привязки к пинам сильно обязательно? Это ведь перепивать все надо))

какие пины хотите поменять? лазеры? - на какие?

rastaman29
Offline
Зарегистрирован: 04.04.2021

9 10 11

Лучше скажите как, что бы я мог менять.

mifar
Offline
Зарегистрирован: 07.04.2021

rastaman29 пишет:

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

Ну так задумано, зачем их переключать если они и так все одновременно включаются. Если есть острое желание переключать - уберите в 24 строке && !vibro

rastaman29
Offline
Зарегистрирован: 04.04.2021

Alexey_Rem пишет:

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

В процедуре void lazer_selection() надо что то менять. Я писец смотрю и не пойму. Я писал подписывал все моменты)))))))))))

rastaman29
Offline
Зарегистрирован: 04.04.2021

Ну так задумано, зачем их переключать если они и так все одновременно включаются. Если есть острое желание переключать - уберите в 24 строке && !vibro

Убрал vibro - не переключает в импульсном режиме. 

b707
Offline
Зарегистрирован: 26.05.2017

rastaman29 пишет:

9 10 11

Лучше скажите как, что бы я мог менять.

Слишком много обьяснять надо, ща сам поменяю и выложу

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

IMPROVED VERSION features are commented:

may not work correctly has not been tested on hardware

int pow_on_led=(1);//св диод питания вставить свою ногу
int volt_sence=(2); //датчик напр  питания вставить свою ногу
int modul_on=(3);//св диод вкл модуляции вставить свою ногу
 
unsigned long time_r;
boolean modulation=true;
boolean vibro=false;
boolean modul_debunc=false;
int modul_cnt=0;
boolean select_debunc=false;
boolean sel_pressed=false;
boolean mod_pressed=false;
int select_cnt=0;
int clk_cnt=0;
int selected=0;
int lazer_1=12;
int lazer_2=9;
int lazer_3=10;
int butt_select=22;
int butt_modul=23;
void control ()
{

switch (selected) {
   case 0:
digitalWrite(lazer_1, vibro||modulation);
  break;
   case 1:
digitalWrite(lazer_2, vibro||modulation);
     break;
       case 2:
digitalWrite(lazer_3, vibro||modulation);
      break;
 }
}

 void press_chk()
 {
   if(digitalRead(butt_select))
   {
    sel_pressed=false; 
   }
   if(digitalRead(butt_modul))
   {
    mod_pressed=false; 
   }
 }
 void lazer_selection()
 {
   digitalWrite(lazer_1, LOW);
   digitalWrite(lazer_2, LOW);
   digitalWrite(lazer_3, LOW); 
   if(selected<2)
   {
     selected++;
   }
   else
   {
     selected=0;
   }


 }
void modul()
{
 if(!modul_debunc)
 {
   if(!digitalRead(butt_modul)&&! mod_pressed)
   {
     modul_debunc=true;
      mod_pressed=true;     
     modulation=!modulation;
     }
 } 
 else
 {
   if(modul_cnt<=90)
   {
     modul_cnt++;
   }
   else
   {
     modul_cnt=0;
     modul_debunc=false;
   }
 }
 if(!select_debunc)
 {
   if(!digitalRead(butt_select)&&!sel_pressed)
   {
     select_debunc=true;
     sel_pressed=true;
     lazer_selection();
     
   }
 } 
 else
 {
   if(select_cnt<=90)
   {
     select_cnt++;
   }
   else
   {
     select_cnt=0;
     select_debunc=false;
   }
 }
if(sel_pressed||mod_pressed)
{
 press_chk(); 
}
}

void setup() {
 pinMode(lazer_1,OUTPUT);
 pinMode(lazer_2,OUTPUT);
 pinMode(lazer_3,OUTPUT);
 pinMode(pow_on_led,OUTPUT);
 pinMode(butt_select,INPUT_PULLUP);
 pinMode(butt_modul,INPUT_PULLUP);
 pinMode(volt_sence,INPUT);
 pinMode(modul_on,INPUT);
 digitalWrite(lazer_1, LOW);
 digitalWrite(lazer_2, LOW);
 digitalWrite(lazer_3, LOW); 



}

void loop() 
{
if ((micros()-time_r)>=50)
  {vibro=!vibro;
  time_r=micros();
  control ();
     if(clk_cnt<=40)
     {clk_cnt++;
      }
      else
      {clk_cnt=0;
      modul();
      if(digitalRead(volt_sence))//мигаем если сели батарейки
      {
        digitalWrite(pow_on_led, HIGH);
      }
      else
      {
digitalWrite(pow_on_led,!digitalRead(pow_on_led));        
      }
digitalWrite(modul_on,!modulation);// индицируем модуляцию     
   }
     }
  }

 

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019
void control ()
{
switch (selected) {
   case 0:
digitalWrite(lazer_1, vibro||modulation);
  break;
   case 1:
digitalWrite(lazer_2, vibro||modulation);
     break;
       case 2:
digitalWrite(lazer_3, vibro||modulation);
      break;
      switch (selected) {
   case 3:
digitalWrite(lazer_1, vibro||modulation);
digitalWrite(lazer_2, vibro||modulation);
digitalWrite(lazer_3, vibro||modulation);
  break;

 }
}

[code]
void lazer_selection()
 {
   digitalWrite(lazer_1, LOW);
   digitalWrite(lazer_2, LOW);
   digitalWrite(lazer_3, LOW); 
   if(selected<3)
   {
     selected++;
   }
   else
   {
     selected=0;
   }
[/code]

 

 

b707
Offline
Зарегистрирован: 26.05.2017

rastaman29 пишет:

9 10 11

Лучше скажите как, что бы я мог менять.

исправленный вариант -

class Btn_Sns {
  protected:
    const byte pin;
    const bool OnValue;
    bool bounce = 0;
    bool oldBtn = 1;
    bool pressed = false;
    int  bounce_int = 30;
    uint32_t past;
  public:
    Btn_Sns(byte pin_): pin(pin_), OnValue(LOW)  {}
    Btn_Sns(byte pin_, bool OnValue): pin(pin_), OnValue(OnValue)  {}

    void init() {
      if ( ! OnValue) pinMode(pin, INPUT_PULLUP);
      else pinMode(pin, INPUT);
      oldBtn = ! OnValue;
    }

    void test() {
      bool newBtn = digitalRead(pin);
      if ((newBtn == OnValue) && (oldBtn != OnValue)) {
        if (!bounce) {
          bounce = 1;
          past = millis();
        }
        else if (millis() - past >= bounce_int) {
          bounce = 0 ;
          oldBtn = newBtn;
        }
      }
      if ((newBtn != OnValue) && (oldBtn == OnValue)) {
        oldBtn = newBtn;
        pressed = true;
      }
    }
    bool onPress(bool rst = true) {
      if ( pressed )  {
        if (rst) pressed = false;
        return true;
      }
      return false;
    }
};

#define Knob_laser_pin 3
#define Knob_impulse_pin 4
volatile uint8_t mask = 0;
uint8_t laser_all = 0b00001110;
uint8_t laser_mask[] = {0, 0b00000010, 0b00000110, 0b00001110 };
Btn_Sns Knob_laser(Knob_laser_pin);
Btn_Sns Knob_impulse(Knob_impulse_pin);

void setup() {
  Serial.begin(9600);
  DDRB |= laser_all;
  // инициализация Timer1
  cli(); // отключить глобальные прерывания
  TCCR1A = 0; // установить регистры в 0
  TCCR1B = 0;
  OCR1A = 99; // установка регистра совпадения для периода 50мкс
  TCCR1B |= (1 << WGM12);    // включение в CTC режим
  TCCR1B |= (1 << CS11);     // прескалер 8
  sei(); // включить глобальные прерывания
  Knob_laser.init();
  Knob_impulse.init();
}

ISR(TIMER1_COMPA_vect)
{
  PINB |= mask;
}

void loop() {
  
  static uint8_t laser_num = 0;
  static bool impulse = 0;
  bool par_changed = false;
  Knob_laser.test();
  Knob_impulse.test();
  if (Knob_impulse.onPress()) {
    impulse = ! impulse;
    Serial.print("Pulse = ");
    Serial.println(impulse);
    par_changed = true;
  }
  if (Knob_laser.onPress()) {
    if (++laser_num > 3) laser_num = 0;
    Serial.print("Laser = ");
    Serial.println(laser_num);
    par_changed = true;
  }
  if (par_changed) {
    cli();
    PORTB &= ~(laser_all);
    PORTB |= laser_mask[laser_num];
    if (impulse) {
      mask = laser_mask[laser_num];
      TIMSK1 |= (1 << OCIE1A); // включение прерываний по совпадению
      }
    else {
      mask = 0; 
      TIMSK1 &= ~(1 << OCIE1A);// выключение прерываний 
      }
    sei();
  } 
}

лазеры на пинах 9, 10, 11, кнопки на 3 и 4

Режимы теперь включаются так

лазер1 - лазеры 1+2  - лазеры 1 + 2 + 3  - ВСЕ_ВЫКЛ

 

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Блин, классно написано я так не умею

rastaman29
Offline
Зарегистрирован: 04.04.2021

Alexey_Rem пишет:

 pinMode(modul_on,INPUT);

 

наверное OUTPUT

rastaman29
Offline
Зарегистрирован: 04.04.2021

лазер1 - лазеры 1+2  - лазеры 1 + 2 + 3  - ВСЕ_ВЫКЛ

Первый при включении загораться должен. И режим все выключены должен, когда с пина определенного убираешь 1. Там проц в спящем режиме ждет.

rastaman29
Offline
Зарегистрирован: 04.04.2021

Блин ребя ничего вы даёте.

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

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Ничего такого не вижу перезагрузите страницу

rastaman29
Offline
Зарегистрирован: 04.04.2021
115 void setup() {
116  pinMode(lazer_1,OUTPUT);
117  pinMode(lazer_2,OUTPUT);
118  pinMode(lazer_3,OUTPUT);
119  pinMode(pow_on_led,OUTPUT);
120  pinMode(butt_select,INPUT_PULLUP);
121  pinMode(butt_modul,INPUT_PULLUP);
122  pinMode(volt_sence,INPUT);
123  pinMode(modul_on,INPUT); вот тут
124  digitalWrite(lazer_1, LOW);
125  digitalWrite(lazer_2, LOW);
126  digitalWrite(lazer_3, LOW);

 

rastaman29
Offline
Зарегистрирован: 04.04.2021
152

digitalWrite(modul_on,!modulation);// индицируем модуляцию  

 

digitalWrite(modul_on,modulation);// индицируем модуляцию   тут наверное так, а то светодиод инверсно работает.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Во первых успокриться, во вторых открыть doc.adruino.ua, раздел программирование, прочитать про функции, потом взять мою прогу( исключительно потому что она простая) и разобрать по частям что и как там делается непонятные вещи  подглядывать в doc.adruino.ua и все будет ОК.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

вполне возможно

rastaman29
Offline
Зарегистрирован: 04.04.2021
001 int pow_on_led=(1);//св диод питания вставить свою ногу
002 int volt_sence=(2); //датчик напр  питания вставить свою ногу

Две разных диода получается. Одинаковый пин не работает.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

удалите это какие-то паразитные теги HTML

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

pow_on_led-выход на светодиод

volt_sence -датчик на пряжения -входINPUT

rastaman29
Offline
Зарегистрирован: 04.04.2021

Оп сорян)) не то написал это же пин измерения)))

rastaman29
Offline
Зарегистрирован: 04.04.2021

 

123

 pinMode(modul_on,INPUT);

Исправил 

pinMode(modul_on, OUTPUT);

b707
Offline
Зарегистрирован: 26.05.2017

rastaman29 пишет:

лазер1 - лазеры 1+2  - лазеры 1 + 2 + 3  - ВСЕ_ВЫКЛ

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

вы пока это проверьте, может еще какие замечания будут

 

rastaman29
Offline
Зарегистрирован: 04.04.2021

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

Забыл еще одно условие: когда маятник отводится до предела, то замыкается на контакт и прибор весело мигает всеми лазерами сигнализируя о том, что маятник превысел предел отклонения. Маятник получается +, замыкается на порт.

rastaman29
Offline
Зарегистрирован: 04.04.2021

Alexey_Rem

Каков алгоритм volt_sence? Какое напряжение он считает минимум?

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

читаем напряжение с батарейки через делитель расчитаный так что бы при напр на батарейке 3.7 В на нижнем резисторе  было 1,3,-1,4 В, При этом напряжении контроллер  определяет на входе лог ноль, если напр выше - лог единицу в соответсвии с этим мигаем

rastaman29
Offline
Зарегистрирован: 04.04.2021

А как это в коде указано?

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019
 if(digitalRead(volt_sence))//мигаем если сели батарейки
145
      {
146
        digitalWrite(pow_on_led, HIGH);
147
      }
148
      else
149
      {
150
digitalWrite(pow_on_led,!digitalRead(pow_on_led));       
151
      }

 

rastaman29
Offline
Зарегистрирован: 04.04.2021

Я сажаю на 0 пин sens. Не реагирует.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019
if(digitalRead(volt_sence))//мигаем если сели батарейки
145
      {
146
        digitalWrite(pow_on_led, HIGH);
147
      }
148
      else if(!digitalRead(volt_sence))
149
      {
150
digitalWrite(pow_on_led,!digitalRead(pow_on_led));       
151
      }

мигание с частотй ок 0.6 Гц

rastaman29
Offline
Зарегистрирован: 04.04.2021

На + сажаю тухнет, на - не реагирует.

Alexey_Rem
Offline
Зарегистрирован: 09.09.2019

Подумаю

rastaman29
Offline
Зарегистрирован: 04.04.2021

Похоже частота выше. Цешка показывает 245 Гц