Нужна помшь в написании прграммы

vadim-21
Offline
Зарегистрирован: 26.12.2014

Здравствуете ребят помогите пожалуйста с написанием кода программы требуется чтоб при нажатии на тактовую кнопку от одного до пяти раз активировался один выход ардуины при нажатии от 5 до 10 раз другой с отключением предыдущего но а свыше 10 раз все выхода отключались  и еше важно чтоб спустя минуту количество нажатии обнулялось, хочу с телефона упровлять обогревом на даче

bwn
Offline
Зарегистрирован: 25.08.2014

vadim-21 пишет:

Здравствуете ребят помогите пожалуйста с написанием кода программы требуется чтоб при нажатии на тактовую кнопку от одного до пяти раз активировался один выход ардуины при нажатии от 5 до 10 раз другой с отключением предыдущего но а свыше 10 раз все выхода отключались  и еше важно чтоб спустя минуту количество нажатии обнулялось, хочу с телефона упровлять обогревом на даче

Так все таки от тактовой или с телефона?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

vadim-21 пишет:

Здравствуете ребят помогите пожалуйста с написанием кода программы требуется чтоб при нажатии на тактовую кнопку от одного до пяти раз активировался один выход ардуины при нажатии от 5 до 10 раз другой с отключением предыдущего но а свыше 10 раз все выхода отключались  и еше важно чтоб спустя минуту количество нажатии обнулялось, хочу с телефона упровлять обогревом на даче

Вы хотите "слушать" телефонную линию и управлять системой с помощью дискового телефона?  А что не так с тональным управлением?

vadim-21
Offline
Зарегистрирован: 26.12.2014

Поясню сейчас все работает так к телефону вместо вибры подключенно реле оно по сути эмулирует нажатие тактовой кнопки и в зависимости от количества гудков формируется количество нажатии. сейчас все работает без мк но я бы хотел иметь возможность и отключать дистанционно плюсом требуется еше один канал управления для обогрева будки собачки.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

vadim-21 пишет:

Поясню сейчас все работает так к телефону вместо вибры подключенно реле оно по сути эмулирует нажатие тактовой кнопки и в зависимости от количества гудков формируется количество нажатии. сейчас все работает без мк но я бы хотел иметь возможность и отключать дистанционно плюсом требуется еше один канал управления для обогрева будки собачки.

В зависимости от количества гудков вы хотите управлять системой отопления?

Не правильный подход. Если без наваротов (типа GSM-шилда) - то хотя бы тональное управление, с подтверждением.

vadim-21
Offline
Зарегистрирован: 26.12.2014

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

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Так вы бы на вопросы отвечали...

Простенькую программу написать могут многие. Но как угадать, что вам нужно?

vadim-21
Offline
Зарегистрирован: 26.12.2014

Все что сейчас мне  нужно это чтоб при нажатии на тактовую кнопку от одного до пяти раз активировался один выход ардуины при нажатии от 5 до 10 раз другой с отключением предыдущего но а свыше 10 раз все выхода отключались  и еше важно чтоб спустя минуту количество нажатии обнулялось, может мне кто с этим помочь нет???

vvadim
Offline
Зарегистрирован: 23.05.2012

Тёзка, напиши свою почту для связи

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

vadim-21 пишет:

Все что сейчас мне  нужно это чтоб при нажатии на тактовую кнопку от одного до пяти раз активировался один выход ардуины при нажатии от 5 до 10 раз другой с отключением предыдущего но а свыше 10 раз все выхода отключались  и еше важно чтоб спустя минуту количество нажатии обнулялось, может мне кто с этим помочь нет???

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

Уточните частоту нажатий.

vadim-21
Offline
Зарегистрирован: 26.12.2014

Здравствуйте отсувовал некоторое время был в отпуске извените, потребность  в данной программе осталась, текст программы  можно выложить здесь или  теме о кнопках, желательно закоментирова каждую строчку чтоб сам понимать начал. ( частота нажатии примерно раз в две секунды) моя почта ""vys55@qip.ru"

Sanchogus
Offline
Зарегистрирован: 02.01.2015

vadim-21 пишет:

Здравствуйте отсувовал некоторое время был в отпуске извените, потребность  в данной программе осталась, текст программы  можно выложить здесь или  теме о кнопках, желательно закоментирова каждую строчку чтоб сам понимать начал. ( частота нажатии примерно раз в две секунды) моя почта ""vys55@qip.ru"

Ну как-то так

