IvanSerov

IvanSerov

На Пикабу
464 рейтинг 11 подписчиков 1 подписка 5 постов 1 в горячем
Награды:
10 лет на Пикабу
297

Звуковая сигнализация от датчика воды

Металлопласт - зло.

(Любителям "проще купить" не посвещается)

Потому что, если его пробивает, то утечки даже не слышно, а из образовавшейся трещинки вода брызжет как пулеверизатор. Решил смастерить примитивную звуковую сигнализацию на Arduino. Работает следующим образом: при попадании капли воды на датчик зумер начинает пищать двухтоновым сигналом частотой 1000 и 800 Hz.

Сам датчик. Гуглится как mh-rd arduino. У него существуют два выхода: аналоговый - для измерения уровня воды и цифровой - получаем просто сигнал высокого уровня, либо низкого, то есть всего два состояния. Потенциометром можно регулировать чувствительность.

Плата, если кому надо в формате SprintLayout

Ссылка на проект https://cloud.mail.ru/public/96E3/XLmmp7XRD , в котором содержатся плата (.lay) и код (.ino)

Основная задача моих самоделок - это саморазвитие. Если Вы считаете, что такое проще купить или зачем изобретать велосипед, то статья безусловно не для Вас. Прошу не писать такого в комментариях. Статьи на данную тематику предназначены исключительно для электронщиков. Таких как я.

Показать полностью 2
6

Очередной терморегулятор для летнего душа на дачу

Летний душ выглядит следующим образом: есть некое помещение, а над ним находится металлический бак с ТЭНом (не спрашивайте меня почему в летнем душе находится ТЭН. Сам не знаю). Соответственно температуру всего этого чуда дачного хозяйства и будем регулировать. Датчик надо установить таким образом, чтобы теплая вода циркулируясь в баке доходила до него в последнюю очередь. В моем случае планировалось где-то в 10-ти см под подогревателем и сразу над трубой подачи воды вниз в душ. ТЭН мощностью около 2-х кВт, а реле выдерживают как раз 10А, что и составляет 2,2 кВт. Может возникнуть вопрос почему два реле? Чтобы отсекать сразу и фазу и ноль.

Хотел довести всё до конца, но волей случая пришлось на какое-то время всё оставить. Думаю на следующий год всё реализую на 100%

На данный момент выкладываю для вас, уважаемые друзья только скетч.

Он полностью рабочий.

Для изготовления вам потребуется (если конечно надумаете):

Arduino Pro Mini 328 16MHz, 5V.

OLED 0,96"

Вот такие контакты для подключения кнопок, датчика и светодиода сигнализирующего о текущем подогреве

Модуль Реле на 5 Вольт двойное

...чуть не забыл. Датчик DS18B20 в герметичном исполнении

Это печатка для всего этого добра в формате LayOut6

Здесь можете скачать всё необходимое https://cloud.mail.ru/public/AeGZ/BJ9MM1E3e

ну а это ваш любимый пастебин http://pastebin.ru/T40ngV8j


В коде всё подробно описано в комментариях к каждой строке.

Если вас это заинтересовало, то Большое Спасибо за внимание!

Показать полностью 6
35

Таймер на Arduino и управление с пульта на 433 MHz

Один мой приятель играет в хоккей и когда узнал, что я увлекаюсь программированием МК, попросил сделать ему и его команде таймер на шесть минут.

Задачи поставил следующие:

1. Управление дистанционно (чтобы не подъезжать к табло)

2. Звуковая индикация

3. Световая индикация

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

Подобрал следующие компоненты

Ардуино Мини -1шт.

Порядка ста светодиодов красного свечения

Радиоканальные модули на 433 Мгц (приемник и передатчик)

Реле на 12 Вольт

Звуковая сирена "Иволга"

Поскольку я всего лишь любитель в области программирования, то особо прошу не пинать)))

Представляю вам, дорогие пикабушники-радиолюбители, код этого изобретения.

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

Собственно сам код:


#include <SevenSegmentDisplay.h> //Библоитека для работы с самыми обычными индикаторами

SevenSegmentDisplay<false, QuadriDigit<9,13,12,11> > ss(2,3,4,5,6,7,8,1); // значение false или true определяет полярность дисплея: общий катод или общий анод


/////////Переменные времени


unsigned m = 6; //минуты: то,что друг просил


unsigned s = 0; //секунды


unsigned t = 0; //общее значение времени


unsigned long preMillis1 = 0;


unsigned long preMillis2 = 0;


unsigned long preMillis3 = 0;


/////////Кнопки. Переменные



int dp = HIGH; //Выход точки в состояние HIGH


int out_relay = LOW; //Выход реле в состояние LOW


unsigned long c = 0;


void setup()


{

// сюда подключаются каналы приемника

pinMode(A0, INPUT); //Старт/Стоп


pinMode(A1, INPUT); //+


pinMode(A2, INPUT); //-


pinMode(A4, OUTPUT); //Выход на реле


pinMode(10, OUTPUT); //Выход на точку


}


void loop()


{/////////работа кнопок/////////////////////////////


if (digitalRead(A0)==HIGH) //Если кнопка нажата и удерживается, то


{


dp_blink(); //мигает точка и


if (millis() - preMillis1 > 1000)


{


preMillis1 = millis();


{


countdown(); //ведется отсчет


}


}



}


else


if (digitalRead(A0)==LOW) //Если кнопка отжата, то


{


digitalWrite (10,HIGH); //точка постоянно горит


}


/////////Прибавление/убавление минут///////////////


if (millis() - preMillis2 > 500) //Задержка полсекунды


{


preMillis2 = millis();


{


if(digitalRead(A1)==HIGH)


{


m++; //на прибавление


c=0; //сброс реле


}


if(digitalRead(A2)==HIGH)


{


m--; //или убавление


if (m == 0) //Если минуты равны 0, то


{


m=0; //присвоить минутам 0


c=0; //сброс реле


}


}


}


}


/////////вывод на индикатор//////////////////////


t = m*100+s;


if (t == 0)


{


relay(); //вызов функции реле


flash(); //вызов функции мигания индиктора


}


ss.print(t);


}


////////Управление реле///////////////////////


void relay()


{


c++;


if (c == 1) //Время работы реле


{


digitalWrite (A4, HIGH);


}


else


digitalWrite (A4, LOW);


}


/////////мигание индикатора: мигает 0:00


void flash()


{


digitalWrite(9, LOW);


digitalWrite(13,LOW);


digitalWrite(12,LOW);


digitalWrite(11,LOW);


digitalWrite(10,HIGH);


delay(250);


digitalWrite(9, HIGH);


digitalWrite(13,HIGH);


digitalWrite(12,HIGH);


digitalWrite(11,HIGH);


digitalWrite(10,HIGH);


delay(250);


}


/////////Отсчет/////////////////


void countdown()


{


if (s>0)


{


s--;


}


else if (s==0 && m>0)


{


s=59;


m--;


}


else if(s==0 && m==0)


{


t=0;


}


}


////////Мигание точки/////////////////////


void dp_blink()


{


if (millis() - preMillis3 > 500)


{


preMillis3 = millis();


if (dp == HIGH)


dp = LOW;


else


dp = HIGH;


digitalWrite(10, dp);


}


}

По ссылке найдете весь проект с библоитекой , а также файлы для Proteus v 7.7

https://cloud.mail.ru/public/L1wB/aYzdKNqxe

Показать полностью 2
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества