Генератор по времени

astronom3
astronom3 аватар
Offline
Зарегистрирован: 28.03.2017

Помогите сделать скейч следующего девайса..

Есть ардуино уно и модуль 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-ую ардуину?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

astronom3 пишет:

Что делать? подключать 2-ую ардуину?

Да, а для третьей ножки - третью :)

astronom3
astronom3 аватар
Offline
Зарегистрирован: 28.03.2017

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

JasKo
Offline
Зарегистрирован: 21.11.2015

Студент?

Посмотри и подумай над темой http://arduino.ru/forum/programmirovanie/etyudy-dlya-nachinayushchikh-blink-i-bez-delay-i-bez-millis

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

astronom3 пишет:

Поэтому и спрашиваю: Что можно сделать?

Когда я вижу конструкцию типа

int time;
...

if(time == 00.01 )

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

А вообще, зачем Вам вообще эти сравнения и весь балаган? DS3231 отлично умеет сама раз в минуту выдавать прерывания, так что всё, что у Вас в loop - абсолютно лишнее.

Но последний абзац не принесёт Вам никакой пользы до тех пор, пока Вы пишете конструкции вроде

int time; //какая-то переменная с временем
...
if(time == 00.01 )

 

Клапауций 112
Клапауций 112 аватар
Offline
Зарегистрирован: 01.03.2017

ЕвгенийП пишет:

Но последний абзац не принесёт Вам никакой пользы до тех пор, пока Вы пишете конструкции вроде

int time; //какая-то переменная с временем
...
if(time == 00.01 )

верно - нужно правильно писать:

int time; //какая-то переменная с временем
...
if(time == 00.00.01 )

 

vk007
Offline
Зарегистрирован: 16.06.2015
Board Min frequency (Hz) Max frequency (Hz)
Uno, Mega, Leonardo and other AVR boards 31 65535

Так что не получится у вас использовать tone() для 1, 2, 3 герца.

astronom3 пишет:
сигнал определенной тональности в теч. 1 сек. (например 1Гц)

След. секунда - другая тональность( 2Гц), 3 секунда - еще тональность(3гц).. итак 6 секунд..

И дополнительно все эти 6 сек. - сигнал должен играть на 2 ножке (№2) с частотой 10гц..

Какое там нафиг "сигнал должен играть"? Вы представляете, что такое 1, 2, 3, ... 10 Гц? Щелкнет оно "пару" раз в эту секунду и все.

astronom3
astronom3 аватар
Offline
Зарегистрирован: 28.03.2017

vk007 пишет:

Board Min frequency (Hz) Max frequency (Hz)
Uno, Mega, Leonardo and other AVR boards 31 65535

Так что не получится у вас использовать tone() для 1, 2, 3 герца.

-------------------

Какое там нафиг "сигнал должен играть"? Вы представляете, что такое 1, 2, 3, ... 10 Гц? Щелкнет оно "пару" раз в эту секунду и все.

Так и надо.. 1-2 раза в секунду.. Касательно мин.31гц. это еще одна дополнительная проблема..