Генератор со случайной частотой (прошу помощи)
- Войдите на сайт для отправки комментариев
Пт, 20/10/2017 - 14:32
Добрый день. Оговорюсь сразу, что я новичок и начал ковырятся в Ардуино ради собственного интереса и саморазвития.
Идея проста (покрайней мере так кажется).
Сделать генератор меандра со случайной частотой от 5 до 200 Гц и случайной длительностью от 1сек до 60сек например.
Если с генератором все просто, tone ();
ТО
int F; int T; void setup() { } void loop() { for (int a=0; a<0; a=a+1) // создал цикл для того что бы F и T присвоить рандомное значение 1 раз в одном цикле loop (или они и так присваиваются 1 раз? не пойму) { F=random(5,200); // присвоил F значение от 5Гц до 200Гц T=random(1000,60000); // присвоил T значение от 1000мс до 60000мс } // на сколько я понял то в этом месте переменные F и T не низменны до повторного выполнения loop (проверял это через Serial.print ();) tone(11,F,T); // выдаем на 11pin меандр с частотой F и длительностью в T }
с Randon частотой и временем я подвис уже 3 день =D
Итог некакой, непонимаю почему loop недожидается выполнения команды tone а именно параметра длительности (переменой T)
tone не блокирующая функция
P.S. 5 герц не получите, только от 31 без танцев с бубном
А может быть tone поместить внутрь другого цикла который будет выполняться (время T) в одном циклк loop
была у меня такая мысле реализовать через millis, но что то тоже не вышло не чего
создал цикл в котором сравнивал millis c start_millis + время T, походу алгоритм рабочий а только реализовать не могу в коде
Почуму 5 Гц не получиться? где можно почерпать информации по поводу этих основ? какие функции блокирующие и что они могут, из за этого непониания я не могу отследить порядок выполнения скетча
https://www.arduino.cc/en/Reference/Tone
http://arduino.ru/tutorials/BlinkWithoutDelay
Во втором примере тоже самое только вместо свветодиода tone()
https://www.arduino.cc/en/Reference/Tone
http://arduino.ru/tutorials/BlinkWithoutDelay
Во втором примере тоже самое только вместо свветодиода tone()
Спасибо большое!) приду с работы поробую дома и отпишусь.