Доработка металлоискателя Пират
думаю что это можно сделать на attiny85, но без диодов
(01-09-2025, 13:59)gal : attiny85
Я с ней дела не
имел. А вот ардуина,
как то проще что ли?
Перепишу всё по другому.. мне вот эта секунда мешает.
// Задерживаю на 1 сек и замеряю частоту сигнала
delay(1000);
unsigned long frequency = pulseCount; // Частота в герцах
(01-09-2025, 14:24)-vlad- : А вот ардуина,
как то проще что ли?
не сложнее, для программирования можно использовать ардуино, стоит попробовать.

(01-09-2025, 17:39)-vlad- : delay(1000);
для тестирования скеча она полезна а для собраного прибора надо ее убрать, тогна прибор будет отвечать на метал без опоздания.
gal, Тут видишь где у меня собака порылась. Я не могу на том скетче запустить генерацию 125Гц и 125 микросекунды. Просто могу сделать 125Гц. А вот 125 микросекунд ну ни как.
Начну от простого к сложному. На первом месте будет 125Гц 125 ms. И потихоньку вычислю, где я не так делаю. Вот набросал скетч, вроде работает, от него и буду прыгать...
Код:
void setup() {
  pinMode(9, OUTPUT); //  D9 как выход на IRF740
}

void loop() {
  // Генерирую 125Гц и 125 микросекунды
  digitalWrite(9, HIGH);      //  D9 в HIGH
  delayMicroseconds(125);     //  125 микросекунд

  digitalWrite(9, LOW);       //  D9 в LOW
  delayMicroseconds(7755);    // Вытягиваю до 125 Гц
}
digitalWrite(9, LOW); // D9 в LOW
delayMicroseconds(7755); digitalWrite(9, LOW);


// D9 в LOW
delayMicroseconds(7800); ?
(01-09-2025, 20:08)-vlad- : Я не могу на том скетче запустить генерацию 125Гц и 125 микросекунды.
Это через ШИМ делается, частоту ШИМ можно менять, но для этого придётся изучать таймеры аппаратно https://alexgyver.ru/lessons/overclock/ или разбираться с библиотеками. https://alexgyver.ru/gyverpwm/
Всё не так просто.
В любом случае для одновременной работы звука и накачки датчика( две разные частоты одновременно) нужно распределять это между таймерами да ещё так что-бы не задеть системные функции Ардуины.
KEN, Я так и понял, что как бы 2 разные частоты разные по функцианалу сложно сделать ,так как 125Гц125мс уже не так выдает на выходе, если в loop задействована ещё другая частота, например озвучка led.
Если бы не эти 125мс, всё бы получилось.
Но есть идея ещё у меня, попробую реализовать завтра.
(01-09-2025, 23:34)-vlad- : Если бы не эти 125мс, всё бы получилось.

Вот это вставить в setup()

TCCR1B = 0x18;
TCCR1A = 0x82;
ICR1 = 16000;// Частота
OCR1A = 250;//Ширина импульса
TCNT1=0x0;
pinMode(9, OUTPUT);
TCCR1B |= 2; 

И на выводе D9 будет то что надо
OCR1A - чем меньше тем меньше ширина импульса, ICR1 - чем меньше тем больше частота, ширина также будет меняться.
Для функции tone обязательно выбрать вывод D11, и  вроде должно работать одновременно.
-vlad-, Сразу хотел сказать тебе про ШИМ, но не был уверен......
Вообще, то, что ты задумал, не будет так просто. Халявы не будет....- это я про это -
(01-09-2025, 23:09)KEN : придётся изучать таймеры аппаратно
Выйти на хотелки без глубокого изучения всех нюансов не получится.