Сигнализатор поклевки для рыбалки

AndryGladky
Offline
Зарегистрирован: 09.10.2014

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

AndryGladky
Offline
Зарегистрирован: 09.10.2014
int button1 = 2;
int led1 = 8;
int Buzz1 = 11;
int button2 = 3;
int led2 = 9;
int Buzz2 = 12;
int button3 = 4;
int led3 = 10;
int Buzz3 = 13;
void setup() {
pinMode(led1, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(Buzz1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(button2, INPUT_PULLUP);
pinMode(Buzz2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(button3, INPUT_PULLUP);
pinMode(Buzz3, OUTPUT);
}

void loop(){
if (digitalRead(button1) == LOW) {
digitalWrite(led1, LOW);
digitalWrite(Buzz1, HIGH);
delay (300);
digitalWrite(led1, HIGH);
digitalWrite(Buzz1, LOW);
delay (300);
digitalWrite(led1, LOW);
digitalWrite(Buzz1, HIGH);
delay (300);
digitalWrite(led1, HIGH);
digitalWrite(Buzz1, LOW);
delay (300);
digitalWrite(led1, LOW);
digitalWrite(Buzz1, HIGH);
delay (300);
digitalWrite(led1, HIGH);
digitalWrite(Buzz1, LOW);
}
if (digitalRead(button2) == LOW) {
digitalWrite(led2, LOW);
digitalWrite(Buzz2, HIGH);
delay (2000);
digitalWrite(led2, HIGH);
digitalWrite(Buzz2, LOW);
}
if (digitalRead(button3) == LOW) {
digitalWrite(led3, LOW);
digitalWrite(Buzz3, HIGH);
delay (2000);
digitalWrite(led3, HIGH);
digitalWrite(Buzz3, LOW);
}
}

 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

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

 Да вам анекдоты писать надо типа :Дорогой, я на 5 минут пошла к соседке, а ты каждые пол часа помешивай кашу!/ Вы хоть раз на рыбалке были? Да за то время пока светодиод 3 раза моргнет, пищалка 5 секунд и 10 секунд пропищит наживка тю-тю. Или у вас рыба на пустой крючек кидается.

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

Нужно неприменно делать регулировку по звуку ибо будет пищать на весь водоем особенно ночью.

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

AndryGladky
Offline
Зарегистрирован: 09.10.2014

Согласен, что регулировку по тональности надо но пока есть только активные buzzer. А на счет времени срабатывания для дальнего заброса с самоподсекающимися крючками и в ночное время самое то, ето же не поплавочная удочка. Какая разница что сидеть рядом ночью и смотреть на поплавок с светлячком, или просто смотреть когда загорится светодиод и прозвучит сигнал.

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

Магнит, геркон, ... Вы акул ловите? Может лучше взять хороший чувствительный датчик вибрации? Хоть тот же SW420? Благо стоит шесть рублей за штуку (или из дохлой автосигнализации вытаскивается)

AndryGladky
Offline
Зарегистрирован: 09.10.2014

AndryGladky
Offline
Зарегистрирован: 09.10.2014

AndryGladky
Offline
Зарегистрирован: 09.10.2014

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

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

For, If, бабушка Миллис. Но с делаями в данном случае будет намного проще.

AndryGladky
Offline
Зарегистрирован: 09.10.2014

Согласен но так, три канала не работают одновременно. С подсчетам времени пробовал но что то не работало. Может что то не так написал. Я думал может есть какое то решение.

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

Тогда ифы и миллис.

AndryGladky
Offline
Зарегистрирован: 09.10.2014

А можно пример как использовать?

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

AndryGladky пишет:

А можно пример как использовать?

Щас, Клапауций придёт и всё будет.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

Сначала считать все три датчика, один за другим, без задержек. Затем отображать/звучать всеми тремя одновременно. Если не совсем понятно, как "отображать", то рекомендую нарисовать диаграмму всех трех светиков/буззеров. Рассчитать минимальные шаг для всех трех. Например, в первом светике смена один раз в 300, в остальных 2000. Если 2000 не приниципально, то лучше взять кратное значение 1800, например. Далее всё просто, на диаграмме начертить вертикальные метки через каждые 300 по всем графикам. После этого 5 раз выполнить задержку на 300 и включать/выключать только те светики, где вертикальные метки совпадают с изменением состояния светика.

И всё-таки она вертится!

UPD: Я неправильно понял условие задачи. Три датчика, три варианта. Короче всё, что я тут выше написал - лажа! Точнее не к данной задаче. Извиняйте, завтра иду в отпуск.

 

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

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

AndryGladky пишет:

А можно пример как использовать?

Щас, Клапауций придёт и всё будет.

не - прибежит Логик и опровергнет бытие.

Lui22
Offline
Зарегистрирован: 07.03.2016

Зайди на канал "Заметки Ардуинщика" на youtube, может поймешь чего..