01#define BUT_PIN 5       //пин кнопки
02#define OUT1_PIN 6      //пин выхода 1
03#define OUT2_PIN 7      //пин выхода 2
04#define TIMER_T 2000        //время в течении которого не реагирует на повторное нажатие/удержание кнопки, ms   1000 мс = 1 сек
05 
06void setup()
07{
08pinMode(BUT_PIN, INPUT);
09pinMode(OUT1_PIN, OUTPUT);
10pinMode(OUT2_PIN, OUTPUT);
11}
12 
13unsigned int count = 0; //счетчик нажатий
14unsigned long time = 0; //таймер для отсчета одиной минуты  (может быть неадекватное поведение при переполнении таймера)
15unsigned long time_dop = 0; //доп таймер от переполнения, не факт что поможет. Просто есть проблема переполнения millis() через 50 дней
16//кстати для оффтопа - может есть код на asm чтобы принудительно таймер ардуины сбросить? он же как регистр идет?
17 
18void loop()
19{
20if (digitalRead(BUT_PIN))  //если нажали кнопку, то входим в цикл, длящийся минуту
21  {
22    count = count + 1;
23     
24    ////////////////////////////////////////////////
25    //чуть ниже попытка защиты от случая переполнения таймера, ибо millis()
26    //ибо оно использует Unsigned long для хранения положительных целых чисел в диапазоне от 0 до 4,294,967,295
27    //при приближении к этому значению получим до несколько увеличенную длительностьцикла, но не равную 50 дням)
28    time_dop = millis();
29    if (time_dop >= 4294900000) time_dop = 0;
30    ////////////////////////////////////////////////
31     
32    time = time_dop+60000; //фиксируем время относительно которого будем считать минуту во время нажатия + 60 секунд
33 
34    delay(TIMER_T); //время после нажатия, в течении которого нет реакции на кнопку
35     
36    while (millis() <= time) //пока текущее время меньше рассчетного крутимся в цикле
37    {
38      if (count <= 5) //если счетчик до 5
39        {
40          digitalWrite(OUT1_PIN,HIGH);   //вкл первый
41          digitalWrite(OUT2_PIN,LOW);    //выкл второй
42        }
43         
44      if (count >5 && count <= 10)  //если счетчик от 6 до 10
45        {
46          digitalWrite(OUT1_PIN,LOW);    //выкл первый
47          digitalWrite(OUT2_PIN,HIGH);   //вкл второй
48        }
49         
50      if (count > 10)
51        {
52          break; //выходим из цикла принудительно, т.к. счетчик был переполнен
53        }
54      if (digitalRead(BUT_PIN)) //если идут дальнейшие нажатия кнопки
55        {
56          count = count + 1;  //если нажата кнопка, то увеличить счетчик
57          delay(TIMER_T); //подождать перед следующей проверкой кнопки на нажатие
58        }
59    }
60  }
61//ниже пойдут действия, если цикл завершился из-за прохождения одной минуты, либо от принудительного прерывания цикла
62count = 0; //обнуляем счетчик
63digitalWrite(OUT1_PIN,LOW); //обнуляем выходы
64digitalWrite(OUT2_PIN,LOW); //обнуляем выходы 
65//и всё по новой
66}

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

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

режим каналов - триггерный , можно и забыть что включено что нет..... 

в строках #120.....139 - измените действия как вам удобнее , и переключатель можно убрать... сделать через ИФы - nGudok больше 1 меньше 5 - 1 канал , больше 5 меньше 10 - 2 канал....

если чё - спрашивайте :)

( если есть ошибки - просто подскажите :)      )

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

реле - плохо.... дребезг контактов.... сами защитите пин 2 , а то на 1 вызывной импульс получите 5.....20 прерываний :(

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

или провода от вибры соедините с ардуиной - земля->земля , +>пин2

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

этот код - какзадача поставлена в начале....

добавляйте ИФы, меняйте в них колво импульсов, действия - настраивайте :)

..... и с учётом собачки :)

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

ой, режим и начальное состояние пина 10 - не добавил.... строки ##12A , 12B добавьте как в ##11 , 12 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

исправил и добавил строку         nGudok = nGudok / 2 ;       ниже анализ по импульсам , а не по фронтам 

 

vadim-21
Offline
Зарегистрирован: 26.12.2014

Ох как резко сдвинулось дело, буду пробовать код спасибо за оказываемую мне помощь, я в этом еше новичок и только начинаю осваивать ардуино. По поводу случайных звонков в телефоне есть возможность выставлять вибро только на определенные группы контактов а так как во всей телефонной книге всеголишь один контакт да еше и в нужной группе то вероятность случайного звонка исключена, от дребезга контактов хорошо помогает конденсатор, кстати в машине стоит нечто подобное удаленная блокировка двигателя только с одного номера - моего уже 3 года отлично работает))))) и еше в знак благодарности могу пополнить счет сотового телефона отзвавшимся людям.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

спасибо, мне хватает :)