Генератор по времени
- Войдите на сайт для отправки комментариев
Помогите сделать скейч следующего девайса..
Есть ардуино уно и модуль DS3231.. Нужно сделать так чтобы каждую минуту на ножке(например №1) генерировался сигнал определенной тональности в теч. 1 сек. (например 1Гц)
След. секунда - другая тональность( 2Гц), 3 секунда - еще тональность(3гц).. итак 6 секунд..
И дополнительно все эти 6 сек. - сигнал должен играть на 2 ножке (№2) с частотой 10гц..
Итак по кругу с каждым началом новой минуты..
В программировании практически ничего не понимаю.. Из того что прочитал, понял что надо:
// Библиотеки и определения для DS3231 #include <Wire.h> // Подключаем библиотеку для работы с I2C-устройствами #include <DS3231.h> // Подключаем библиотеку для работы с модулем DS3231 Для
Для генерации используем команду "ТОНЕ"
Далее:
#define timesekPIN 1 #define time6sekPIN 2 void setup() { pinMode(timesekPIN, OUTPUT); pinMode(time6sekPIN, OUTPUT); }
int time; //какая-то переменная с временем void loop(){ if(time == 00.00 ){ tone(2, 10, 6000) } //генерируем 10гц. на 2 ножке 6сек if(time == 00.01 ){ tone(1, 1, 1000) } //генерируем 1гц. на 1 ножке 1сек if(time == 00.02 ){ tone(1, 2, 1000) } //генерируем 2гц. на 1 ножке 1сек if(time == 00.03 ){ tone(1, 3, 1000) } //генерируем 3гц. на 1 ножке 1сек ... }
Сложность заключается в том, что при описании команды "тоне" указывается, что генерироваться может только 1 сигнал в каждый момент времени.. Что делать? подключать 2-ую ардуину?
Что делать? подключать 2-ую ардуину?
Да, а для третьей ножки - третью :)
Поэтому и спрашиваю: Что можно сделать? (В данной задаче требуются только 2 выхода с тоновым сигналом)..
Студент?
Посмотри и подумай над темой http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-blink-i-bez-delay-i-bez-millis
Поэтому и спрашиваю: Что можно сделать?
Когда я вижу конструкцию типа
int
time;
...
if
(time == 00.01 )
то с сожалением должен констатировать, что сделать нельзя ничего, кроме как отправить Вас учить язык на котором Вы собираетесь программировать.
А вообще, зачем Вам вообще эти сравнения и весь балаган? DS3231 отлично умеет сама раз в минуту выдавать прерывания, так что всё, что у Вас в loop - абсолютно лишнее.
Но последний абзац не принесёт Вам никакой пользы до тех пор, пока Вы пишете конструкции вроде
Но последний абзац не принесёт Вам никакой пользы до тех пор, пока Вы пишете конструкции вроде
верно - нужно правильно писать:
Так что не получится у вас использовать tone() для 1, 2, 3 герца.
След. секунда - другая тональность( 2Гц), 3 секунда - еще тональность(3гц).. итак 6 секунд..
И дополнительно все эти 6 сек. - сигнал должен играть на 2 ножке (№2) с частотой 10гц..
Какое там нафиг "сигнал должен играть"? Вы представляете, что такое 1, 2, 3, ... 10 Гц? Щелкнет оно "пару" раз в эту секунду и все.
Так что не получится у вас использовать tone() для 1, 2, 3 герца.
-------------------
Какое там нафиг "сигнал должен играть"? Вы представляете, что такое 1, 2, 3, ... 10 Гц? Щелкнет оно "пару" раз в эту секунду и все.
Так и надо.. 1-2 раза в секунду.. Касательно мин.31гц. это еще одна дополнительная проблема..